All RRC ASN changes 96/3896/1
authorBalaji Shankaran <balaji.shankaran@radisys.com>
Thu, 28 May 2020 16:08:11 +0000 (21:38 +0530)
committerBalaji Shankaran <balaji.shankaran@radisys.com>
Thu, 28 May 2020 16:08:19 +0000 (21:38 +0530)
Change-Id: Ie55228480752851ac61a8509f06c392fd8d2d90e
Signed-off-by: Balaji Shankaran <balaji.shankaran@radisys.com>
1506 files changed:
build/common/asn_rrc.mak [new file with mode: 0755]
build/common/asn_sysinfo.mak [deleted file]
build/common/du_app.mak
build/odu/makefile
src/codec_utils/RRC/AMF-Identifier.c [new file with mode: 0644]
src/codec_utils/RRC/AMF-Identifier.h [new file with mode: 0644]
src/codec_utils/RRC/ARFCN-ValueEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/ARFCN-ValueEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/ARFCN-ValueNR.c [new file with mode: 0644]
src/codec_utils/RRC/ARFCN-ValueNR.h [new file with mode: 0644]
src/codec_utils/RRC/AS-Config.c [new file with mode: 0644]
src/codec_utils/RRC/AS-Config.h [new file with mode: 0644]
src/codec_utils/RRC/AS-Context.c [new file with mode: 0644]
src/codec_utils/RRC/AS-Context.h [new file with mode: 0644]
src/codec_utils/RRC/AccessStratumRelease.c [new file with mode: 0644]
src/codec_utils/RRC/AccessStratumRelease.h [new file with mode: 0644]
src/codec_utils/RRC/AdditionalSpectrumEmission.c [new file with mode: 0644]
src/codec_utils/RRC/AdditionalSpectrumEmission.h [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.c [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.h [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombNR.c [new file with mode: 0644]
src/codec_utils/RRC/AffectedCarrierFreqCombNR.h [new file with mode: 0644]
src/codec_utils/RRC/AggregatedBandwidth.c [new file with mode: 0644]
src/codec_utils/RRC/AggregatedBandwidth.h [new file with mode: 0644]
src/codec_utils/RRC/Alpha.c [new file with mode: 0644]
src/codec_utils/RRC/Alpha.h [new file with mode: 0644]
src/codec_utils/RRC/BCCH-BCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/BCCH-BCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/BCCH-BCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/BCCH-BCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/BCCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/BCCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/BCCH-DL-SCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/BCCH-DL-SCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/BCCH-DL-SCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/BCCH-DL-SCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/BFR-CSIRS-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/BFR-CSIRS-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/BFR-SSB-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/BFR-SSB-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/BSR-Config.c [new file with mode: 0644]
src/codec_utils/RRC/BSR-Config.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-Downlink.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-Downlink.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-DownlinkCommon.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-DownlinkCommon.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-DownlinkDedicated.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-DownlinkDedicated.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-Id.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-Id.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-Uplink.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-Uplink.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-UplinkCommon.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-UplinkCommon.h [new file with mode: 0644]
src/codec_utils/RRC/BWP-UplinkDedicated.c [new file with mode: 0644]
src/codec_utils/RRC/BWP-UplinkDedicated.h [new file with mode: 0644]
src/codec_utils/RRC/BWP.c [new file with mode: 0644]
src/codec_utils/RRC/BWP.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombination.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombination.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationIndex.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationIndex.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfo.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfo.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfoList.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfoList.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfoSN.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationInfoSN.h [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationList.c [new file with mode: 0644]
src/codec_utils/RRC/BandCombinationList.h [new file with mode: 0644]
src/codec_utils/RRC/BandNR.c [new file with mode: 0644]
src/codec_utils/RRC/BandNR.h [new file with mode: 0644]
src/codec_utils/RRC/BandParameters.c [new file with mode: 0644]
src/codec_utils/RRC/BandParameters.h [new file with mode: 0644]
src/codec_utils/RRC/BeamFailureRecoveryConfig.c [new file with mode: 0644]
src/codec_utils/RRC/BeamFailureRecoveryConfig.h [new file with mode: 0644]
src/codec_utils/RRC/BeamManagementSSB-CSI-RS.c [new file with mode: 0644]
src/codec_utils/RRC/BeamManagementSSB-CSI-RS.h [new file with mode: 0644]
src/codec_utils/RRC/BetaOffsets.c [new file with mode: 0644]
src/codec_utils/RRC/BetaOffsets.h [new file with mode: 0644]
src/codec_utils/RRC/CA-BandwidthClassEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/CA-BandwidthClassEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/CA-BandwidthClassNR.c [new file with mode: 0644]
src/codec_utils/RRC/CA-BandwidthClassNR.h [new file with mode: 0644]
src/codec_utils/RRC/CA-ParametersEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/CA-ParametersEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/CA-ParametersNR.c [new file with mode: 0644]
src/codec_utils/RRC/CA-ParametersNR.h [new file with mode: 0644]
src/codec_utils/RRC/CFRA-CSIRS-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/CFRA-CSIRS-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/CFRA-SSB-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/CFRA-SSB-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/CFRA.c [new file with mode: 0644]
src/codec_utils/RRC/CFRA.h [new file with mode: 0644]
src/codec_utils/RRC/CG-Config-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/CG-Config-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/CG-Config.c [new file with mode: 0644]
src/codec_utils/RRC/CG-Config.h [new file with mode: 0644]
src/codec_utils/RRC/CG-ConfigInfo-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/CG-ConfigInfo-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/CG-ConfigInfo.c [new file with mode: 0644]
src/codec_utils/RRC/CG-ConfigInfo.h [new file with mode: 0644]
src/codec_utils/RRC/CG-UCI-OnPUSCH.c [new file with mode: 0644]
src/codec_utils/RRC/CG-UCI-OnPUSCH.h [new file with mode: 0644]
src/codec_utils/RRC/CGI-Info.c [new file with mode: 0644]
src/codec_utils/RRC/CGI-Info.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-AperiodicTriggerState.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-AperiodicTriggerState.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-AperiodicTriggerStateList.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-AperiodicTriggerStateList.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-FrequencyOccupation.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-FrequencyOccupation.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-IM-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-MeasConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-MeasConfig.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-CellMobility.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-CellMobility.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ForTracking.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ForTracking.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-Index.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-Index.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-Resource-Mobility.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-Resource-Mobility.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ResourceMapping.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-RS-ResourceMapping.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportConfig.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportConfigId.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportConfigId.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportFramework.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportFramework.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourceConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourceConfig.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourceConfigId.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourceConfigId.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-SSB-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-SSB-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-SSB-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-SSB-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.h [new file with mode: 0644]
src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.c [new file with mode: 0644]
src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.h [new file with mode: 0644]
src/codec_utils/RRC/CandidateServingFreqListNR.c [new file with mode: 0644]
src/codec_utils/RRC/CandidateServingFreqListNR.h [new file with mode: 0644]
src/codec_utils/RRC/CarrierFreqEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/CarrierFreqEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/CarrierFreqListEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/CarrierFreqListEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/CarrierInfoNR.c [new file with mode: 0644]
src/codec_utils/RRC/CarrierInfoNR.h [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.c [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.h [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.c [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.h [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo.c [new file with mode: 0644]
src/codec_utils/RRC/CellAccessRelatedInfo.h [new file with mode: 0644]
src/codec_utils/RRC/CellGroupConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CellGroupConfig.h [new file with mode: 0644]
src/codec_utils/RRC/CellGroupId.c [new file with mode: 0644]
src/codec_utils/RRC/CellGroupId.h [new file with mode: 0644]
src/codec_utils/RRC/CellIdentity-EUTRA-5GC.c [new file with mode: 0644]
src/codec_utils/RRC/CellIdentity-EUTRA-5GC.h [new file with mode: 0644]
src/codec_utils/RRC/CellIdentity.c [new file with mode: 0644]
src/codec_utils/RRC/CellIdentity.h [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionPriorities.c [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionPriorities.h [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionPriority.c [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionPriority.h [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionSubPriority.c [new file with mode: 0644]
src/codec_utils/RRC/CellReselectionSubPriority.h [new file with mode: 0644]
src/codec_utils/RRC/CellsToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/CellsToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/CellsToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/CellsToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/CellsTriggeredList.c [new file with mode: 0644]
src/codec_utils/RRC/CellsTriggeredList.h [new file with mode: 0644]
src/codec_utils/RRC/CipheringAlgorithm.c [new file with mode: 0644]
src/codec_utils/RRC/CipheringAlgorithm.h [new file with mode: 0644]
src/codec_utils/RRC/CodebookConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CodebookConfig.h [new file with mode: 0644]
src/codec_utils/RRC/ConfigRestrictInfoSCG.c [new file with mode: 0644]
src/codec_utils/RRC/ConfigRestrictInfoSCG.h [new file with mode: 0644]
src/codec_utils/RRC/ConfigRestrictModReqSCG.c [new file with mode: 0644]
src/codec_utils/RRC/ConfigRestrictModReqSCG.h [new file with mode: 0644]
src/codec_utils/RRC/ConfiguredGrantConfig.c [new file with mode: 0644]
src/codec_utils/RRC/ConfiguredGrantConfig.h [new file with mode: 0644]
src/codec_utils/RRC/ConnEstFailureControl.c [new file with mode: 0644]
src/codec_utils/RRC/ConnEstFailureControl.h [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSetZero.c [new file with mode: 0644]
src/codec_utils/RRC/ControlResourceSetZero.h [new file with mode: 0644]
src/codec_utils/RRC/CounterCheck-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/CounterCheck-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/CounterCheck.c [new file with mode: 0644]
src/codec_utils/RRC/CounterCheck.h [new file with mode: 0644]
src/codec_utils/RRC/CounterCheckResponse-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/CounterCheckResponse-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/CounterCheckResponse.c [new file with mode: 0644]
src/codec_utils/RRC/CounterCheckResponse.h [new file with mode: 0644]
src/codec_utils/RRC/CrossCarrierSchedulingConfig.c [new file with mode: 0644]
src/codec_utils/RRC/CrossCarrierSchedulingConfig.h [new file with mode: 0644]
src/codec_utils/RRC/DL-AM-RLC.c [new file with mode: 0644]
src/codec_utils/RRC/DL-AM-RLC.h [new file with mode: 0644]
src/codec_utils/RRC/DL-CCCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/DL-CCCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/DL-CCCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/DL-CCCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/DL-DCCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/DL-DCCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/DL-DCCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/DL-DCCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/DL-UM-RLC.c [new file with mode: 0644]
src/codec_utils/RRC/DL-UM-RLC.h [new file with mode: 0644]
src/codec_utils/RRC/DLInformationTransfer-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/DLInformationTransfer-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/DLInformationTransfer.c [new file with mode: 0644]
src/codec_utils/RRC/DLInformationTransfer.h [new file with mode: 0644]
src/codec_utils/RRC/DMRS-DownlinkConfig.c [new file with mode: 0644]
src/codec_utils/RRC/DMRS-DownlinkConfig.h [new file with mode: 0644]
src/codec_utils/RRC/DMRS-UplinkConfig.c [new file with mode: 0644]
src/codec_utils/RRC/DMRS-UplinkConfig.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountInfo.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountInfo.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountInfoList.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountInfoList.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountMSB-Info.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountMSB-Info.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountMSB-InfoList.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-CountMSB-InfoList.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-Identity.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-Identity.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToReleaseList.c [new file with mode: 0644]
src/codec_utils/RRC/DRB-ToReleaseList.h [new file with mode: 0644]
src/codec_utils/RRC/DRX-Config.c [new file with mode: 0644]
src/codec_utils/RRC/DRX-Config.h [new file with mode: 0644]
src/codec_utils/RRC/DRX-Info.c [new file with mode: 0644]
src/codec_utils/RRC/DRX-Info.h [new file with mode: 0644]
src/codec_utils/RRC/DataInactivityTimer.c [new file with mode: 0644]
src/codec_utils/RRC/DataInactivityTimer.h [new file with mode: 0644]
src/codec_utils/RRC/DedicatedNAS-Message.c [new file with mode: 0644]
src/codec_utils/RRC/DedicatedNAS-Message.h [new file with mode: 0644]
src/codec_utils/RRC/DelayBudgetReport.c [new file with mode: 0644]
src/codec_utils/RRC/DelayBudgetReport.h [new file with mode: 0644]
src/codec_utils/RRC/DownlinkConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/DownlinkConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/DownlinkConfigCommonSIB.c [new file with mode: 0644]
src/codec_utils/RRC/DownlinkConfigCommonSIB.h [new file with mode: 0644]
src/codec_utils/RRC/DownlinkPreemption.c [new file with mode: 0644]
src/codec_utils/RRC/DownlinkPreemption.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-BlackCell.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-BlackCell.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Cell.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Cell.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-CellIndex.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-CellIndex.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-CellIndexList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-CellIndexList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqBlackCellList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqBlackCellList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqNeighCellList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-FreqNeighCellList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MultiBandInfo.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MultiBandInfo.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MultiBandInfoList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-MultiBandInfoList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-NS-PmaxList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-NS-PmaxList.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-NS-PmaxValue.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-NS-PmaxValue.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-ParametersCommon.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-ParametersCommon.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PhysCellId.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PhysCellId.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PhysCellIdRange.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PhysCellIdRange.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Q-OffsetRange.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-Q-OffsetRange.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-RSTD-Info.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-RSTD-Info.h [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-RSTD-InfoList.c [new file with mode: 0644]
src/codec_utils/RRC/EUTRA-RSTD-InfoList.h [new file with mode: 0644]
src/codec_utils/RRC/EstablishmentCause.c [new file with mode: 0644]
src/codec_utils/RRC/EstablishmentCause.h [new file with mode: 0644]
src/codec_utils/RRC/EventTriggerConfig.c [new file with mode: 0644]
src/codec_utils/RRC/EventTriggerConfig.h [new file with mode: 0644]
src/codec_utils/RRC/EventTriggerConfigInterRAT.c [new file with mode: 0644]
src/codec_utils/RRC/EventTriggerConfigInterRAT.h [new file with mode: 0644]
src/codec_utils/RRC/FR-Info.c [new file with mode: 0644]
src/codec_utils/RRC/FR-Info.h [new file with mode: 0644]
src/codec_utils/RRC/FR-InfoList.c [new file with mode: 0644]
src/codec_utils/RRC/FR-InfoList.h [new file with mode: 0644]
src/codec_utils/RRC/FailureInfoRLC-Bearer.c [new file with mode: 0644]
src/codec_utils/RRC/FailureInfoRLC-Bearer.h [new file with mode: 0644]
src/codec_utils/RRC/FailureInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/FailureInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/FailureInformation.c [new file with mode: 0644]
src/codec_utils/RRC/FailureInformation.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSet.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSet.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetCombination.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetCombination.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetCombinationId.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetCombinationId.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlink.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlink.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkId.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkId.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkPerCC.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetDownlinkPerCC.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEntryIndex.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetEntryIndex.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplink.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplink.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkId.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkId.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkPerCC.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetUplinkPerCC.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSets.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSets.h [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetsPerBand.c [new file with mode: 0644]
src/codec_utils/RRC/FeatureSetsPerBand.h [new file with mode: 0644]
src/codec_utils/RRC/FilterCoefficient.c [new file with mode: 0644]
src/codec_utils/RRC/FilterCoefficient.h [new file with mode: 0644]
src/codec_utils/RRC/FilterConfig.c [new file with mode: 0644]
src/codec_utils/RRC/FilterConfig.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandIndicatorEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandIndicatorEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandIndicatorNR.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandIndicatorNR.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformation.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformation.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformationEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformationEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformationNR.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandInformationNR.h [new file with mode: 0644]
src/codec_utils/RRC/FreqBandList.c [new file with mode: 0644]
src/codec_utils/RRC/FreqBandList.h [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityListEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityListEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityListNR.c [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityListNR.h [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityNR.c [new file with mode: 0644]
src/codec_utils/RRC/FreqPriorityNR.h [new file with mode: 0644]
src/codec_utils/RRC/FreqSeparationClass.c [new file with mode: 0644]
src/codec_utils/RRC/FreqSeparationClass.h [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoDL-SIB.c [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoDL-SIB.h [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoDL.c [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoDL.h [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoUL-SIB.c [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoUL-SIB.h [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoUL.c [new file with mode: 0644]
src/codec_utils/RRC/FrequencyInfoUL.h [new file with mode: 0644]
src/codec_utils/RRC/GapConfig.c [new file with mode: 0644]
src/codec_utils/RRC/GapConfig.h [new file with mode: 0644]
src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/HandoverCommand-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/HandoverCommand-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/HandoverCommand.c [new file with mode: 0644]
src/codec_utils/RRC/HandoverCommand.h [new file with mode: 0644]
src/codec_utils/RRC/HandoverPreparationInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/HandoverPreparationInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/HandoverPreparationInformation.c [new file with mode: 0644]
src/codec_utils/RRC/HandoverPreparationInformation.h [new file with mode: 0644]
src/codec_utils/RRC/Hysteresis.c [new file with mode: 0644]
src/codec_utils/RRC/Hysteresis.h [new file with mode: 0644]
src/codec_utils/RRC/I-RNTI-Value.c [new file with mode: 0644]
src/codec_utils/RRC/I-RNTI-Value.h [new file with mode: 0644]
src/codec_utils/RRC/INT-ConfigurationPerServingCell.c [new file with mode: 0644]
src/codec_utils/RRC/INT-ConfigurationPerServingCell.h [new file with mode: 0644]
src/codec_utils/RRC/InitialUE-Identity.c [new file with mode: 0644]
src/codec_utils/RRC/InitialUE-Identity.h [new file with mode: 0644]
src/codec_utils/RRC/IntegrityProtAlgorithm.c [new file with mode: 0644]
src/codec_utils/RRC/IntegrityProtAlgorithm.h [new file with mode: 0644]
src/codec_utils/RRC/InterFreqBlackCellList.c [new file with mode: 0644]
src/codec_utils/RRC/InterFreqBlackCellList.h [new file with mode: 0644]
src/codec_utils/RRC/InterFreqCarrierFreqInfo.c [new file with mode: 0644]
src/codec_utils/RRC/InterFreqCarrierFreqInfo.h [new file with mode: 0644]
src/codec_utils/RRC/InterFreqCarrierFreqList.c [new file with mode: 0644]
src/codec_utils/RRC/InterFreqCarrierFreqList.h [new file with mode: 0644]
src/codec_utils/RRC/InterFreqNeighCellInfo.c [new file with mode: 0644]
src/codec_utils/RRC/InterFreqNeighCellInfo.h [new file with mode: 0644]
src/codec_utils/RRC/InterFreqNeighCellList.c [new file with mode: 0644]
src/codec_utils/RRC/InterFreqNeighCellList.h [new file with mode: 0644]
src/codec_utils/RRC/InterRAT-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/InterRAT-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqBlackCellList.c [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqBlackCellList.h [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqNeighCellInfo.c [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqNeighCellInfo.h [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqNeighCellList.c [new file with mode: 0644]
src/codec_utils/RRC/IntraFreqNeighCellList.h [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementIndication-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementIndication-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementIndication.c [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementIndication.h [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementInfo.c [new file with mode: 0644]
src/codec_utils/RRC/LocationMeasurementInfo.h [new file with mode: 0644]
src/codec_utils/RRC/LogicalChannelConfig.c [new file with mode: 0644]
src/codec_utils/RRC/LogicalChannelConfig.h [new file with mode: 0644]
src/codec_utils/RRC/LogicalChannelIdentity.c [new file with mode: 0644]
src/codec_utils/RRC/LogicalChannelIdentity.h [new file with mode: 0644]
src/codec_utils/RRC/MAC-CellGroupConfig.c [new file with mode: 0644]
src/codec_utils/RRC/MAC-CellGroupConfig.h [new file with mode: 0644]
src/codec_utils/RRC/MAC-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/MAC-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/MAC-ParametersCommon.c [new file with mode: 0644]
src/codec_utils/RRC/MAC-ParametersCommon.h [new file with mode: 0644]
src/codec_utils/RRC/MAC-ParametersXDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/MAC-ParametersXDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/MCC-MNC-Digit.c [new file with mode: 0644]
src/codec_utils/RRC/MCC-MNC-Digit.h [new file with mode: 0644]
src/codec_utils/RRC/MCC.c [new file with mode: 0644]
src/codec_utils/RRC/MCC.h [new file with mode: 0644]
src/codec_utils/RRC/MIB.c [new file with mode: 0644]
src/codec_utils/RRC/MIB.h [new file with mode: 0644]
src/codec_utils/RRC/MIMO-LayersDL.c [new file with mode: 0644]
src/codec_utils/RRC/MIMO-LayersDL.h [new file with mode: 0644]
src/codec_utils/RRC/MIMO-LayersUL.c [new file with mode: 0644]
src/codec_utils/RRC/MIMO-LayersUL.h [new file with mode: 0644]
src/codec_utils/RRC/MIMO-ParametersPerBand.c [new file with mode: 0644]
src/codec_utils/RRC/MIMO-ParametersPerBand.h [new file with mode: 0644]
src/codec_utils/RRC/MNC.c [new file with mode: 0644]
src/codec_utils/RRC/MNC.h [new file with mode: 0644]
src/codec_utils/RRC/MRDC-AssistanceInfo.c [new file with mode: 0644]
src/codec_utils/RRC/MRDC-AssistanceInfo.h [new file with mode: 0644]
src/codec_utils/RRC/MRDC-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/MRDC-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/Makefile.am.libasncodec [new file with mode: 0644]
src/codec_utils/RRC/MasterKeyUpdate.c [new file with mode: 0644]
src/codec_utils/RRC/MasterKeyUpdate.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParameters.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParameters.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersCommon.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersCommon.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersMRDC.h [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/MeasConfig.c [new file with mode: 0644]
src/codec_utils/RRC/MeasConfig.h [new file with mode: 0644]
src/codec_utils/RRC/MeasConfigMN.c [new file with mode: 0644]
src/codec_utils/RRC/MeasConfigMN.h [new file with mode: 0644]
src/codec_utils/RRC/MeasConfigSN.c [new file with mode: 0644]
src/codec_utils/RRC/MeasConfigSN.h [new file with mode: 0644]
src/codec_utils/RRC/MeasGapConfig.c [new file with mode: 0644]
src/codec_utils/RRC/MeasGapConfig.h [new file with mode: 0644]
src/codec_utils/RRC/MeasGapSharingConfig.c [new file with mode: 0644]
src/codec_utils/RRC/MeasGapSharingConfig.h [new file with mode: 0644]
src/codec_utils/RRC/MeasGapSharingScheme.c [new file with mode: 0644]
src/codec_utils/RRC/MeasGapSharingScheme.h [new file with mode: 0644]
src/codec_utils/RRC/MeasId.c [new file with mode: 0644]
src/codec_utils/RRC/MeasId.h [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToRemoveList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasIdToRemoveList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectId.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectId.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectNR.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectNR.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToRemoveList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasObjectToRemoveList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasQuantityResults.c [new file with mode: 0644]
src/codec_utils/RRC/MeasQuantityResults.h [new file with mode: 0644]
src/codec_utils/RRC/MeasQuantityResultsEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MeasQuantityResultsEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MeasReportQuantity.c [new file with mode: 0644]
src/codec_utils/RRC/MeasReportQuantity.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResult2NR.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResult2NR.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultCellListSFTD.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultCellListSFTD.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultCellSFTD.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultCellSFTD.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultList2NR.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultList2NR.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultListEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultListEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultListNR.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultListNR.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultNR.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultNR.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultSCG-Failure.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultSCG-Failure.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultServMO.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultServMO.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResultServMOList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResultServMOList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasResults.c [new file with mode: 0644]
src/codec_utils/RRC/MeasResults.h [new file with mode: 0644]
src/codec_utils/RRC/MeasTiming.c [new file with mode: 0644]
src/codec_utils/RRC/MeasTiming.h [new file with mode: 0644]
src/codec_utils/RRC/MeasTimingList.c [new file with mode: 0644]
src/codec_utils/RRC/MeasTimingList.h [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantity.c [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantity.h [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantityEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantityEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantityOffset.c [new file with mode: 0644]
src/codec_utils/RRC/MeasTriggerQuantityOffset.h [new file with mode: 0644]
src/codec_utils/RRC/MeasurementReport-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/MeasurementReport-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/MeasurementReport.c [new file with mode: 0644]
src/codec_utils/RRC/MeasurementReport.h [new file with mode: 0644]
src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/MeasurementTimingConfiguration.c [new file with mode: 0644]
src/codec_utils/RRC/MeasurementTimingConfiguration.h [new file with mode: 0644]
src/codec_utils/RRC/MobilityFromNRCommand-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/MobilityFromNRCommand-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/MobilityFromNRCommand.c [new file with mode: 0644]
src/codec_utils/RRC/MobilityFromNRCommand.h [new file with mode: 0644]
src/codec_utils/RRC/MobilityStateParameters.c [new file with mode: 0644]
src/codec_utils/RRC/MobilityStateParameters.h [new file with mode: 0644]
src/codec_utils/RRC/ModulationOrder.c [new file with mode: 0644]
src/codec_utils/RRC/ModulationOrder.h [new file with mode: 0644]
src/codec_utils/RRC/MultiBandInfoListEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/MultiBandInfoListEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.c [new file with mode: 0644]
src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.h [new file with mode: 0644]
src/codec_utils/RRC/MultiFrequencyBandListNR.c [new file with mode: 0644]
src/codec_utils/RRC/MultiFrequencyBandListNR.h [new file with mode: 0644]
src/codec_utils/RRC/NAICS-Capability-Entry.c [new file with mode: 0644]
src/codec_utils/RRC/NAICS-Capability-Entry.h [new file with mode: 0644]
src/codec_utils/RRC/NG-5G-S-TMSI.c [new file with mode: 0644]
src/codec_utils/RRC/NG-5G-S-TMSI.h [new file with mode: 0644]
src/codec_utils/RRC/NR-FreqInfo.c [new file with mode: 0644]
src/codec_utils/RRC/NR-FreqInfo.h [new file with mode: 0644]
src/codec_utils/RRC/NR-MultiBandInfo.c [new file with mode: 0644]
src/codec_utils/RRC/NR-MultiBandInfo.h [new file with mode: 0644]
src/codec_utils/RRC/NR-NS-PmaxList.c [new file with mode: 0644]
src/codec_utils/RRC/NR-NS-PmaxList.h [new file with mode: 0644]
src/codec_utils/RRC/NR-NS-PmaxValue.c [new file with mode: 0644]
src/codec_utils/RRC/NR-NS-PmaxValue.h [new file with mode: 0644]
src/codec_utils/RRC/NR-RS-Type.c [new file with mode: 0644]
src/codec_utils/RRC/NR-RS-Type.h [new file with mode: 0644]
src/codec_utils/RRC/NULL.c [moved from src/codec_utils/SYSINFO/NULL.c with 100% similarity]
src/codec_utils/RRC/NULL.h [moved from src/codec_utils/SYSINFO/NULL.h with 100% similarity]
src/codec_utils/RRC/NZP-CSI-RS-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/NativeEnumerated.c [moved from src/codec_utils/SYSINFO/NativeEnumerated.c with 100% similarity]
src/codec_utils/RRC/NativeEnumerated.h [moved from src/codec_utils/SYSINFO/NativeEnumerated.h with 100% similarity]
src/codec_utils/RRC/NativeEnumerated_oer.c [moved from src/codec_utils/SYSINFO/NativeEnumerated_oer.c with 100% similarity]
src/codec_utils/RRC/NativeInteger.c [moved from src/codec_utils/SYSINFO/NativeInteger.c with 100% similarity]
src/codec_utils/RRC/NativeInteger.h [moved from src/codec_utils/SYSINFO/NativeInteger.h with 100% similarity]
src/codec_utils/RRC/NativeInteger_oer.c [moved from src/codec_utils/SYSINFO/NativeInteger_oer.c with 100% similarity]
src/codec_utils/RRC/NextHopChainingCount.c [new file with mode: 0644]
src/codec_utils/RRC/NextHopChainingCount.h [new file with mode: 0644]
src/codec_utils/RRC/OtherConfig.c [new file with mode: 0644]
src/codec_utils/RRC/OtherConfig.h [new file with mode: 0644]
src/codec_utils/RRC/OverheatingAssistance.c [new file with mode: 0644]
src/codec_utils/RRC/OverheatingAssistance.h [new file with mode: 0644]
src/codec_utils/RRC/P-Max.c [new file with mode: 0644]
src/codec_utils/RRC/P-Max.h [new file with mode: 0644]
src/codec_utils/RRC/P0-PUCCH-Id.c [new file with mode: 0644]
src/codec_utils/RRC/P0-PUCCH-Id.h [new file with mode: 0644]
src/codec_utils/RRC/P0-PUCCH.c [new file with mode: 0644]
src/codec_utils/RRC/P0-PUCCH.h [new file with mode: 0644]
src/codec_utils/RRC/P0-PUSCH-AlphaSet.c [new file with mode: 0644]
src/codec_utils/RRC/P0-PUSCH-AlphaSet.h [new file with mode: 0644]
src/codec_utils/RRC/P0-PUSCH-AlphaSetId.c [new file with mode: 0644]
src/codec_utils/RRC/P0-PUSCH-AlphaSetId.h [new file with mode: 0644]
src/codec_utils/RRC/PCCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PCCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PCCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/PCCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/PCCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/PCCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/PCI-List.c [new file with mode: 0644]
src/codec_utils/RRC/PCI-List.h [new file with mode: 0644]
src/codec_utils/RRC/PCI-Range.c [new file with mode: 0644]
src/codec_utils/RRC/PCI-Range.h [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeElement.c [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeElement.h [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeIndex.c [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeIndex.h [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeIndexList.c [new file with mode: 0644]
src/codec_utils/RRC/PCI-RangeIndexList.h [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ConfigSIB1.c [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ConfigSIB1.h [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ServingCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PDCCH-ServingCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PDCP-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PDCP-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PDCP-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/PDCP-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/PDCP-ParametersMRDC.c [new file with mode: 0644]
src/codec_utils/RRC/PDCP-ParametersMRDC.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-ServingCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-ServingCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.h [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.c [new file with mode: 0644]
src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.h [new file with mode: 0644]
src/codec_utils/RRC/PDU-SessionID.c [new file with mode: 0644]
src/codec_utils/RRC/PDU-SessionID.h [new file with mode: 0644]
src/codec_utils/RRC/PHR-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PHR-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentitY.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentitY.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityInfo.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityInfo.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityInfoList.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityInfoList.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaCell.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaCell.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaCellList.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaCellList.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaConfigList.c [new file with mode: 0644]
src/codec_utils/RRC/PLMN-RAN-AreaConfigList.h [new file with mode: 0644]
src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.c [new file with mode: 0644]
src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.h [new file with mode: 0644]
src/codec_utils/RRC/PRB-Id.c [new file with mode: 0644]
src/codec_utils/RRC/PRB-Id.h [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DensityRecommendationDL.c [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DensityRecommendationDL.h [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DensityRecommendationUL.c [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DensityRecommendationUL.h [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DownlinkConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PTRS-DownlinkConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PTRS-UplinkConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PTRS-UplinkConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-CSI-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-CSI-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-FormatConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-FormatConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-MaxCodeRate.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-MaxCodeRate.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PathlossReferenceRS.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PathlossReferenceRS.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PowerControl.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-PowerControl.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-SpatialRelationInfo.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-SpatialRelationInfo.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-TPC-CommandConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-TPC-CommandConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format0.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format0.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format1.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format1.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format2.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format2.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format3.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format3.h [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format4.c [new file with mode: 0644]
src/codec_utils/RRC/PUCCH-format4.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PathlossReferenceRS.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PathlossReferenceRS.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PowerControl.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-PowerControl.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-ServingCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-ServingCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TPC-CommandConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TPC-CommandConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.h [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.c [new file with mode: 0644]
src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.h [new file with mode: 0644]
src/codec_utils/RRC/Paging.c [new file with mode: 0644]
src/codec_utils/RRC/Paging.h [new file with mode: 0644]
src/codec_utils/RRC/PagingCycle.c [new file with mode: 0644]
src/codec_utils/RRC/PagingCycle.h [new file with mode: 0644]
src/codec_utils/RRC/PagingRecord.c [new file with mode: 0644]
src/codec_utils/RRC/PagingRecord.h [new file with mode: 0644]
src/codec_utils/RRC/PagingRecordList.c [new file with mode: 0644]
src/codec_utils/RRC/PagingRecordList.h [new file with mode: 0644]
src/codec_utils/RRC/PagingUE-Identity.c [new file with mode: 0644]
src/codec_utils/RRC/PagingUE-Identity.h [new file with mode: 0644]
src/codec_utils/RRC/PeriodicRNAU-TimerValue.c [new file with mode: 0644]
src/codec_utils/RRC/PeriodicRNAU-TimerValue.h [new file with mode: 0644]
src/codec_utils/RRC/PeriodicalReportConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PeriodicalReportConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PeriodicalReportConfigInterRAT.c [new file with mode: 0644]
src/codec_utils/RRC/PeriodicalReportConfigInterRAT.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersCommon.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersCommon.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFR1.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFR1.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFR2.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFR2.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFRX-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersFRX-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersMRDC.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersMRDC.h [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersXDD-Diff.c [new file with mode: 0644]
src/codec_utils/RRC/Phy-ParametersXDD-Diff.h [new file with mode: 0644]
src/codec_utils/RRC/PhysCellId.c [new file with mode: 0644]
src/codec_utils/RRC/PhysCellId.h [new file with mode: 0644]
src/codec_utils/RRC/PhysicalCellGroupConfig.c [new file with mode: 0644]
src/codec_utils/RRC/PhysicalCellGroupConfig.h [new file with mode: 0644]
src/codec_utils/RRC/PollByte.c [new file with mode: 0644]
src/codec_utils/RRC/PollByte.h [new file with mode: 0644]
src/codec_utils/RRC/PollPDU.c [new file with mode: 0644]
src/codec_utils/RRC/PollPDU.h [new file with mode: 0644]
src/codec_utils/RRC/PortIndex2.c [new file with mode: 0644]
src/codec_utils/RRC/PortIndex2.h [new file with mode: 0644]
src/codec_utils/RRC/PortIndex4.c [new file with mode: 0644]
src/codec_utils/RRC/PortIndex4.h [new file with mode: 0644]
src/codec_utils/RRC/PortIndex8.c [new file with mode: 0644]
src/codec_utils/RRC/PortIndex8.h [new file with mode: 0644]
src/codec_utils/RRC/PortIndexFor8Ranks.c [new file with mode: 0644]
src/codec_utils/RRC/PortIndexFor8Ranks.h [new file with mode: 0644]
src/codec_utils/RRC/Q-OffsetRange.c [new file with mode: 0644]
src/codec_utils/RRC/Q-OffsetRange.h [new file with mode: 0644]
src/codec_utils/RRC/Q-OffsetRangeList.c [new file with mode: 0644]
src/codec_utils/RRC/Q-OffsetRangeList.h [new file with mode: 0644]
src/codec_utils/RRC/Q-QualMin.c [new file with mode: 0644]
src/codec_utils/RRC/Q-QualMin.h [new file with mode: 0644]
src/codec_utils/RRC/Q-RxLevMin.c [new file with mode: 0644]
src/codec_utils/RRC/Q-RxLevMin.h [new file with mode: 0644]
src/codec_utils/RRC/QCL-Info.c [new file with mode: 0644]
src/codec_utils/RRC/QCL-Info.h [new file with mode: 0644]
src/codec_utils/RRC/QFI.c [new file with mode: 0644]
src/codec_utils/RRC/QFI.h [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfig.c [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfig.h [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfigNR.c [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfigNR.h [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfigRS.c [new file with mode: 0644]
src/codec_utils/RRC/QuantityConfigRS.h [new file with mode: 0644]
src/codec_utils/RRC/RA-Prioritization.c [new file with mode: 0644]
src/codec_utils/RRC/RA-Prioritization.h [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigDedicated.c [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigDedicated.h [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigGeneric.c [new file with mode: 0644]
src/codec_utils/RRC/RACH-ConfigGeneric.h [new file with mode: 0644]
src/codec_utils/RRC/RAN-AreaCode.c [new file with mode: 0644]
src/codec_utils/RRC/RAN-AreaCode.h [new file with mode: 0644]
src/codec_utils/RRC/RAN-AreaConfig.c [new file with mode: 0644]
src/codec_utils/RRC/RAN-AreaConfig.h [new file with mode: 0644]
src/codec_utils/RRC/RAN-NotificationAreaInfo.c [new file with mode: 0644]
src/codec_utils/RRC/RAN-NotificationAreaInfo.h [new file with mode: 0644]
src/codec_utils/RRC/RAT-Type.c [new file with mode: 0644]
src/codec_utils/RRC/RAT-Type.h [new file with mode: 0644]
src/codec_utils/RRC/RF-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/RF-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/RF-ParametersMRDC.c [new file with mode: 0644]
src/codec_utils/RRC/RF-ParametersMRDC.h [new file with mode: 0644]
src/codec_utils/RRC/RLC-BearerConfig.c [new file with mode: 0644]
src/codec_utils/RRC/RLC-BearerConfig.h [new file with mode: 0644]
src/codec_utils/RRC/RLC-Config.c [new file with mode: 0644]
src/codec_utils/RRC/RLC-Config.h [new file with mode: 0644]
src/codec_utils/RRC/RLC-Parameters.c [new file with mode: 0644]
src/codec_utils/RRC/RLC-Parameters.h [new file with mode: 0644]
src/codec_utils/RRC/RLF-TimersAndConstants.c [new file with mode: 0644]
src/codec_utils/RRC/RLF-TimersAndConstants.h [new file with mode: 0644]
src/codec_utils/RRC/RNTI-Value.c [new file with mode: 0644]
src/codec_utils/RRC/RNTI-Value.h [new file with mode: 0644]
src/codec_utils/RRC/RRC-TransactionIdentifier.c [new file with mode: 0644]
src/codec_utils/RRC/RRC-TransactionIdentifier.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfiguration.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReconfigurationComplete.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishment-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishment-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishment.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishment.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentComplete-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentComplete-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentComplete.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentComplete.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentRequest-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentRequest-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentRequest.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReestablishmentRequest.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReject-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReject-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCReject.c [new file with mode: 0644]
src/codec_utils/RRC/RRCReject.h [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease-v1540-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease-v1540-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease.c [new file with mode: 0644]
src/codec_utils/RRC/RRCRelease.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResume-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResume-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResume.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResume.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeComplete-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeComplete-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeComplete.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeComplete.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest1-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest1-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest1.c [new file with mode: 0644]
src/codec_utils/RRC/RRCResumeRequest1.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetup-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetup-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetup.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetup.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupComplete-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupComplete-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupComplete.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupComplete.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupRequest-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupRequest-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupRequest.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSetupRequest.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/RRCSystemInfoRequest.c [new file with mode: 0644]
src/codec_utils/RRC/RRCSystemInfoRequest.h [new file with mode: 0644]
src/codec_utils/RRC/RRM-Config.c [new file with mode: 0644]
src/codec_utils/RRC/RRM-Config.h [new file with mode: 0644]
src/codec_utils/RRC/RSRP-Range.c [new file with mode: 0644]
src/codec_utils/RRC/RSRP-Range.h [new file with mode: 0644]
src/codec_utils/RRC/RSRP-RangeEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/RSRP-RangeEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/RSRQ-Range.c [new file with mode: 0644]
src/codec_utils/RRC/RSRQ-Range.h [new file with mode: 0644]
src/codec_utils/RRC/RSRQ-RangeEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/RSRQ-RangeEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/RadioBearerConfig.c [new file with mode: 0644]
src/codec_utils/RRC/RadioBearerConfig.h [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringConfig.c [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringConfig.h [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringRS-Id.c [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringRS-Id.h [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringRS.c [new file with mode: 0644]
src/codec_utils/RRC/RadioLinkMonitoringRS.h [new file with mode: 0644]
src/codec_utils/RRC/RangeToBestCell.c [new file with mode: 0644]
src/codec_utils/RRC/RangeToBestCell.h [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPattern.c [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPattern.h [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternGroup.c [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternGroup.h [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternId.c [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternId.h [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternLTE-CRS.c [new file with mode: 0644]
src/codec_utils/RRC/RateMatchPatternLTE-CRS.h [new file with mode: 0644]
src/codec_utils/RRC/ReconfigurationWithSync.c [new file with mode: 0644]
src/codec_utils/RRC/ReconfigurationWithSync.h [new file with mode: 0644]
src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/RedirectedCarrierInfo.c [new file with mode: 0644]
src/codec_utils/RRC/RedirectedCarrierInfo.h [new file with mode: 0644]
src/codec_utils/RRC/ReducedAggregatedBandwidth.c [new file with mode: 0644]
src/codec_utils/RRC/ReducedAggregatedBandwidth.h [new file with mode: 0644]
src/codec_utils/RRC/ReestabNCellInfo.c [new file with mode: 0644]
src/codec_utils/RRC/ReestabNCellInfo.h [new file with mode: 0644]
src/codec_utils/RRC/ReestabNCellInfoList.c [new file with mode: 0644]
src/codec_utils/RRC/ReestabNCellInfoList.h [new file with mode: 0644]
src/codec_utils/RRC/ReestabUE-Identity.c [new file with mode: 0644]
src/codec_utils/RRC/ReestabUE-Identity.h [new file with mode: 0644]
src/codec_utils/RRC/ReestablishmentCause.c [new file with mode: 0644]
src/codec_utils/RRC/ReestablishmentCause.h [new file with mode: 0644]
src/codec_utils/RRC/ReestablishmentInfo.c [new file with mode: 0644]
src/codec_utils/RRC/ReestablishmentInfo.h [new file with mode: 0644]
src/codec_utils/RRC/ReferenceSignalConfig.c [new file with mode: 0644]
src/codec_utils/RRC/ReferenceSignalConfig.h [new file with mode: 0644]
src/codec_utils/RRC/RegisteredAMF.c [new file with mode: 0644]
src/codec_utils/RRC/RegisteredAMF.h [new file with mode: 0644]
src/codec_utils/RRC/RejectWaitTime.c [new file with mode: 0644]
src/codec_utils/RRC/RejectWaitTime.h [new file with mode: 0644]
src/codec_utils/RRC/ReportCGI-EUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/ReportCGI-EUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/ReportCGI.c [new file with mode: 0644]
src/codec_utils/RRC/ReportCGI.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigId.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigId.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigInterRAT.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigInterRAT.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigNR.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigNR.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToRemoveList.c [new file with mode: 0644]
src/codec_utils/RRC/ReportConfigToRemoveList.h [new file with mode: 0644]
src/codec_utils/RRC/ReportInterval.c [new file with mode: 0644]
src/codec_utils/RRC/ReportInterval.h [new file with mode: 0644]
src/codec_utils/RRC/ReselectionThreshold.c [new file with mode: 0644]
src/codec_utils/RRC/ReselectionThreshold.h [new file with mode: 0644]
src/codec_utils/RRC/ReselectionThresholdQ.c [new file with mode: 0644]
src/codec_utils/RRC/ReselectionThresholdQ.h [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerCSI-RS-Index.c [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerCSI-RS-Index.h [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.c [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.h [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerSSB-Index.c [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerSSB-Index.h [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerSSB-IndexList.c [new file with mode: 0644]
src/codec_utils/RRC/ResultsPerSSB-IndexList.h [new file with mode: 0644]
src/codec_utils/RRC/ResumeCause.c [new file with mode: 0644]
src/codec_utils/RRC/ResumeCause.h [new file with mode: 0644]
src/codec_utils/RRC/S-NSSAI.c [new file with mode: 0644]
src/codec_utils/RRC/S-NSSAI.h [new file with mode: 0644]
src/codec_utils/RRC/SCS-SpecificCarrier.c [new file with mode: 0644]
src/codec_utils/RRC/SCS-SpecificCarrier.h [new file with mode: 0644]
src/codec_utils/RRC/SCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SCellIndex.c [new file with mode: 0644]
src/codec_utils/RRC/SCellIndex.h [new file with mode: 0644]
src/codec_utils/RRC/SDAP-Config.c [new file with mode: 0644]
src/codec_utils/RRC/SDAP-Config.h [new file with mode: 0644]
src/codec_utils/RRC/SI-RequestConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SI-RequestConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SI-RequestResources.c [new file with mode: 0644]
src/codec_utils/RRC/SI-RequestResources.h [new file with mode: 0644]
src/codec_utils/RRC/SI-SchedulingInfo.c [new file with mode: 0644]
src/codec_utils/RRC/SI-SchedulingInfo.h [new file with mode: 0644]
src/codec_utils/RRC/SIB-Mapping.c [new file with mode: 0644]
src/codec_utils/RRC/SIB-Mapping.h [new file with mode: 0644]
src/codec_utils/RRC/SIB-TypeInfo.c [new file with mode: 0644]
src/codec_utils/RRC/SIB-TypeInfo.h [new file with mode: 0644]
src/codec_utils/RRC/SIB1.c [new file with mode: 0644]
src/codec_utils/RRC/SIB1.h [new file with mode: 0644]
src/codec_utils/RRC/SIB2.c [new file with mode: 0644]
src/codec_utils/RRC/SIB2.h [new file with mode: 0644]
src/codec_utils/RRC/SIB3.c [new file with mode: 0644]
src/codec_utils/RRC/SIB3.h [new file with mode: 0644]
src/codec_utils/RRC/SIB4.c [new file with mode: 0644]
src/codec_utils/RRC/SIB4.h [new file with mode: 0644]
src/codec_utils/RRC/SIB5.c [new file with mode: 0644]
src/codec_utils/RRC/SIB5.h [new file with mode: 0644]
src/codec_utils/RRC/SIB6.c [new file with mode: 0644]
src/codec_utils/RRC/SIB6.h [new file with mode: 0644]
src/codec_utils/RRC/SIB7.c [new file with mode: 0644]
src/codec_utils/RRC/SIB7.h [new file with mode: 0644]
src/codec_utils/RRC/SIB8.c [new file with mode: 0644]
src/codec_utils/RRC/SIB8.h [new file with mode: 0644]
src/codec_utils/RRC/SIB9.c [new file with mode: 0644]
src/codec_utils/RRC/SIB9.h [new file with mode: 0644]
src/codec_utils/RRC/SINR-Range.c [new file with mode: 0644]
src/codec_utils/RRC/SINR-Range.h [new file with mode: 0644]
src/codec_utils/RRC/SINR-RangeEUTRA.c [new file with mode: 0644]
src/codec_utils/RRC/SINR-RangeEUTRA.h [new file with mode: 0644]
src/codec_utils/RRC/SN-FieldLengthAM.c [new file with mode: 0644]
src/codec_utils/RRC/SN-FieldLengthAM.h [new file with mode: 0644]
src/codec_utils/RRC/SN-FieldLengthUM.c [new file with mode: 0644]
src/codec_utils/RRC/SN-FieldLengthUM.h [new file with mode: 0644]
src/codec_utils/RRC/SPS-Config.c [new file with mode: 0644]
src/codec_utils/RRC/SPS-Config.h [new file with mode: 0644]
src/codec_utils/RRC/SRB-Identity.c [new file with mode: 0644]
src/codec_utils/RRC/SRB-Identity.h [new file with mode: 0644]
src/codec_utils/RRC/SRB-ToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/SRB-ToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/SRB-ToAddModList.c [new file with mode: 0644]
src/codec_utils/RRC/SRB-ToAddModList.h [new file with mode: 0644]
src/codec_utils/RRC/SRI-PUSCH-PowerControl.c [new file with mode: 0644]
src/codec_utils/RRC/SRI-PUSCH-PowerControl.h [new file with mode: 0644]
src/codec_utils/RRC/SRI-PUSCH-PowerControlId.c [new file with mode: 0644]
src/codec_utils/RRC/SRI-PUSCH-PowerControlId.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-CC-SetIndex.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-CC-SetIndex.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-CarrierSwitching.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-CarrierSwitching.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-Config.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-Config.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-PeriodicityAndOffset.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-PeriodicityAndOffset.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-Resources.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-Resources.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-SpatialRelationInfo.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-SpatialRelationInfo.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-TPC-CommandConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-TPC-CommandConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-TPC-PDCCH-Config.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-TPC-PDCCH-Config.h [new file with mode: 0644]
src/codec_utils/RRC/SRS-TxSwitch.c [new file with mode: 0644]
src/codec_utils/RRC/SRS-TxSwitch.h [new file with mode: 0644]
src/codec_utils/RRC/SS-RSSI-Measurement.c [new file with mode: 0644]
src/codec_utils/RRC/SS-RSSI-Measurement.h [new file with mode: 0644]
src/codec_utils/RRC/SSB-ConfigMobility.c [new file with mode: 0644]
src/codec_utils/RRC/SSB-ConfigMobility.h [new file with mode: 0644]
src/codec_utils/RRC/SSB-Index.c [new file with mode: 0644]
src/codec_utils/RRC/SSB-Index.h [new file with mode: 0644]
src/codec_utils/RRC/SSB-MTC.c [new file with mode: 0644]
src/codec_utils/RRC/SSB-MTC.h [new file with mode: 0644]
src/codec_utils/RRC/SSB-MTC2.c [new file with mode: 0644]
src/codec_utils/RRC/SSB-MTC2.h [new file with mode: 0644]
src/codec_utils/RRC/SSB-ToMeasure.c [new file with mode: 0644]
src/codec_utils/RRC/SSB-ToMeasure.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingInfo.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingInfo.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestId.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestId.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestResourceConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestResourceConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestToAddMod.c [new file with mode: 0644]
src/codec_utils/RRC/SchedulingRequestToAddMod.h [new file with mode: 0644]
src/codec_utils/RRC/ScramblingId.c [new file with mode: 0644]
src/codec_utils/RRC/ScramblingId.h [new file with mode: 0644]
src/codec_utils/RRC/SearchSpace.c [new file with mode: 0644]
src/codec_utils/RRC/SearchSpace.h [new file with mode: 0644]
src/codec_utils/RRC/SearchSpaceId.c [new file with mode: 0644]
src/codec_utils/RRC/SearchSpaceId.h [new file with mode: 0644]
src/codec_utils/RRC/SearchSpaceZero.c [new file with mode: 0644]
src/codec_utils/RRC/SearchSpaceZero.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityAlgorithmConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityAlgorithmConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityConfigSMC.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityConfigSMC.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeCommand-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeCommand-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeCommand.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeCommand.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeComplete-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeComplete-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeComplete.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeComplete.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeFailure-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeFailure-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeFailure.c [new file with mode: 0644]
src/codec_utils/RRC/SecurityModeFailure.h [new file with mode: 0644]
src/codec_utils/RRC/ServCellIndex.c [new file with mode: 0644]
src/codec_utils/RRC/ServCellIndex.h [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfigCommonSIB.c [new file with mode: 0644]
src/codec_utils/RRC/ServingCellConfigCommonSIB.h [new file with mode: 0644]
src/codec_utils/RRC/ShortI-RNTI-Value.c [new file with mode: 0644]
src/codec_utils/RRC/ShortI-RNTI-Value.h [new file with mode: 0644]
src/codec_utils/RRC/ShortMAC-I.c [new file with mode: 0644]
src/codec_utils/RRC/ShortMAC-I.h [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombination.c [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombination.h [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombinationId.c [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombinationId.h [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombinationsPerCell.c [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatCombinationsPerCell.h [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatIndicator.c [new file with mode: 0644]
src/codec_utils/RRC/SlotFormatIndicator.h [new file with mode: 0644]
src/codec_utils/RRC/SpCellConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SpCellConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SpeedStateScaleFactors.c [new file with mode: 0644]
src/codec_utils/RRC/SpeedStateScaleFactors.h [new file with mode: 0644]
src/codec_utils/RRC/SubcarrierSpacing.c [new file with mode: 0644]
src/codec_utils/RRC/SubcarrierSpacing.h [new file with mode: 0644]
src/codec_utils/RRC/SupportedBandwidth.c [new file with mode: 0644]
src/codec_utils/RRC/SupportedBandwidth.h [new file with mode: 0644]
src/codec_utils/RRC/SuspendConfig.c [new file with mode: 0644]
src/codec_utils/RRC/SuspendConfig.h [new file with mode: 0644]
src/codec_utils/RRC/SystemInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/SystemInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/SystemInformation.c [new file with mode: 0644]
src/codec_utils/RRC/SystemInformation.h [new file with mode: 0644]
src/codec_utils/RRC/T-PollRetransmit.c [new file with mode: 0644]
src/codec_utils/RRC/T-PollRetransmit.h [new file with mode: 0644]
src/codec_utils/RRC/T-Reassembly.c [new file with mode: 0644]
src/codec_utils/RRC/T-Reassembly.h [new file with mode: 0644]
src/codec_utils/RRC/T-Reselection.c [new file with mode: 0644]
src/codec_utils/RRC/T-Reselection.h [new file with mode: 0644]
src/codec_utils/RRC/T-StatusProhibit.c [new file with mode: 0644]
src/codec_utils/RRC/T-StatusProhibit.h [new file with mode: 0644]
src/codec_utils/RRC/TAG-Config.c [new file with mode: 0644]
src/codec_utils/RRC/TAG-Config.h [new file with mode: 0644]
src/codec_utils/RRC/TAG-Id.c [new file with mode: 0644]
src/codec_utils/RRC/TAG-Id.h [new file with mode: 0644]
src/codec_utils/RRC/TAG.c [new file with mode: 0644]
src/codec_utils/RRC/TAG.h [new file with mode: 0644]
src/codec_utils/RRC/TCI-State.c [new file with mode: 0644]
src/codec_utils/RRC/TCI-State.h [new file with mode: 0644]
src/codec_utils/RRC/TCI-StateId.c [new file with mode: 0644]
src/codec_utils/RRC/TCI-StateId.h [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.c [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.h [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-Pattern.c [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-Pattern.h [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-SlotConfig.c [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-SlotConfig.h [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-SlotIndex.c [new file with mode: 0644]
src/codec_utils/RRC/TDD-UL-DL-SlotIndex.h [new file with mode: 0644]
src/codec_utils/RRC/ThresholdNR.c [new file with mode: 0644]
src/codec_utils/RRC/ThresholdNR.h [new file with mode: 0644]
src/codec_utils/RRC/TimeAlignmentTimer.c [new file with mode: 0644]
src/codec_utils/RRC/TimeAlignmentTimer.h [new file with mode: 0644]
src/codec_utils/RRC/TimeToTrigger.c [new file with mode: 0644]
src/codec_utils/RRC/TimeToTrigger.h [new file with mode: 0644]
src/codec_utils/RRC/TrackingAreaCode.c [new file with mode: 0644]
src/codec_utils/RRC/TrackingAreaCode.h [new file with mode: 0644]
src/codec_utils/RRC/TypeI-MultiPanelCodebook.c [new file with mode: 0644]
src/codec_utils/RRC/TypeI-MultiPanelCodebook.h [new file with mode: 0644]
src/codec_utils/RRC/TypeI-SinglePanelCodebook.c [new file with mode: 0644]
src/codec_utils/RRC/TypeI-SinglePanelCodebook.h [new file with mode: 0644]
src/codec_utils/RRC/TypeII-Codebook.c [new file with mode: 0644]
src/codec_utils/RRC/TypeII-Codebook.h [new file with mode: 0644]
src/codec_utils/RRC/TypeII-CodebookPortSelection.c [new file with mode: 0644]
src/codec_utils/RRC/TypeII-CodebookPortSelection.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSet.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSet.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSetIndex.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSetIndex.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSetList.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringInfoSetList.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerCat.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerCat.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerCatList.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerCatList.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerPLMN-List.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerPLMN-List.h [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerPLMN.c [new file with mode: 0644]
src/codec_utils/RRC/UAC-BarringPerPLMN.h [new file with mode: 0644]
src/codec_utils/RRC/UCI-OnPUSCH.c [new file with mode: 0644]
src/codec_utils/RRC/UCI-OnPUSCH.h [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-Container.c [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-Container.h [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.c [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.h [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-Request.c [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-Request.h [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-RequestList.c [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRAT-RequestList.h [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRequestFilterNR.c [new file with mode: 0644]
src/codec_utils/RRC/UE-CapabilityRequestFilterNR.h [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-Capability.c [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-Capability.h [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.c [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.h [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.c [new file with mode: 0644]
src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.h [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-Capability.c [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-Capability.h [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.c [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.h [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.c [new file with mode: 0644]
src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.h [new file with mode: 0644]
src/codec_utils/RRC/UE-TimersAndConstants.c [new file with mode: 0644]
src/codec_utils/RRC/UE-TimersAndConstants.h [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation.c [new file with mode: 0644]
src/codec_utils/RRC/UEAssistanceInformation.h [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityEnquiry-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityEnquiry-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityEnquiry.c [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityEnquiry.h [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityInformation.c [new file with mode: 0644]
src/codec_utils/RRC/UECapabilityInformation.h [new file with mode: 0644]
src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UERadioAccessCapabilityInformation.c [new file with mode: 0644]
src/codec_utils/RRC/UERadioAccessCapabilityInformation.h [new file with mode: 0644]
src/codec_utils/RRC/UERadioPagingInformation-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/UERadioPagingInformation-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/UERadioPagingInformation.c [new file with mode: 0644]
src/codec_utils/RRC/UERadioPagingInformation.h [new file with mode: 0644]
src/codec_utils/RRC/UL-AM-RLC.c [new file with mode: 0644]
src/codec_utils/RRC/UL-AM-RLC.h [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH1-Message.c [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH1-Message.h [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH1-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/UL-CCCH1-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/UL-DCCH-Message.c [new file with mode: 0644]
src/codec_utils/RRC/UL-DCCH-Message.h [new file with mode: 0644]
src/codec_utils/RRC/UL-DCCH-MessageType.c [new file with mode: 0644]
src/codec_utils/RRC/UL-DCCH-MessageType.h [new file with mode: 0644]
src/codec_utils/RRC/UL-DataSplitThreshold.c [new file with mode: 0644]
src/codec_utils/RRC/UL-DataSplitThreshold.h [new file with mode: 0644]
src/codec_utils/RRC/UL-UM-RLC.c [new file with mode: 0644]
src/codec_utils/RRC/UL-UM-RLC.h [new file with mode: 0644]
src/codec_utils/RRC/ULInformationTransfer-IEs.c [new file with mode: 0644]
src/codec_utils/RRC/ULInformationTransfer-IEs.h [new file with mode: 0644]
src/codec_utils/RRC/ULInformationTransfer.c [new file with mode: 0644]
src/codec_utils/RRC/ULInformationTransfer.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfig.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfig.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfigCommon.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfigCommon.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfigCommonSIB.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkConfigCommonSIB.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentBWP.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentBWP.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentCell.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentCell.h [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentList.c [new file with mode: 0644]
src/codec_utils/RRC/UplinkTxDirectCurrentList.h [new file with mode: 0644]
src/codec_utils/RRC/VarMeasConfig.c [new file with mode: 0644]
src/codec_utils/RRC/VarMeasConfig.h [new file with mode: 0644]
src/codec_utils/RRC/VarMeasReport.c [new file with mode: 0644]
src/codec_utils/RRC/VarMeasReport.h [new file with mode: 0644]
src/codec_utils/RRC/VarMeasReportList.c [new file with mode: 0644]
src/codec_utils/RRC/VarMeasReportList.h [new file with mode: 0644]
src/codec_utils/RRC/VarPendingRNA-Update.c [new file with mode: 0644]
src/codec_utils/RRC/VarPendingRNA-Update.h [new file with mode: 0644]
src/codec_utils/RRC/VarResumeMAC-Input.c [new file with mode: 0644]
src/codec_utils/RRC/VarResumeMAC-Input.h [new file with mode: 0644]
src/codec_utils/RRC/VarShortMAC-Input.c [new file with mode: 0644]
src/codec_utils/RRC/VarShortMAC-Input.h [new file with mode: 0644]
src/codec_utils/RRC/VictimSystemType.c [new file with mode: 0644]
src/codec_utils/RRC/VictimSystemType.h [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-Resource.c [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-Resource.h [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceId.c [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceId.h [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.c [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.h [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.c [new file with mode: 0644]
src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.h [new file with mode: 0644]
src/codec_utils/SYSINFO/ARFCN-ValueNR.c [deleted file]
src/codec_utils/SYSINFO/ARFCN-ValueNR.h [deleted file]
src/codec_utils/SYSINFO/AdditionalSpectrumEmission.c [deleted file]
src/codec_utils/SYSINFO/AdditionalSpectrumEmission.h [deleted file]
src/codec_utils/SYSINFO/BCCH-BCH-Message.c [deleted file]
src/codec_utils/SYSINFO/BCCH-BCH-Message.h [deleted file]
src/codec_utils/SYSINFO/BCCH-BCH-MessageType.c [deleted file]
src/codec_utils/SYSINFO/BCCH-BCH-MessageType.h [deleted file]
src/codec_utils/SYSINFO/BCCH-Config.c [deleted file]
src/codec_utils/SYSINFO/BCCH-Config.h [deleted file]
src/codec_utils/SYSINFO/BWP-DownlinkCommon.c [deleted file]
src/codec_utils/SYSINFO/BWP-DownlinkCommon.h [deleted file]
src/codec_utils/SYSINFO/BWP-UplinkCommon.c [deleted file]
src/codec_utils/SYSINFO/BWP-UplinkCommon.h [deleted file]
src/codec_utils/SYSINFO/BWP.c [deleted file]
src/codec_utils/SYSINFO/BWP.h [deleted file]
src/codec_utils/SYSINFO/CellAccessRelatedInfo.c [deleted file]
src/codec_utils/SYSINFO/CellAccessRelatedInfo.h [deleted file]
src/codec_utils/SYSINFO/CellIdentity.c [deleted file]
src/codec_utils/SYSINFO/CellIdentity.h [deleted file]
src/codec_utils/SYSINFO/ConnEstFailureControl.c [deleted file]
src/codec_utils/SYSINFO/ConnEstFailureControl.h [deleted file]
src/codec_utils/SYSINFO/ControlResourceSet.c [deleted file]
src/codec_utils/SYSINFO/ControlResourceSet.h [deleted file]
src/codec_utils/SYSINFO/ControlResourceSetId.c [deleted file]
src/codec_utils/SYSINFO/ControlResourceSetId.h [deleted file]
src/codec_utils/SYSINFO/ControlResourceSetZero.c [deleted file]
src/codec_utils/SYSINFO/ControlResourceSetZero.h [deleted file]
src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.c [deleted file]
src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.h [deleted file]
src/codec_utils/SYSINFO/FreqBandIndicatorNR.c [deleted file]
src/codec_utils/SYSINFO/FreqBandIndicatorNR.h [deleted file]
src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.c [deleted file]
src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.h [deleted file]
src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.c [deleted file]
src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.h [deleted file]
src/codec_utils/SYSINFO/MCC-MNC-Digit.c [deleted file]
src/codec_utils/SYSINFO/MCC-MNC-Digit.h [deleted file]
src/codec_utils/SYSINFO/MCC.c [deleted file]
src/codec_utils/SYSINFO/MCC.h [deleted file]
src/codec_utils/SYSINFO/MIB.c [deleted file]
src/codec_utils/SYSINFO/MIB.h [deleted file]
src/codec_utils/SYSINFO/MNC.c [deleted file]
src/codec_utils/SYSINFO/MNC.h [deleted file]
src/codec_utils/SYSINFO/Makefile.am.libasncodec [deleted file]
src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.c [deleted file]
src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.h [deleted file]
src/codec_utils/SYSINFO/NR-MultiBandInfo.c [deleted file]
src/codec_utils/SYSINFO/NR-MultiBandInfo.h [deleted file]
src/codec_utils/SYSINFO/NR-NS-PmaxList.c [deleted file]
src/codec_utils/SYSINFO/NR-NS-PmaxList.h [deleted file]
src/codec_utils/SYSINFO/NR-NS-PmaxValue.c [deleted file]
src/codec_utils/SYSINFO/NR-NS-PmaxValue.h [deleted file]
src/codec_utils/SYSINFO/P-Max.c [deleted file]
src/codec_utils/SYSINFO/P-Max.h [deleted file]
src/codec_utils/SYSINFO/PCCH-Config.c [deleted file]
src/codec_utils/SYSINFO/PCCH-Config.h [deleted file]
src/codec_utils/SYSINFO/PDCCH-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/PDCCH-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.c [deleted file]
src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.h [deleted file]
src/codec_utils/SYSINFO/PDSCH-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/PDSCH-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.c [deleted file]
src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.h [deleted file]
src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.c [deleted file]
src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.h [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentitY.c [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentitY.h [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentityInfo.c [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentityInfo.h [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentityInfoList.c [deleted file]
src/codec_utils/SYSINFO/PLMN-IdentityInfoList.h [deleted file]
src/codec_utils/SYSINFO/PUCCH-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/PUCCH-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/PUSCH-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/PUSCH-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.c [deleted file]
src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.h [deleted file]
src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.c [deleted file]
src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.h [deleted file]
src/codec_utils/SYSINFO/PagingCycle.c [deleted file]
src/codec_utils/SYSINFO/PagingCycle.h [deleted file]
src/codec_utils/SYSINFO/Q-QualMin.c [deleted file]
src/codec_utils/SYSINFO/Q-QualMin.h [deleted file]
src/codec_utils/SYSINFO/Q-RxLevMin.c [deleted file]
src/codec_utils/SYSINFO/Q-RxLevMin.h [deleted file]
src/codec_utils/SYSINFO/RACH-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/RACH-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/RACH-ConfigGeneric.c [deleted file]
src/codec_utils/SYSINFO/RACH-ConfigGeneric.h [deleted file]
src/codec_utils/SYSINFO/RAN-AreaCode.c [deleted file]
src/codec_utils/SYSINFO/RAN-AreaCode.h [deleted file]
src/codec_utils/SYSINFO/RSRP-Range.c [deleted file]
src/codec_utils/SYSINFO/RSRP-Range.h [deleted file]
src/codec_utils/SYSINFO/SCS-SpecificCarrier.c [deleted file]
src/codec_utils/SYSINFO/SCS-SpecificCarrier.h [deleted file]
src/codec_utils/SYSINFO/SI-RequestConfig.c [deleted file]
src/codec_utils/SYSINFO/SI-RequestConfig.h [deleted file]
src/codec_utils/SYSINFO/SI-RequestResources.c [deleted file]
src/codec_utils/SYSINFO/SI-RequestResources.h [deleted file]
src/codec_utils/SYSINFO/SI-SchedulingInfo.c [deleted file]
src/codec_utils/SYSINFO/SI-SchedulingInfo.h [deleted file]
src/codec_utils/SYSINFO/SIB-Mapping.c [deleted file]
src/codec_utils/SYSINFO/SIB-Mapping.h [deleted file]
src/codec_utils/SYSINFO/SIB-TypeInfo.c [deleted file]
src/codec_utils/SYSINFO/SIB-TypeInfo.h [deleted file]
src/codec_utils/SYSINFO/SIB1.c [deleted file]
src/codec_utils/SYSINFO/SIB1.h [deleted file]
src/codec_utils/SYSINFO/SchedulingInfo.c [deleted file]
src/codec_utils/SYSINFO/SchedulingInfo.h [deleted file]
src/codec_utils/SYSINFO/SearchSpace.c [deleted file]
src/codec_utils/SYSINFO/SearchSpace.h [deleted file]
src/codec_utils/SYSINFO/SearchSpaceId.c [deleted file]
src/codec_utils/SYSINFO/SearchSpaceId.h [deleted file]
src/codec_utils/SYSINFO/SearchSpaceZero.c [deleted file]
src/codec_utils/SYSINFO/SearchSpaceZero.h [deleted file]
src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.c [deleted file]
src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.h [deleted file]
src/codec_utils/SYSINFO/SubcarrierSpacing.c [deleted file]
src/codec_utils/SYSINFO/SubcarrierSpacing.h [deleted file]
src/codec_utils/SYSINFO/TCI-StateId.c [deleted file]
src/codec_utils/SYSINFO/TCI-StateId.h [deleted file]
src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.c [deleted file]
src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.h [deleted file]
src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.c [deleted file]
src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.h [deleted file]
src/codec_utils/SYSINFO/TimeAlignmentTimer.c [deleted file]
src/codec_utils/SYSINFO/TimeAlignmentTimer.h [deleted file]
src/codec_utils/SYSINFO/TrackingAreaCode.c [deleted file]
src/codec_utils/SYSINFO/TrackingAreaCode.h [deleted file]
src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.c [deleted file]
src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSet.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSet.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSetList.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringInfoSetList.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerCat.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerCat.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerCatList.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerCatList.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.h [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerPLMN.c [deleted file]
src/codec_utils/SYSINFO/UAC-BarringPerPLMN.h [deleted file]
src/codec_utils/SYSINFO/UE-TimersAndConstants.c [deleted file]
src/codec_utils/SYSINFO/UE-TimersAndConstants.h [deleted file]
src/codec_utils/SYSINFO/UplinkConfigCommonSIB.c [deleted file]
src/codec_utils/SYSINFO/UplinkConfigCommonSIB.h [deleted file]

diff --git a/build/common/asn_rrc.mak b/build/common/asn_rrc.mak
new file mode 100755 (executable)
index 0000000..7708b33
--- /dev/null
@@ -0,0 +1,49 @@
+################################################################################
+#   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/RRC
+C_SRCS=$(wildcard $(SRC_DIR)/*.c)
+C_OBJS=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(C_SRCS))
+LOG_FILES=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i,$(C_SRCS))
+BAK_FILES=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i.bak,$(C_SRCS))
+DB_FILES =$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i.db,$(C_SRCS))
+
+lib: $(LIB_DIR)/libasn_rrc.a
+include $(COM_BUILD_DIR)/compile.mak
+
+I_OPTS+=-I$(SRC_DIR)/../common
+#-------------------------------------------------------------#
+#Linker macros
+#-------------------------------------------------------------#
+$(LIB_DIR)/libasn_rrc.a:$(C_OBJS) $(C_WO_PED_OBJS)
+                 @echo -e "Creating Archive $(COLOR) $@ $(REVERT_COLOR)"
+                 $(Q)ar -cr $(LIB_DIR)/libasn_rrc.a $(C_OBJS) $(C_WO_PED_OBJS)
+
+
+#-------------------------------------------------------------#
+#Clean macros
+#-------------------------------------------------------------#
+clean:
+                 @echo -e "$(COLOR_RED)Cleaning ASN$(REVERT_COLOR)"
+                 @echo $(SRC_DIR) $(CM_DIR)
+                 $(Q)\rm -f $(LIB_DIR)/libasn_rrc.a $(C_OBJS) $(C_WO_PED_OBJS) $(LOG_FILES) $(BAK_FILES)
+
diff --git a/build/common/asn_sysinfo.mak b/build/common/asn_sysinfo.mak
deleted file mode 100755 (executable)
index b309922..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-################################################################################
-#   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/SYSINFO
-C_SRCS=$(wildcard $(SRC_DIR)/*.c)
-C_OBJS=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.o,$(C_SRCS))
-LOG_FILES=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i,$(C_SRCS))
-BAK_FILES=$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i.bak,$(C_SRCS))
-DB_FILES =$(patsubst $(SRC_DIR)/%.c,$(OBJ_DIR)/%.i.db,$(C_SRCS))
-
-lib: $(LIB_DIR)/libasn_sysinfo.a
-include $(COM_BUILD_DIR)/compile.mak
-
-I_OPTS+=-I$(SRC_DIR)/../common
-#-------------------------------------------------------------#
-#Linker macros
-#-------------------------------------------------------------#
-$(LIB_DIR)/libasn_sysinfo.a:$(C_OBJS) $(C_WO_PED_OBJS)
-                 @echo -e "Creating Archive $(COLOR) $@ $(REVERT_COLOR)"
-                 $(Q)ar -cr $(LIB_DIR)/libasn_sysinfo.a $(C_OBJS) $(C_WO_PED_OBJS)
-
-
-#-------------------------------------------------------------#
-#Clean macros
-#-------------------------------------------------------------#
-clean:
-                 @echo -e "$(COLOR_RED)Cleaning ASN$(REVERT_COLOR)"
-                 @echo $(SRC_DIR) $(CM_DIR)
-                 $(Q)\rm -f $(LIB_DIR)/libasn_sysinfo.a $(C_OBJS) $(C_WO_PED_OBJS) $(LOG_FILES) $(BAK_FILES)
-
index d6135ba..43151c0 100644 (file)
@@ -41,7 +41,7 @@ include $(COM_BUILD_DIR)/compile.mak
 I_OPTS+=-I$(ROOT_DIR)/src/mt
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/common
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/F1AP
-I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/SYSINFO
+I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/RRC
 I_OPTS+=-I$(ROOT_DIR)/src/codec_utils/E2AP
 
 #-------------------------------------------------------------#
index 98dc3a7..ff00e9b 100644 (file)
@@ -152,7 +152,7 @@ du:
                $(Q)$(MAKE) -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) -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) -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) -f $(COM_BUILD_DIR)/asn_sysinfo.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+               $(Q)$(MAKE) -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) -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) -f $(COM_BUILD_DIR)/f1ap.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/kw.mak OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
@@ -172,7 +172,7 @@ clean_odu:
                $(Q)$(MAKE) -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) -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) -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) -f $(COM_BUILD_DIR)/asn_sysinfo.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
+               $(Q)$(MAKE) -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) -f $(COM_BUILD_DIR)/kw.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
                $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mac.mak clean OBJ_DIR=$(OBJ_ROOT)/odu LIB_DIR=$(LIB_ROOT)/odu LOG_DIR=$(LOG_ROOT)/odu CC='$(CC1)'
@@ -198,7 +198,7 @@ cu:
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cu_stub.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
-        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
 
@@ -206,7 +206,7 @@ clean_cu:
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cu_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_f1ap.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
-        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
+        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/cu_stub LIB_DIR=$(LIB_ROOT)/cu_stub LOG_DIR=$(LOG_ROOT)/cu_stub CC='$(CC1)'
         $(Q)rm -rf $(OBJ_ROOT)/cu_stub/*
@@ -234,7 +234,7 @@ clean_ric:
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/ric_stub.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_common.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_e2ap.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
-        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_sysinfo.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
+        $(Q)$(MAKE) -f $(COM_BUILD_DIR)/asn_rrc.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/cm.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)$(MAKE) -f $(COM_BUILD_DIR)/mt.mak clean OBJ_DIR=$(OBJ_ROOT)/ric_stub LIB_DIR=$(LIB_ROOT)/ric_stub LOG_DIR=$(LOG_ROOT)/ric_stub CC='$(CC1)'
         $(Q)rm -rf $(OBJ_ROOT)/ric_stub/*
diff --git a/src/codec_utils/RRC/AMF-Identifier.c b/src/codec_utils/RRC/AMF-Identifier.c
new file mode 100644 (file)
index 0000000..f8f4561
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AMF-Identifier.h"
+
+int
+AMF_Identifier_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 == 24)) {
+               /* 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_AMF_Identifier_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+asn_per_constraints_t asn_PER_type_AMF_Identifier_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AMF_Identifier_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AMF_Identifier = {
+       "AMF-Identifier",
+       "AMF-Identifier",
+       &asn_OP_BIT_STRING,
+       asn_DEF_AMF_Identifier_tags_1,
+       sizeof(asn_DEF_AMF_Identifier_tags_1)
+               /sizeof(asn_DEF_AMF_Identifier_tags_1[0]), /* 1 */
+       asn_DEF_AMF_Identifier_tags_1,  /* Same as above */
+       sizeof(asn_DEF_AMF_Identifier_tags_1)
+               /sizeof(asn_DEF_AMF_Identifier_tags_1[0]), /* 1 */
+       { &asn_OER_type_AMF_Identifier_constr_1, &asn_PER_type_AMF_Identifier_constr_1, AMF_Identifier_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AMF-Identifier.h b/src/codec_utils/RRC/AMF-Identifier.h
new file mode 100644 (file)
index 0000000..b0f3c5b
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AMF_Identifier_H_
+#define        _AMF_Identifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AMF-Identifier */
+typedef BIT_STRING_t    AMF_Identifier_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AMF_Identifier_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AMF_Identifier;
+asn_struct_free_f AMF_Identifier_free;
+asn_struct_print_f AMF_Identifier_print;
+asn_constr_check_f AMF_Identifier_constraint;
+ber_type_decoder_f AMF_Identifier_decode_ber;
+der_type_encoder_f AMF_Identifier_encode_der;
+xer_type_decoder_f AMF_Identifier_decode_xer;
+xer_type_encoder_f AMF_Identifier_encode_xer;
+oer_type_decoder_f AMF_Identifier_decode_oer;
+oer_type_encoder_f AMF_Identifier_encode_oer;
+per_type_decoder_f AMF_Identifier_decode_uper;
+per_type_encoder_f AMF_Identifier_encode_uper;
+per_type_decoder_f AMF_Identifier_decode_aper;
+per_type_encoder_f AMF_Identifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AMF_Identifier_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ARFCN-ValueEUTRA.c b/src/codec_utils/RRC/ARFCN-ValueEUTRA.c
new file mode 100644 (file)
index 0000000..10bc320
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ARFCN-ValueEUTRA.h"
+
+int
+ARFCN_ValueEUTRA_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 <= 262143)) {
+               /* 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_ARFCN_ValueEUTRA_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..262143) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ARFCN_ValueEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       18, -1,  0,  262143 }  /* (0..262143) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ARFCN_ValueEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueEUTRA = {
+       "ARFCN-ValueEUTRA",
+       "ARFCN-ValueEUTRA",
+       &asn_OP_NativeInteger,
+       asn_DEF_ARFCN_ValueEUTRA_tags_1,
+       sizeof(asn_DEF_ARFCN_ValueEUTRA_tags_1)
+               /sizeof(asn_DEF_ARFCN_ValueEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_ARFCN_ValueEUTRA_tags_1,        /* Same as above */
+       sizeof(asn_DEF_ARFCN_ValueEUTRA_tags_1)
+               /sizeof(asn_DEF_ARFCN_ValueEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_ARFCN_ValueEUTRA_constr_1, &asn_PER_type_ARFCN_ValueEUTRA_constr_1, ARFCN_ValueEUTRA_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ARFCN-ValueEUTRA.h b/src/codec_utils/RRC/ARFCN-ValueEUTRA.h
new file mode 100644 (file)
index 0000000..63998af
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ARFCN_ValueEUTRA_H_
+#define        _ARFCN_ValueEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ARFCN-ValueEUTRA */
+typedef long    ARFCN_ValueEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ARFCN_ValueEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueEUTRA;
+asn_struct_free_f ARFCN_ValueEUTRA_free;
+asn_struct_print_f ARFCN_ValueEUTRA_print;
+asn_constr_check_f ARFCN_ValueEUTRA_constraint;
+ber_type_decoder_f ARFCN_ValueEUTRA_decode_ber;
+der_type_encoder_f ARFCN_ValueEUTRA_encode_der;
+xer_type_decoder_f ARFCN_ValueEUTRA_decode_xer;
+xer_type_encoder_f ARFCN_ValueEUTRA_encode_xer;
+oer_type_decoder_f ARFCN_ValueEUTRA_decode_oer;
+oer_type_encoder_f ARFCN_ValueEUTRA_encode_oer;
+per_type_decoder_f ARFCN_ValueEUTRA_decode_uper;
+per_type_encoder_f ARFCN_ValueEUTRA_encode_uper;
+per_type_decoder_f ARFCN_ValueEUTRA_decode_aper;
+per_type_encoder_f ARFCN_ValueEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ARFCN_ValueEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ARFCN-ValueNR.c b/src/codec_utils/RRC/ARFCN-ValueNR.c
new file mode 100644 (file)
index 0000000..9994400
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ARFCN-ValueNR.h"
+
+int
+ARFCN_ValueNR_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 <= 3279165)) {
+               /* 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_ARFCN_ValueNR_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (0..3279165) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ARFCN_ValueNR_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       22, -1,  0,  3279165 } /* (0..3279165) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ARFCN_ValueNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueNR = {
+       "ARFCN-ValueNR",
+       "ARFCN-ValueNR",
+       &asn_OP_NativeInteger,
+       asn_DEF_ARFCN_ValueNR_tags_1,
+       sizeof(asn_DEF_ARFCN_ValueNR_tags_1)
+               /sizeof(asn_DEF_ARFCN_ValueNR_tags_1[0]), /* 1 */
+       asn_DEF_ARFCN_ValueNR_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ARFCN_ValueNR_tags_1)
+               /sizeof(asn_DEF_ARFCN_ValueNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_ARFCN_ValueNR_constr_1, &asn_PER_type_ARFCN_ValueNR_constr_1, ARFCN_ValueNR_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ARFCN-ValueNR.h b/src/codec_utils/RRC/ARFCN-ValueNR.h
new file mode 100644 (file)
index 0000000..229d45d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ARFCN_ValueNR_H_
+#define        _ARFCN_ValueNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ARFCN-ValueNR */
+typedef long    ARFCN_ValueNR_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ARFCN_ValueNR_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueNR;
+asn_struct_free_f ARFCN_ValueNR_free;
+asn_struct_print_f ARFCN_ValueNR_print;
+asn_constr_check_f ARFCN_ValueNR_constraint;
+ber_type_decoder_f ARFCN_ValueNR_decode_ber;
+der_type_encoder_f ARFCN_ValueNR_encode_der;
+xer_type_decoder_f ARFCN_ValueNR_decode_xer;
+xer_type_encoder_f ARFCN_ValueNR_encode_xer;
+oer_type_decoder_f ARFCN_ValueNR_decode_oer;
+oer_type_encoder_f ARFCN_ValueNR_encode_oer;
+per_type_decoder_f ARFCN_ValueNR_decode_uper;
+per_type_encoder_f ARFCN_ValueNR_encode_uper;
+per_type_decoder_f ARFCN_ValueNR_decode_aper;
+per_type_encoder_f ARFCN_ValueNR_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ARFCN_ValueNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AS-Config.c b/src/codec_utils/RRC/AS-Config.c
new file mode 100644 (file)
index 0000000..f8a0515
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AS-Config.h"
+
+static int
+memb_rrcReconfiguration_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_rrcReconfiguration_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_rrcReconfiguration_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_AS_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct AS_Config, rrcReconfiguration),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_rrcReconfiguration_constr_2, &asn_PER_memb_rrcReconfiguration_constr_2,  memb_rrcReconfiguration_constraint_1 },
+               0, 0, /* No default value */
+               "rrcReconfiguration"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_AS_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_AS_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcReconfiguration */
+};
+asn_SEQUENCE_specifics_t asn_SPC_AS_Config_specs_1 = {
+       sizeof(struct AS_Config),
+       offsetof(struct AS_Config, _asn_ctx),
+       asn_MAP_AS_Config_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_AS_Config = {
+       "AS-Config",
+       "AS-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_AS_Config_tags_1,
+       sizeof(asn_DEF_AS_Config_tags_1)
+               /sizeof(asn_DEF_AS_Config_tags_1[0]), /* 1 */
+       asn_DEF_AS_Config_tags_1,       /* Same as above */
+       sizeof(asn_DEF_AS_Config_tags_1)
+               /sizeof(asn_DEF_AS_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_AS_Config_1,
+       1,      /* Elements count */
+       &asn_SPC_AS_Config_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AS-Config.h b/src/codec_utils/RRC/AS-Config.h
new file mode 100644 (file)
index 0000000..af16f24
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AS_Config_H_
+#define        _AS_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AS-Config */
+typedef struct AS_Config {
+       OCTET_STRING_t   rrcReconfiguration;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} AS_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AS_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_AS_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_AS_Config_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AS_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AS-Context.c b/src/codec_utils/RRC/AS-Context.c
new file mode 100644 (file)
index 0000000..6c1a894
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AS-Context.h"
+
+#include "ReestablishmentInfo.h"
+#include "ConfigRestrictInfoSCG.h"
+#include "RAN-NotificationAreaInfo.h"
+static asn_TYPE_member_t asn_MBR_ext1_5[] = {
+       { ATF_POINTER, 1, offsetof(struct AS_Context__ext1, ran_NotificationAreaInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_RAN_NotificationAreaInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-NotificationAreaInfo"
+               },
+};
+static const int asn_MAP_ext1_oms_5[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ran-NotificationAreaInfo */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_5 = {
+       sizeof(struct AS_Context__ext1),
+       offsetof(struct AS_Context__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_5,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_5,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_5 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_5,
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_5,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_5,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_5   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_AS_Context_1[] = {
+       { ATF_POINTER, 3, offsetof(struct AS_Context, reestablishmentInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReestablishmentInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reestablishmentInfo"
+               },
+       { ATF_POINTER, 2, offsetof(struct AS_Context, configRestrictInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ConfigRestrictInfoSCG,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configRestrictInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct AS_Context, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_AS_Context_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_AS_Context_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_AS_Context_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reestablishmentInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* configRestrictInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_AS_Context_specs_1 = {
+       sizeof(struct AS_Context),
+       offsetof(struct AS_Context, _asn_ctx),
+       asn_MAP_AS_Context_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_AS_Context_oms_1,       /* Optional members */
+       2, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_AS_Context = {
+       "AS-Context",
+       "AS-Context",
+       &asn_OP_SEQUENCE,
+       asn_DEF_AS_Context_tags_1,
+       sizeof(asn_DEF_AS_Context_tags_1)
+               /sizeof(asn_DEF_AS_Context_tags_1[0]), /* 1 */
+       asn_DEF_AS_Context_tags_1,      /* Same as above */
+       sizeof(asn_DEF_AS_Context_tags_1)
+               /sizeof(asn_DEF_AS_Context_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_AS_Context_1,
+       3,      /* Elements count */
+       &asn_SPC_AS_Context_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AS-Context.h b/src/codec_utils/RRC/AS-Context.h
new file mode 100644 (file)
index 0000000..d76beec
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AS_Context_H_
+#define        _AS_Context_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ReestablishmentInfo;
+struct ConfigRestrictInfoSCG;
+struct RAN_NotificationAreaInfo;
+
+/* AS-Context */
+typedef struct AS_Context {
+       struct ReestablishmentInfo      *reestablishmentInfo;   /* OPTIONAL */
+       struct ConfigRestrictInfoSCG    *configRestrictInfo;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct AS_Context__ext1 {
+               struct RAN_NotificationAreaInfo *ran_NotificationAreaInfo;      /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} AS_Context_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AS_Context;
+extern asn_SEQUENCE_specifics_t asn_SPC_AS_Context_specs_1;
+extern asn_TYPE_member_t asn_MBR_AS_Context_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AS_Context_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AccessStratumRelease.c b/src/codec_utils/RRC/AccessStratumRelease.c
new file mode 100644 (file)
index 0000000..619b1e5
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AccessStratumRelease.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AccessStratumRelease_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_AccessStratumRelease_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }    /* (0..7,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_AccessStratumRelease_value2enum_1[] = {
+       { 0,    5,      "rel15" },
+       { 1,    6,      "spare7" },
+       { 2,    6,      "spare6" },
+       { 3,    6,      "spare5" },
+       { 4,    6,      "spare4" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_AccessStratumRelease_enum2value_1[] = {
+       0,      /* rel15(0) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5,      /* spare3(5) */
+       4,      /* spare4(4) */
+       3,      /* spare5(3) */
+       2,      /* spare6(2) */
+       1       /* spare7(1) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_AccessStratumRelease_specs_1 = {
+       asn_MAP_AccessStratumRelease_value2enum_1,      /* "tag" => N; sorted by tag */
+       asn_MAP_AccessStratumRelease_enum2value_1,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       9,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_AccessStratumRelease_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AccessStratumRelease = {
+       "AccessStratumRelease",
+       "AccessStratumRelease",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_AccessStratumRelease_tags_1,
+       sizeof(asn_DEF_AccessStratumRelease_tags_1)
+               /sizeof(asn_DEF_AccessStratumRelease_tags_1[0]), /* 1 */
+       asn_DEF_AccessStratumRelease_tags_1,    /* Same as above */
+       sizeof(asn_DEF_AccessStratumRelease_tags_1)
+               /sizeof(asn_DEF_AccessStratumRelease_tags_1[0]), /* 1 */
+       { &asn_OER_type_AccessStratumRelease_constr_1, &asn_PER_type_AccessStratumRelease_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_AccessStratumRelease_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AccessStratumRelease.h b/src/codec_utils/RRC/AccessStratumRelease.h
new file mode 100644 (file)
index 0000000..0e530ba
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AccessStratumRelease_H_
+#define        _AccessStratumRelease_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum AccessStratumRelease {
+       AccessStratumRelease_rel15      = 0,
+       AccessStratumRelease_spare7     = 1,
+       AccessStratumRelease_spare6     = 2,
+       AccessStratumRelease_spare5     = 3,
+       AccessStratumRelease_spare4     = 4,
+       AccessStratumRelease_spare3     = 5,
+       AccessStratumRelease_spare2     = 6,
+       AccessStratumRelease_spare1     = 7
+       /*
+        * Enumeration is extensible
+        */
+} e_AccessStratumRelease;
+
+/* AccessStratumRelease */
+typedef long    AccessStratumRelease_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AccessStratumRelease_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AccessStratumRelease;
+extern const asn_INTEGER_specifics_t asn_SPC_AccessStratumRelease_specs_1;
+asn_struct_free_f AccessStratumRelease_free;
+asn_struct_print_f AccessStratumRelease_print;
+asn_constr_check_f AccessStratumRelease_constraint;
+ber_type_decoder_f AccessStratumRelease_decode_ber;
+der_type_encoder_f AccessStratumRelease_encode_der;
+xer_type_decoder_f AccessStratumRelease_decode_xer;
+xer_type_encoder_f AccessStratumRelease_encode_xer;
+oer_type_decoder_f AccessStratumRelease_decode_oer;
+oer_type_encoder_f AccessStratumRelease_encode_oer;
+per_type_decoder_f AccessStratumRelease_decode_uper;
+per_type_encoder_f AccessStratumRelease_encode_uper;
+per_type_decoder_f AccessStratumRelease_decode_aper;
+per_type_encoder_f AccessStratumRelease_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AccessStratumRelease_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AdditionalSpectrumEmission.c b/src/codec_utils/RRC/AdditionalSpectrumEmission.c
new file mode 100644 (file)
index 0000000..f539510
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AdditionalSpectrumEmission.h"
+
+int
+AdditionalSpectrumEmission_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 <= 7)) {
+               /* 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_AdditionalSpectrumEmission_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_AdditionalSpectrumEmission_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_AdditionalSpectrumEmission_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AdditionalSpectrumEmission = {
+       "AdditionalSpectrumEmission",
+       "AdditionalSpectrumEmission",
+       &asn_OP_NativeInteger,
+       asn_DEF_AdditionalSpectrumEmission_tags_1,
+       sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1)
+               /sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1[0]), /* 1 */
+       asn_DEF_AdditionalSpectrumEmission_tags_1,      /* Same as above */
+       sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1)
+               /sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1[0]), /* 1 */
+       { &asn_OER_type_AdditionalSpectrumEmission_constr_1, &asn_PER_type_AdditionalSpectrumEmission_constr_1, AdditionalSpectrumEmission_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/AdditionalSpectrumEmission.h b/src/codec_utils/RRC/AdditionalSpectrumEmission.h
new file mode 100644 (file)
index 0000000..961b2b5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AdditionalSpectrumEmission_H_
+#define        _AdditionalSpectrumEmission_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AdditionalSpectrumEmission */
+typedef long    AdditionalSpectrumEmission_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AdditionalSpectrumEmission_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpectrumEmission;
+asn_struct_free_f AdditionalSpectrumEmission_free;
+asn_struct_print_f AdditionalSpectrumEmission_print;
+asn_constr_check_f AdditionalSpectrumEmission_constraint;
+ber_type_decoder_f AdditionalSpectrumEmission_decode_ber;
+der_type_encoder_f AdditionalSpectrumEmission_encode_der;
+xer_type_decoder_f AdditionalSpectrumEmission_decode_xer;
+xer_type_encoder_f AdditionalSpectrumEmission_encode_xer;
+oer_type_decoder_f AdditionalSpectrumEmission_decode_oer;
+oer_type_encoder_f AdditionalSpectrumEmission_encode_oer;
+per_type_decoder_f AdditionalSpectrumEmission_decode_uper;
+per_type_encoder_f AdditionalSpectrumEmission_encode_uper;
+per_type_decoder_f AdditionalSpectrumEmission_decode_aper;
+per_type_encoder_f AdditionalSpectrumEmission_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AdditionalSpectrumEmission_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.c b/src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.c
new file mode 100644 (file)
index 0000000..78c583f
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AffectedCarrierFreqCombEUTRA.h"
+
+static asn_oer_constraints_t asn_OER_type_AffectedCarrierFreqCombEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_AffectedCarrierFreqCombEUTRA_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombEUTRA_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_AffectedCarrierFreqCombEUTRA_specs_1 = {
+       sizeof(struct AffectedCarrierFreqCombEUTRA),
+       offsetof(struct AffectedCarrierFreqCombEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombEUTRA = {
+       "AffectedCarrierFreqCombEUTRA",
+       "AffectedCarrierFreqCombEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1,
+       sizeof(asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1,    /* Same as above */
+       sizeof(asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_AffectedCarrierFreqCombEUTRA_constr_1, &asn_PER_type_AffectedCarrierFreqCombEUTRA_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_AffectedCarrierFreqCombEUTRA_1,
+       1,      /* Single element */
+       &asn_SPC_AffectedCarrierFreqCombEUTRA_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.h b/src/codec_utils/RRC/AffectedCarrierFreqCombEUTRA.h
new file mode 100644 (file)
index 0000000..53034a7
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AffectedCarrierFreqCombEUTRA_H_
+#define        _AffectedCarrierFreqCombEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AffectedCarrierFreqCombEUTRA */
+typedef struct AffectedCarrierFreqCombEUTRA {
+       A_SEQUENCE_OF(ARFCN_ValueEUTRA_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} AffectedCarrierFreqCombEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_AffectedCarrierFreqCombEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_AffectedCarrierFreqCombEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AffectedCarrierFreqCombEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.c b/src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.c
new file mode 100644 (file)
index 0000000..79f4f82
--- /dev/null
@@ -0,0 +1,189 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AffectedCarrierFreqCombInfoMRDC.h"
+
+#include "AffectedCarrierFreqCombEUTRA.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_interferenceDirectionMRDC_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_interferenceDirectionMRDC_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_interferenceDirectionMRDC_value2enum_3[] = {
+       { 0,    8,      "eutra-nr" },
+       { 1,    2,      "nr" },
+       { 2,    5,      "other" },
+       { 3,    13,     "utra-nr-other" },
+       { 4,    8,      "nr-other" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_interferenceDirectionMRDC_enum2value_3[] = {
+       0,      /* eutra-nr(0) */
+       1,      /* nr(1) */
+       4,      /* nr-other(4) */
+       2,      /* other(2) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5,      /* spare3(5) */
+       3       /* utra-nr-other(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interferenceDirectionMRDC_specs_3 = {
+       asn_MAP_interferenceDirectionMRDC_value2enum_3, /* "tag" => N; sorted by tag */
+       asn_MAP_interferenceDirectionMRDC_enum2value_3, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_interferenceDirectionMRDC_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_interferenceDirectionMRDC_3 = {
+       "interferenceDirectionMRDC",
+       "interferenceDirectionMRDC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_interferenceDirectionMRDC_tags_3,
+       sizeof(asn_DEF_interferenceDirectionMRDC_tags_3)
+               /sizeof(asn_DEF_interferenceDirectionMRDC_tags_3[0]) - 1, /* 1 */
+       asn_DEF_interferenceDirectionMRDC_tags_3,       /* Same as above */
+       sizeof(asn_DEF_interferenceDirectionMRDC_tags_3)
+               /sizeof(asn_DEF_interferenceDirectionMRDC_tags_3[0]), /* 2 */
+       { &asn_OER_type_interferenceDirectionMRDC_constr_3, &asn_PER_type_interferenceDirectionMRDC_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_interferenceDirectionMRDC_specs_3      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_affectedCarrierFreqCombMRDC_12[] = {
+       { ATF_POINTER, 1, offsetof(struct AffectedCarrierFreqCombInfoMRDC__affectedCarrierFreqCombMRDC, affectedCarrierFreqCombEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AffectedCarrierFreqCombEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "affectedCarrierFreqCombEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct AffectedCarrierFreqCombInfoMRDC__affectedCarrierFreqCombMRDC, affectedCarrierFreqCombNR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AffectedCarrierFreqCombNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "affectedCarrierFreqCombNR"
+               },
+};
+static const int asn_MAP_affectedCarrierFreqCombMRDC_oms_12[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_affectedCarrierFreqCombMRDC_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_affectedCarrierFreqCombMRDC_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* affectedCarrierFreqCombEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* affectedCarrierFreqCombNR */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_affectedCarrierFreqCombMRDC_specs_12 = {
+       sizeof(struct AffectedCarrierFreqCombInfoMRDC__affectedCarrierFreqCombMRDC),
+       offsetof(struct AffectedCarrierFreqCombInfoMRDC__affectedCarrierFreqCombMRDC, _asn_ctx),
+       asn_MAP_affectedCarrierFreqCombMRDC_tag2el_12,
+       2,      /* Count of tags in the map */
+       asn_MAP_affectedCarrierFreqCombMRDC_oms_12,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_affectedCarrierFreqCombMRDC_12 = {
+       "affectedCarrierFreqCombMRDC",
+       "affectedCarrierFreqCombMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_affectedCarrierFreqCombMRDC_tags_12,
+       sizeof(asn_DEF_affectedCarrierFreqCombMRDC_tags_12)
+               /sizeof(asn_DEF_affectedCarrierFreqCombMRDC_tags_12[0]) - 1, /* 1 */
+       asn_DEF_affectedCarrierFreqCombMRDC_tags_12,    /* Same as above */
+       sizeof(asn_DEF_affectedCarrierFreqCombMRDC_tags_12)
+               /sizeof(asn_DEF_affectedCarrierFreqCombMRDC_tags_12[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_affectedCarrierFreqCombMRDC_12,
+       2,      /* Elements count */
+       &asn_SPC_affectedCarrierFreqCombMRDC_specs_12   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombInfoMRDC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct AffectedCarrierFreqCombInfoMRDC, victimSystemType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_VictimSystemType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "victimSystemType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct AffectedCarrierFreqCombInfoMRDC, interferenceDirectionMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_interferenceDirectionMRDC_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interferenceDirectionMRDC"
+               },
+       { ATF_POINTER, 1, offsetof(struct AffectedCarrierFreqCombInfoMRDC, affectedCarrierFreqCombMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_affectedCarrierFreqCombMRDC_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "affectedCarrierFreqCombMRDC"
+               },
+};
+static const int asn_MAP_AffectedCarrierFreqCombInfoMRDC_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_AffectedCarrierFreqCombInfoMRDC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* victimSystemType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interferenceDirectionMRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* affectedCarrierFreqCombMRDC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_AffectedCarrierFreqCombInfoMRDC_specs_1 = {
+       sizeof(struct AffectedCarrierFreqCombInfoMRDC),
+       offsetof(struct AffectedCarrierFreqCombInfoMRDC, _asn_ctx),
+       asn_MAP_AffectedCarrierFreqCombInfoMRDC_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_AffectedCarrierFreqCombInfoMRDC_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombInfoMRDC = {
+       "AffectedCarrierFreqCombInfoMRDC",
+       "AffectedCarrierFreqCombInfoMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1,
+       sizeof(asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1[0]), /* 1 */
+       asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1, /* Same as above */
+       sizeof(asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombInfoMRDC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_AffectedCarrierFreqCombInfoMRDC_1,
+       3,      /* Elements count */
+       &asn_SPC_AffectedCarrierFreqCombInfoMRDC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.h b/src/codec_utils/RRC/AffectedCarrierFreqCombInfoMRDC.h
new file mode 100644 (file)
index 0000000..367064d
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AffectedCarrierFreqCombInfoMRDC_H_
+#define        _AffectedCarrierFreqCombInfoMRDC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "VictimSystemType.h"
+#include <NativeEnumerated.h>
+#include "AffectedCarrierFreqCombNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC {
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_eutra_nr     = 0,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_nr   = 1,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_other        = 2,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_utra_nr_other        = 3,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_nr_other     = 4,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_spare3       = 5,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_spare2       = 6,
+       AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC_spare1       = 7
+} e_AffectedCarrierFreqCombInfoMRDC__interferenceDirectionMRDC;
+
+/* Forward declarations */
+struct AffectedCarrierFreqCombEUTRA;
+
+/* AffectedCarrierFreqCombInfoMRDC */
+typedef struct AffectedCarrierFreqCombInfoMRDC {
+       VictimSystemType_t       victimSystemType;
+       long     interferenceDirectionMRDC;
+       struct AffectedCarrierFreqCombInfoMRDC__affectedCarrierFreqCombMRDC {
+               struct AffectedCarrierFreqCombEUTRA     *affectedCarrierFreqCombEUTRA;  /* OPTIONAL */
+               AffectedCarrierFreqCombNR_t      affectedCarrierFreqCombNR;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *affectedCarrierFreqCombMRDC;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} AffectedCarrierFreqCombInfoMRDC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_interferenceDirectionMRDC_3;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombInfoMRDC;
+extern asn_SEQUENCE_specifics_t asn_SPC_AffectedCarrierFreqCombInfoMRDC_specs_1;
+extern asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombInfoMRDC_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AffectedCarrierFreqCombInfoMRDC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombNR.c b/src/codec_utils/RRC/AffectedCarrierFreqCombNR.c
new file mode 100644 (file)
index 0000000..1357ce9
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AffectedCarrierFreqCombNR.h"
+
+static asn_oer_constraints_t asn_OER_type_AffectedCarrierFreqCombNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_AffectedCarrierFreqCombNR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombNR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_AffectedCarrierFreqCombNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_AffectedCarrierFreqCombNR_specs_1 = {
+       sizeof(struct AffectedCarrierFreqCombNR),
+       offsetof(struct AffectedCarrierFreqCombNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombNR = {
+       "AffectedCarrierFreqCombNR",
+       "AffectedCarrierFreqCombNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_AffectedCarrierFreqCombNR_tags_1,
+       sizeof(asn_DEF_AffectedCarrierFreqCombNR_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombNR_tags_1[0]), /* 1 */
+       asn_DEF_AffectedCarrierFreqCombNR_tags_1,       /* Same as above */
+       sizeof(asn_DEF_AffectedCarrierFreqCombNR_tags_1)
+               /sizeof(asn_DEF_AffectedCarrierFreqCombNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_AffectedCarrierFreqCombNR_constr_1, &asn_PER_type_AffectedCarrierFreqCombNR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_AffectedCarrierFreqCombNR_1,
+       1,      /* Single element */
+       &asn_SPC_AffectedCarrierFreqCombNR_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AffectedCarrierFreqCombNR.h b/src/codec_utils/RRC/AffectedCarrierFreqCombNR.h
new file mode 100644 (file)
index 0000000..de33f8e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AffectedCarrierFreqCombNR_H_
+#define        _AffectedCarrierFreqCombNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* AffectedCarrierFreqCombNR */
+typedef struct AffectedCarrierFreqCombNR {
+       A_SEQUENCE_OF(ARFCN_ValueNR_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} AffectedCarrierFreqCombNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_AffectedCarrierFreqCombNR;
+extern asn_SET_OF_specifics_t asn_SPC_AffectedCarrierFreqCombNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_AffectedCarrierFreqCombNR_1[1];
+extern asn_per_constraints_t asn_PER_type_AffectedCarrierFreqCombNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AffectedCarrierFreqCombNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/AggregatedBandwidth.c b/src/codec_utils/RRC/AggregatedBandwidth.c
new file mode 100644 (file)
index 0000000..2864f90
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "AggregatedBandwidth.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_AggregatedBandwidth_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_AggregatedBandwidth_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_AggregatedBandwidth_value2enum_1[] = {
+       { 0,    5,      "mhz50" },
+       { 1,    6,      "mhz100" },
+       { 2,    6,      "mhz150" },
+       { 3,    6,      "mhz200" },
+       { 4,    6,      "mhz250" },
+       { 5,    6,      "mhz300" },
+       { 6,    6,      "mhz350" },
+       { 7,    6,      "mhz400" },
+       { 8,    6,      "mhz450" },
+       { 9,    6,      "mhz500" },
+       { 10,   6,      "mhz550" },
+       { 11,   6,      "mhz600" },
+       { 12,   6,      "mhz650" },
+       { 13,   6,      "mhz700" },
+       { 14,   6,      "mhz750" },
+       { 15,   6,      "mhz800" }
+};
+static const unsigned int asn_MAP_AggregatedBandwidth_enum2value_1[] = {
+       1,      /* mhz100(1) */
+       2,      /* mhz150(2) */
+       3,      /* mhz200(3) */
+       4,      /* mhz250(4) */
+       5,      /* mhz300(5) */
+       6,      /* mhz350(6) */
+       7,      /* mhz400(7) */
+       8,      /* mhz450(8) */
+       0,      /* mhz50(0) */
+       9,      /* mhz500(9) */
+       10,     /* mhz550(10) */
+       11,     /* mhz600(11) */
+       12,     /* mhz650(12) */
+       13,     /* mhz700(13) */
+       14,     /* mhz750(14) */
+       15      /* mhz800(15) */
+};
+const asn_INTEGER_specifics_t asn_SPC_AggregatedBandwidth_specs_1 = {
+       asn_MAP_AggregatedBandwidth_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_AggregatedBandwidth_enum2value_1,       /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_AggregatedBandwidth_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_AggregatedBandwidth = {
+       "AggregatedBandwidth",
+       "AggregatedBandwidth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_AggregatedBandwidth_tags_1,
+       sizeof(asn_DEF_AggregatedBandwidth_tags_1)
+               /sizeof(asn_DEF_AggregatedBandwidth_tags_1[0]), /* 1 */
+       asn_DEF_AggregatedBandwidth_tags_1,     /* Same as above */
+       sizeof(asn_DEF_AggregatedBandwidth_tags_1)
+               /sizeof(asn_DEF_AggregatedBandwidth_tags_1[0]), /* 1 */
+       { &asn_OER_type_AggregatedBandwidth_constr_1, &asn_PER_type_AggregatedBandwidth_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_AggregatedBandwidth_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/AggregatedBandwidth.h b/src/codec_utils/RRC/AggregatedBandwidth.h
new file mode 100644 (file)
index 0000000..766e30b
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _AggregatedBandwidth_H_
+#define        _AggregatedBandwidth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum AggregatedBandwidth {
+       AggregatedBandwidth_mhz50       = 0,
+       AggregatedBandwidth_mhz100      = 1,
+       AggregatedBandwidth_mhz150      = 2,
+       AggregatedBandwidth_mhz200      = 3,
+       AggregatedBandwidth_mhz250      = 4,
+       AggregatedBandwidth_mhz300      = 5,
+       AggregatedBandwidth_mhz350      = 6,
+       AggregatedBandwidth_mhz400      = 7,
+       AggregatedBandwidth_mhz450      = 8,
+       AggregatedBandwidth_mhz500      = 9,
+       AggregatedBandwidth_mhz550      = 10,
+       AggregatedBandwidth_mhz600      = 11,
+       AggregatedBandwidth_mhz650      = 12,
+       AggregatedBandwidth_mhz700      = 13,
+       AggregatedBandwidth_mhz750      = 14,
+       AggregatedBandwidth_mhz800      = 15
+} e_AggregatedBandwidth;
+
+/* AggregatedBandwidth */
+typedef long    AggregatedBandwidth_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_AggregatedBandwidth_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_AggregatedBandwidth;
+extern const asn_INTEGER_specifics_t asn_SPC_AggregatedBandwidth_specs_1;
+asn_struct_free_f AggregatedBandwidth_free;
+asn_struct_print_f AggregatedBandwidth_print;
+asn_constr_check_f AggregatedBandwidth_constraint;
+ber_type_decoder_f AggregatedBandwidth_decode_ber;
+der_type_encoder_f AggregatedBandwidth_encode_der;
+xer_type_decoder_f AggregatedBandwidth_decode_xer;
+xer_type_encoder_f AggregatedBandwidth_encode_xer;
+oer_type_decoder_f AggregatedBandwidth_decode_oer;
+oer_type_encoder_f AggregatedBandwidth_encode_oer;
+per_type_decoder_f AggregatedBandwidth_decode_uper;
+per_type_encoder_f AggregatedBandwidth_encode_uper;
+per_type_decoder_f AggregatedBandwidth_decode_aper;
+per_type_encoder_f AggregatedBandwidth_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _AggregatedBandwidth_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Alpha.c b/src/codec_utils/RRC/Alpha.c
new file mode 100644 (file)
index 0000000..a520cbe
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Alpha.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_Alpha_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_Alpha_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Alpha_value2enum_1[] = {
+       { 0,    6,      "alpha0" },
+       { 1,    7,      "alpha04" },
+       { 2,    7,      "alpha05" },
+       { 3,    7,      "alpha06" },
+       { 4,    7,      "alpha07" },
+       { 5,    7,      "alpha08" },
+       { 6,    7,      "alpha09" },
+       { 7,    6,      "alpha1" }
+};
+static const unsigned int asn_MAP_Alpha_enum2value_1[] = {
+       0,      /* alpha0(0) */
+       1,      /* alpha04(1) */
+       2,      /* alpha05(2) */
+       3,      /* alpha06(3) */
+       4,      /* alpha07(4) */
+       5,      /* alpha08(5) */
+       6,      /* alpha09(6) */
+       7       /* alpha1(7) */
+};
+const asn_INTEGER_specifics_t asn_SPC_Alpha_specs_1 = {
+       asn_MAP_Alpha_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_Alpha_enum2value_1,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_Alpha_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Alpha = {
+       "Alpha",
+       "Alpha",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_Alpha_tags_1,
+       sizeof(asn_DEF_Alpha_tags_1)
+               /sizeof(asn_DEF_Alpha_tags_1[0]), /* 1 */
+       asn_DEF_Alpha_tags_1,   /* Same as above */
+       sizeof(asn_DEF_Alpha_tags_1)
+               /sizeof(asn_DEF_Alpha_tags_1[0]), /* 1 */
+       { &asn_OER_type_Alpha_constr_1, &asn_PER_type_Alpha_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_Alpha_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Alpha.h b/src/codec_utils/RRC/Alpha.h
new file mode 100644 (file)
index 0000000..551feec
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Alpha_H_
+#define        _Alpha_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Alpha {
+       Alpha_alpha0    = 0,
+       Alpha_alpha04   = 1,
+       Alpha_alpha05   = 2,
+       Alpha_alpha06   = 3,
+       Alpha_alpha07   = 4,
+       Alpha_alpha08   = 5,
+       Alpha_alpha09   = 6,
+       Alpha_alpha1    = 7
+} e_Alpha;
+
+/* Alpha */
+typedef long    Alpha_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_Alpha_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_Alpha;
+extern const asn_INTEGER_specifics_t asn_SPC_Alpha_specs_1;
+asn_struct_free_f Alpha_free;
+asn_struct_print_f Alpha_print;
+asn_constr_check_f Alpha_constraint;
+ber_type_decoder_f Alpha_decode_ber;
+der_type_encoder_f Alpha_encode_der;
+xer_type_decoder_f Alpha_decode_xer;
+xer_type_encoder_f Alpha_encode_xer;
+oer_type_decoder_f Alpha_decode_oer;
+oer_type_encoder_f Alpha_encode_oer;
+per_type_decoder_f Alpha_decode_uper;
+per_type_encoder_f Alpha_encode_uper;
+per_type_decoder_f Alpha_decode_aper;
+per_type_encoder_f Alpha_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Alpha_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BCCH-BCH-Message.c b/src/codec_utils/RRC/BCCH-BCH-Message.c
new file mode 100644 (file)
index 0000000..b03d379
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BCCH-BCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_BCCH_BCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BCCH_BCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_BCCH_BCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BCCH_BCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BCCH_BCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_BCCH_BCH_Message_specs_1 = {
+       sizeof(struct BCCH_BCH_Message),
+       offsetof(struct BCCH_BCH_Message, _asn_ctx),
+       asn_MAP_BCCH_BCH_Message_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_BCCH_BCH_Message = {
+       "BCCH-BCH-Message",
+       "BCCH-BCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BCCH_BCH_Message_tags_1,
+       sizeof(asn_DEF_BCCH_BCH_Message_tags_1)
+               /sizeof(asn_DEF_BCCH_BCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_BCCH_BCH_Message_tags_1,        /* Same as above */
+       sizeof(asn_DEF_BCCH_BCH_Message_tags_1)
+               /sizeof(asn_DEF_BCCH_BCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BCCH_BCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_BCCH_BCH_Message_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BCCH-BCH-Message.h b/src/codec_utils/RRC/BCCH-BCH-Message.h
new file mode 100644 (file)
index 0000000..882ef5e
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BCCH_BCH_Message_H_
+#define        _BCCH_BCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BCCH-BCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BCCH-BCH-Message */
+typedef struct BCCH_BCH_Message {
+       BCCH_BCH_MessageType_t   message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BCCH_BCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BCCH_BCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BCCH-BCH-MessageType.c b/src/codec_utils/RRC/BCCH-BCH-MessageType.c
new file mode 100644 (file)
index 0000000..7723650
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BCCH-BCH-MessageType.h"
+
+#include "MIB.h"
+static asn_oer_constraints_t asn_OER_type_BCCH_BCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_BCCH_BCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_3 = {
+       sizeof(struct BCCH_BCH_MessageType__messageClassExtension),
+       offsetof(struct BCCH_BCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_3 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_3,
+       sizeof(asn_DEF_messageClassExtension_tags_3)
+               /sizeof(asn_DEF_messageClassExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_3,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_3)
+               /sizeof(asn_DEF_messageClassExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BCCH_BCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct BCCH_BCH_MessageType, choice.mib),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mib"
+               },
+       { ATF_POINTER, 0, offsetof(struct BCCH_BCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_BCCH_BCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mib */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_BCCH_BCH_MessageType_specs_1 = {
+       sizeof(struct BCCH_BCH_MessageType),
+       offsetof(struct BCCH_BCH_MessageType, _asn_ctx),
+       offsetof(struct BCCH_BCH_MessageType, present),
+       sizeof(((struct BCCH_BCH_MessageType *)0)->present),
+       asn_MAP_BCCH_BCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_MessageType = {
+       "BCCH-BCH-MessageType",
+       "BCCH-BCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_BCCH_BCH_MessageType_constr_1, &asn_PER_type_BCCH_BCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_BCCH_BCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_BCCH_BCH_MessageType_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BCCH-BCH-MessageType.h b/src/codec_utils/RRC/BCCH-BCH-MessageType.h
new file mode 100644 (file)
index 0000000..c5e1fa6
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BCCH_BCH_MessageType_H_
+#define        _BCCH_BCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BCCH_BCH_MessageType_PR {
+       BCCH_BCH_MessageType_PR_NOTHING,        /* No components present */
+       BCCH_BCH_MessageType_PR_mib,
+       BCCH_BCH_MessageType_PR_messageClassExtension
+} BCCH_BCH_MessageType_PR;
+
+/* Forward declarations */
+struct MIB;
+
+/* BCCH-BCH-MessageType */
+typedef struct BCCH_BCH_MessageType {
+       BCCH_BCH_MessageType_PR present;
+       union BCCH_BCH_MessageType_u {
+               struct MIB      *mib;
+               struct BCCH_BCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BCCH_BCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_BCCH_BCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_BCCH_BCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_BCCH_BCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BCCH_BCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BCCH-Config.c b/src/codec_utils/RRC/BCCH-Config.c
new file mode 100644 (file)
index 0000000..f25a056
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BCCH-Config.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_modificationPeriodCoeff_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_modificationPeriodCoeff_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_modificationPeriodCoeff_value2enum_2[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" },
+       { 3,    3,      "n16" }
+};
+static const unsigned int asn_MAP_modificationPeriodCoeff_enum2value_2[] = {
+       3,      /* n16(3) */
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_modificationPeriodCoeff_specs_2 = {
+       asn_MAP_modificationPeriodCoeff_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_modificationPeriodCoeff_enum2value_2,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_modificationPeriodCoeff_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_modificationPeriodCoeff_2 = {
+       "modificationPeriodCoeff",
+       "modificationPeriodCoeff",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_modificationPeriodCoeff_tags_2,
+       sizeof(asn_DEF_modificationPeriodCoeff_tags_2)
+               /sizeof(asn_DEF_modificationPeriodCoeff_tags_2[0]) - 1, /* 1 */
+       asn_DEF_modificationPeriodCoeff_tags_2, /* Same as above */
+       sizeof(asn_DEF_modificationPeriodCoeff_tags_2)
+               /sizeof(asn_DEF_modificationPeriodCoeff_tags_2[0]), /* 2 */
+       { &asn_OER_type_modificationPeriodCoeff_constr_2, &asn_PER_type_modificationPeriodCoeff_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_modificationPeriodCoeff_specs_2        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BCCH_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BCCH_Config, modificationPeriodCoeff),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_modificationPeriodCoeff_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "modificationPeriodCoeff"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BCCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BCCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* modificationPeriodCoeff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BCCH_Config_specs_1 = {
+       sizeof(struct BCCH_Config),
+       offsetof(struct BCCH_Config, _asn_ctx),
+       asn_MAP_BCCH_Config_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_BCCH_Config = {
+       "BCCH-Config",
+       "BCCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BCCH_Config_tags_1,
+       sizeof(asn_DEF_BCCH_Config_tags_1)
+               /sizeof(asn_DEF_BCCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_BCCH_Config_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BCCH_Config_tags_1)
+               /sizeof(asn_DEF_BCCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BCCH_Config_1,
+       1,      /* Elements count */
+       &asn_SPC_BCCH_Config_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BCCH-Config.h b/src/codec_utils/RRC/BCCH-Config.h
new file mode 100644 (file)
index 0000000..1144d0e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BCCH_Config_H_
+#define        _BCCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BCCH_Config__modificationPeriodCoeff {
+       BCCH_Config__modificationPeriodCoeff_n2 = 0,
+       BCCH_Config__modificationPeriodCoeff_n4 = 1,
+       BCCH_Config__modificationPeriodCoeff_n8 = 2,
+       BCCH_Config__modificationPeriodCoeff_n16        = 3
+} e_BCCH_Config__modificationPeriodCoeff;
+
+/* BCCH-Config */
+typedef struct BCCH_Config {
+       long     modificationPeriodCoeff;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BCCH_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_modificationPeriodCoeff_2;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BCCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_BCCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_BCCH_Config_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BCCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BCCH-DL-SCH-Message.c b/src/codec_utils/RRC/BCCH-DL-SCH-Message.c
new file mode 100644 (file)
index 0000000..a1c6fc4
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BCCH-DL-SCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_BCCH_DL_SCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BCCH_DL_SCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_BCCH_DL_SCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BCCH_DL_SCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BCCH_DL_SCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_BCCH_DL_SCH_Message_specs_1 = {
+       sizeof(struct BCCH_DL_SCH_Message),
+       offsetof(struct BCCH_DL_SCH_Message, _asn_ctx),
+       asn_MAP_BCCH_DL_SCH_Message_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_BCCH_DL_SCH_Message = {
+       "BCCH-DL-SCH-Message",
+       "BCCH-DL-SCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BCCH_DL_SCH_Message_tags_1,
+       sizeof(asn_DEF_BCCH_DL_SCH_Message_tags_1)
+               /sizeof(asn_DEF_BCCH_DL_SCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_BCCH_DL_SCH_Message_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BCCH_DL_SCH_Message_tags_1)
+               /sizeof(asn_DEF_BCCH_DL_SCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BCCH_DL_SCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_BCCH_DL_SCH_Message_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BCCH-DL-SCH-Message.h b/src/codec_utils/RRC/BCCH-DL-SCH-Message.h
new file mode 100644 (file)
index 0000000..26db9fb
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BCCH_DL_SCH_Message_H_
+#define        _BCCH_DL_SCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BCCH-DL-SCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BCCH-DL-SCH-Message */
+typedef struct BCCH_DL_SCH_Message {
+       BCCH_DL_SCH_MessageType_t        message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BCCH_DL_SCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BCCH_DL_SCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BCCH_DL_SCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BCCH-DL-SCH-MessageType.c b/src/codec_utils/RRC/BCCH-DL-SCH-MessageType.c
new file mode 100644 (file)
index 0000000..a82a425
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BCCH-DL-SCH-MessageType.h"
+
+#include "SystemInformation.h"
+#include "SIB1.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_BCCH_DL_SCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_BCCH_DL_SCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct BCCH_DL_SCH_MessageType__c1, choice.systemInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SystemInformation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "systemInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct BCCH_DL_SCH_MessageType__c1, choice.systemInformationBlockType1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "systemInformationBlockType1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* systemInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* systemInformationBlockType1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct BCCH_DL_SCH_MessageType__c1),
+       offsetof(struct BCCH_DL_SCH_MessageType__c1, _asn_ctx),
+       offsetof(struct BCCH_DL_SCH_MessageType__c1, present),
+       sizeof(((struct BCCH_DL_SCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       2,      /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_5 = {
+       sizeof(struct BCCH_DL_SCH_MessageType__messageClassExtension),
+       offsetof(struct BCCH_DL_SCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_5 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_5,
+       sizeof(asn_DEF_messageClassExtension_tags_5)
+               /sizeof(asn_DEF_messageClassExtension_tags_5[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_5,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_5)
+               /sizeof(asn_DEF_messageClassExtension_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_5  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BCCH_DL_SCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct BCCH_DL_SCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct BCCH_DL_SCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_BCCH_DL_SCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_BCCH_DL_SCH_MessageType_specs_1 = {
+       sizeof(struct BCCH_DL_SCH_MessageType),
+       offsetof(struct BCCH_DL_SCH_MessageType, _asn_ctx),
+       offsetof(struct BCCH_DL_SCH_MessageType, present),
+       sizeof(((struct BCCH_DL_SCH_MessageType *)0)->present),
+       asn_MAP_BCCH_DL_SCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_BCCH_DL_SCH_MessageType = {
+       "BCCH-DL-SCH-MessageType",
+       "BCCH-DL-SCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_BCCH_DL_SCH_MessageType_constr_1, &asn_PER_type_BCCH_DL_SCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_BCCH_DL_SCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_BCCH_DL_SCH_MessageType_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BCCH-DL-SCH-MessageType.h b/src/codec_utils/RRC/BCCH-DL-SCH-MessageType.h
new file mode 100644 (file)
index 0000000..7d07ba6
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BCCH_DL_SCH_MessageType_H_
+#define        _BCCH_DL_SCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BCCH_DL_SCH_MessageType_PR {
+       BCCH_DL_SCH_MessageType_PR_NOTHING,     /* No components present */
+       BCCH_DL_SCH_MessageType_PR_c1,
+       BCCH_DL_SCH_MessageType_PR_messageClassExtension
+} BCCH_DL_SCH_MessageType_PR;
+typedef enum BCCH_DL_SCH_MessageType__c1_PR {
+       BCCH_DL_SCH_MessageType__c1_PR_NOTHING, /* No components present */
+       BCCH_DL_SCH_MessageType__c1_PR_systemInformation,
+       BCCH_DL_SCH_MessageType__c1_PR_systemInformationBlockType1
+} BCCH_DL_SCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct SystemInformation;
+struct SIB1;
+
+/* BCCH-DL-SCH-MessageType */
+typedef struct BCCH_DL_SCH_MessageType {
+       BCCH_DL_SCH_MessageType_PR present;
+       union BCCH_DL_SCH_MessageType_u {
+               struct BCCH_DL_SCH_MessageType__c1 {
+                       BCCH_DL_SCH_MessageType__c1_PR present;
+                       union BCCH_DL_SCH_MessageType__c1_u {
+                               struct SystemInformation        *systemInformation;
+                               struct SIB1     *systemInformationBlockType1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct BCCH_DL_SCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BCCH_DL_SCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BCCH_DL_SCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_BCCH_DL_SCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_BCCH_DL_SCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_BCCH_DL_SCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BCCH_DL_SCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BFR-CSIRS-Resource.c b/src/codec_utils/RRC/BFR-CSIRS-Resource.c
new file mode 100644 (file)
index 0000000..ef3763b
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BFR-CSIRS-Resource.h"
+
+static int
+memb_NativeInteger_constraint_3(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 <= 511)) {
+               /* 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_ra_OccasionList_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 <= 64)) {
+               /* 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_ra_PreambleIndex_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 >= 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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_Member_constr_4 CC_NOTUSED = {
+       { 2, 1 }        /* (0..511) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  511 }      /* (0..511) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_PreambleIndex_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_PreambleIndex_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ra_OccasionList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_4, &asn_PER_memb_Member_constr_4,  memb_NativeInteger_constraint_3 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ra_OccasionList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ra_OccasionList_specs_3 = {
+       sizeof(struct BFR_CSIRS_Resource__ra_OccasionList),
+       offsetof(struct BFR_CSIRS_Resource__ra_OccasionList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ra_OccasionList_3 = {
+       "ra-OccasionList",
+       "ra-OccasionList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ra_OccasionList_tags_3,
+       sizeof(asn_DEF_ra_OccasionList_tags_3)
+               /sizeof(asn_DEF_ra_OccasionList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ra_OccasionList_tags_3, /* Same as above */
+       sizeof(asn_DEF_ra_OccasionList_tags_3)
+               /sizeof(asn_DEF_ra_OccasionList_tags_3[0]), /* 2 */
+       { &asn_OER_type_ra_OccasionList_constr_3, &asn_PER_type_ra_OccasionList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ra_OccasionList_3,
+       1,      /* Single element */
+       &asn_SPC_ra_OccasionList_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BFR_CSIRS_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BFR_CSIRS_Resource, csi_RS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS"
+               },
+       { ATF_POINTER, 2, offsetof(struct BFR_CSIRS_Resource, ra_OccasionList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ra_OccasionList_3,
+               0,
+               { &asn_OER_memb_ra_OccasionList_constr_3, &asn_PER_memb_ra_OccasionList_constr_3,  memb_ra_OccasionList_constraint_1 },
+               0, 0, /* No default value */
+               "ra-OccasionList"
+               },
+       { ATF_POINTER, 1, offsetof(struct BFR_CSIRS_Resource, ra_PreambleIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_PreambleIndex_constr_5, &asn_PER_memb_ra_PreambleIndex_constr_5,  memb_ra_PreambleIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-PreambleIndex"
+               },
+};
+static const int asn_MAP_BFR_CSIRS_Resource_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BFR_CSIRS_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BFR_CSIRS_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ra-OccasionList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ra-PreambleIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BFR_CSIRS_Resource_specs_1 = {
+       sizeof(struct BFR_CSIRS_Resource),
+       offsetof(struct BFR_CSIRS_Resource, _asn_ctx),
+       asn_MAP_BFR_CSIRS_Resource_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BFR_CSIRS_Resource_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BFR_CSIRS_Resource = {
+       "BFR-CSIRS-Resource",
+       "BFR-CSIRS-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BFR_CSIRS_Resource_tags_1,
+       sizeof(asn_DEF_BFR_CSIRS_Resource_tags_1)
+               /sizeof(asn_DEF_BFR_CSIRS_Resource_tags_1[0]), /* 1 */
+       asn_DEF_BFR_CSIRS_Resource_tags_1,      /* Same as above */
+       sizeof(asn_DEF_BFR_CSIRS_Resource_tags_1)
+               /sizeof(asn_DEF_BFR_CSIRS_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BFR_CSIRS_Resource_1,
+       3,      /* Elements count */
+       &asn_SPC_BFR_CSIRS_Resource_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BFR-CSIRS-Resource.h b/src/codec_utils/RRC/BFR-CSIRS-Resource.h
new file mode 100644 (file)
index 0000000..e0e6943
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BFR_CSIRS_Resource_H_
+#define        _BFR_CSIRS_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NZP-CSI-RS-ResourceId.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BFR-CSIRS-Resource */
+typedef struct BFR_CSIRS_Resource {
+       NZP_CSI_RS_ResourceId_t  csi_RS;
+       struct BFR_CSIRS_Resource__ra_OccasionList {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ra_OccasionList;
+       long    *ra_PreambleIndex;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BFR_CSIRS_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BFR_CSIRS_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_BFR_CSIRS_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_BFR_CSIRS_Resource_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BFR_CSIRS_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BFR-SSB-Resource.c b/src/codec_utils/RRC/BFR-SSB-Resource.c
new file mode 100644 (file)
index 0000000..1b186df
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BFR-SSB-Resource.h"
+
+static int
+memb_ra_PreambleIndex_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 >= 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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_ra_PreambleIndex_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_PreambleIndex_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BFR_SSB_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BFR_SSB_Resource, ssb),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BFR_SSB_Resource, ra_PreambleIndex),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_PreambleIndex_constr_3, &asn_PER_memb_ra_PreambleIndex_constr_3,  memb_ra_PreambleIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-PreambleIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BFR_SSB_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BFR_SSB_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ra-PreambleIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BFR_SSB_Resource_specs_1 = {
+       sizeof(struct BFR_SSB_Resource),
+       offsetof(struct BFR_SSB_Resource, _asn_ctx),
+       asn_MAP_BFR_SSB_Resource_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_BFR_SSB_Resource = {
+       "BFR-SSB-Resource",
+       "BFR-SSB-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BFR_SSB_Resource_tags_1,
+       sizeof(asn_DEF_BFR_SSB_Resource_tags_1)
+               /sizeof(asn_DEF_BFR_SSB_Resource_tags_1[0]), /* 1 */
+       asn_DEF_BFR_SSB_Resource_tags_1,        /* Same as above */
+       sizeof(asn_DEF_BFR_SSB_Resource_tags_1)
+               /sizeof(asn_DEF_BFR_SSB_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BFR_SSB_Resource_1,
+       2,      /* Elements count */
+       &asn_SPC_BFR_SSB_Resource_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BFR-SSB-Resource.h b/src/codec_utils/RRC/BFR-SSB-Resource.h
new file mode 100644 (file)
index 0000000..c3abbd4
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BFR_SSB_Resource_H_
+#define        _BFR_SSB_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SSB-Index.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BFR-SSB-Resource */
+typedef struct BFR_SSB_Resource {
+       SSB_Index_t      ssb;
+       long     ra_PreambleIndex;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BFR_SSB_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BFR_SSB_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_BFR_SSB_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_BFR_SSB_Resource_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BFR_SSB_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BSR-Config.c b/src/codec_utils/RRC/BSR-Config.c
new file mode 100644 (file)
index 0000000..3d3c2d0
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BSR-Config.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.
+ */
+static asn_oer_constraints_t asn_OER_type_periodicBSR_Timer_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicBSR_Timer_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_retxBSR_Timer_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_retxBSR_Timer_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_logicalChannelSR_DelayTimer_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_logicalChannelSR_DelayTimer_constr_36 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_periodicBSR_Timer_value2enum_2[] = {
+       { 0,    3,      "sf1" },
+       { 1,    3,      "sf5" },
+       { 2,    4,      "sf10" },
+       { 3,    4,      "sf16" },
+       { 4,    4,      "sf20" },
+       { 5,    4,      "sf32" },
+       { 6,    4,      "sf40" },
+       { 7,    4,      "sf64" },
+       { 8,    4,      "sf80" },
+       { 9,    5,      "sf128" },
+       { 10,   5,      "sf160" },
+       { 11,   5,      "sf320" },
+       { 12,   5,      "sf640" },
+       { 13,   6,      "sf1280" },
+       { 14,   6,      "sf2560" },
+       { 15,   8,      "infinity" }
+};
+static const unsigned int asn_MAP_periodicBSR_Timer_enum2value_2[] = {
+       15,     /* infinity(15) */
+       0,      /* sf1(0) */
+       2,      /* sf10(2) */
+       9,      /* sf128(9) */
+       13,     /* sf1280(13) */
+       3,      /* sf16(3) */
+       10,     /* sf160(10) */
+       4,      /* sf20(4) */
+       14,     /* sf2560(14) */
+       5,      /* sf32(5) */
+       11,     /* sf320(11) */
+       6,      /* sf40(6) */
+       1,      /* sf5(1) */
+       7,      /* sf64(7) */
+       12,     /* sf640(12) */
+       8       /* sf80(8) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_periodicBSR_Timer_specs_2 = {
+       asn_MAP_periodicBSR_Timer_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_periodicBSR_Timer_enum2value_2, /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_periodicBSR_Timer_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_periodicBSR_Timer_2 = {
+       "periodicBSR-Timer",
+       "periodicBSR-Timer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_periodicBSR_Timer_tags_2,
+       sizeof(asn_DEF_periodicBSR_Timer_tags_2)
+               /sizeof(asn_DEF_periodicBSR_Timer_tags_2[0]) - 1, /* 1 */
+       asn_DEF_periodicBSR_Timer_tags_2,       /* Same as above */
+       sizeof(asn_DEF_periodicBSR_Timer_tags_2)
+               /sizeof(asn_DEF_periodicBSR_Timer_tags_2[0]), /* 2 */
+       { &asn_OER_type_periodicBSR_Timer_constr_2, &asn_PER_type_periodicBSR_Timer_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_periodicBSR_Timer_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_retxBSR_Timer_value2enum_19[] = {
+       { 0,    4,      "sf10" },
+       { 1,    4,      "sf20" },
+       { 2,    4,      "sf40" },
+       { 3,    4,      "sf80" },
+       { 4,    5,      "sf160" },
+       { 5,    5,      "sf320" },
+       { 6,    5,      "sf640" },
+       { 7,    6,      "sf1280" },
+       { 8,    6,      "sf2560" },
+       { 9,    6,      "sf5120" },
+       { 10,   7,      "sf10240" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_retxBSR_Timer_enum2value_19[] = {
+       0,      /* sf10(0) */
+       10,     /* sf10240(10) */
+       7,      /* sf1280(7) */
+       4,      /* sf160(4) */
+       1,      /* sf20(1) */
+       8,      /* sf2560(8) */
+       5,      /* sf320(5) */
+       2,      /* sf40(2) */
+       9,      /* sf5120(9) */
+       6,      /* sf640(6) */
+       3,      /* sf80(3) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11      /* spare5(11) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_retxBSR_Timer_specs_19 = {
+       asn_MAP_retxBSR_Timer_value2enum_19,    /* "tag" => N; sorted by tag */
+       asn_MAP_retxBSR_Timer_enum2value_19,    /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_retxBSR_Timer_tags_19[] = {
+       (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_retxBSR_Timer_19 = {
+       "retxBSR-Timer",
+       "retxBSR-Timer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_retxBSR_Timer_tags_19,
+       sizeof(asn_DEF_retxBSR_Timer_tags_19)
+               /sizeof(asn_DEF_retxBSR_Timer_tags_19[0]) - 1, /* 1 */
+       asn_DEF_retxBSR_Timer_tags_19,  /* Same as above */
+       sizeof(asn_DEF_retxBSR_Timer_tags_19)
+               /sizeof(asn_DEF_retxBSR_Timer_tags_19[0]), /* 2 */
+       { &asn_OER_type_retxBSR_Timer_constr_19, &asn_PER_type_retxBSR_Timer_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_retxBSR_Timer_specs_19 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_logicalChannelSR_DelayTimer_value2enum_36[] = {
+       { 0,    4,      "sf20" },
+       { 1,    4,      "sf40" },
+       { 2,    4,      "sf64" },
+       { 3,    5,      "sf128" },
+       { 4,    5,      "sf512" },
+       { 5,    6,      "sf1024" },
+       { 6,    6,      "sf2560" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_logicalChannelSR_DelayTimer_enum2value_36[] = {
+       5,      /* sf1024(5) */
+       3,      /* sf128(3) */
+       0,      /* sf20(0) */
+       6,      /* sf2560(6) */
+       1,      /* sf40(1) */
+       4,      /* sf512(4) */
+       2,      /* sf64(2) */
+       7       /* spare1(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_logicalChannelSR_DelayTimer_specs_36 = {
+       asn_MAP_logicalChannelSR_DelayTimer_value2enum_36,      /* "tag" => N; sorted by tag */
+       asn_MAP_logicalChannelSR_DelayTimer_enum2value_36,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_logicalChannelSR_DelayTimer_tags_36[] = {
+       (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_logicalChannelSR_DelayTimer_36 = {
+       "logicalChannelSR-DelayTimer",
+       "logicalChannelSR-DelayTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_logicalChannelSR_DelayTimer_tags_36,
+       sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_36)
+               /sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_36[0]) - 1, /* 1 */
+       asn_DEF_logicalChannelSR_DelayTimer_tags_36,    /* Same as above */
+       sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_36)
+               /sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_36[0]), /* 2 */
+       { &asn_OER_type_logicalChannelSR_DelayTimer_constr_36, &asn_PER_type_logicalChannelSR_DelayTimer_constr_36, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_logicalChannelSR_DelayTimer_specs_36   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BSR_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BSR_Config, periodicBSR_Timer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_periodicBSR_Timer_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicBSR-Timer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BSR_Config, retxBSR_Timer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_retxBSR_Timer_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "retxBSR-Timer"
+               },
+       { ATF_POINTER, 1, offsetof(struct BSR_Config, logicalChannelSR_DelayTimer),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_logicalChannelSR_DelayTimer_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelSR-DelayTimer"
+               },
+};
+static const int asn_MAP_BSR_Config_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_BSR_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BSR_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodicBSR-Timer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* retxBSR-Timer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* logicalChannelSR-DelayTimer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BSR_Config_specs_1 = {
+       sizeof(struct BSR_Config),
+       offsetof(struct BSR_Config, _asn_ctx),
+       asn_MAP_BSR_Config_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BSR_Config_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BSR_Config = {
+       "BSR-Config",
+       "BSR-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BSR_Config_tags_1,
+       sizeof(asn_DEF_BSR_Config_tags_1)
+               /sizeof(asn_DEF_BSR_Config_tags_1[0]), /* 1 */
+       asn_DEF_BSR_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_BSR_Config_tags_1)
+               /sizeof(asn_DEF_BSR_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BSR_Config_1,
+       3,      /* Elements count */
+       &asn_SPC_BSR_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BSR-Config.h b/src/codec_utils/RRC/BSR-Config.h
new file mode 100644 (file)
index 0000000..d6c2d89
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BSR_Config_H_
+#define        _BSR_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BSR_Config__periodicBSR_Timer {
+       BSR_Config__periodicBSR_Timer_sf1       = 0,
+       BSR_Config__periodicBSR_Timer_sf5       = 1,
+       BSR_Config__periodicBSR_Timer_sf10      = 2,
+       BSR_Config__periodicBSR_Timer_sf16      = 3,
+       BSR_Config__periodicBSR_Timer_sf20      = 4,
+       BSR_Config__periodicBSR_Timer_sf32      = 5,
+       BSR_Config__periodicBSR_Timer_sf40      = 6,
+       BSR_Config__periodicBSR_Timer_sf64      = 7,
+       BSR_Config__periodicBSR_Timer_sf80      = 8,
+       BSR_Config__periodicBSR_Timer_sf128     = 9,
+       BSR_Config__periodicBSR_Timer_sf160     = 10,
+       BSR_Config__periodicBSR_Timer_sf320     = 11,
+       BSR_Config__periodicBSR_Timer_sf640     = 12,
+       BSR_Config__periodicBSR_Timer_sf1280    = 13,
+       BSR_Config__periodicBSR_Timer_sf2560    = 14,
+       BSR_Config__periodicBSR_Timer_infinity  = 15
+} e_BSR_Config__periodicBSR_Timer;
+typedef enum BSR_Config__retxBSR_Timer {
+       BSR_Config__retxBSR_Timer_sf10  = 0,
+       BSR_Config__retxBSR_Timer_sf20  = 1,
+       BSR_Config__retxBSR_Timer_sf40  = 2,
+       BSR_Config__retxBSR_Timer_sf80  = 3,
+       BSR_Config__retxBSR_Timer_sf160 = 4,
+       BSR_Config__retxBSR_Timer_sf320 = 5,
+       BSR_Config__retxBSR_Timer_sf640 = 6,
+       BSR_Config__retxBSR_Timer_sf1280        = 7,
+       BSR_Config__retxBSR_Timer_sf2560        = 8,
+       BSR_Config__retxBSR_Timer_sf5120        = 9,
+       BSR_Config__retxBSR_Timer_sf10240       = 10,
+       BSR_Config__retxBSR_Timer_spare5        = 11,
+       BSR_Config__retxBSR_Timer_spare4        = 12,
+       BSR_Config__retxBSR_Timer_spare3        = 13,
+       BSR_Config__retxBSR_Timer_spare2        = 14,
+       BSR_Config__retxBSR_Timer_spare1        = 15
+} e_BSR_Config__retxBSR_Timer;
+typedef enum BSR_Config__logicalChannelSR_DelayTimer {
+       BSR_Config__logicalChannelSR_DelayTimer_sf20    = 0,
+       BSR_Config__logicalChannelSR_DelayTimer_sf40    = 1,
+       BSR_Config__logicalChannelSR_DelayTimer_sf64    = 2,
+       BSR_Config__logicalChannelSR_DelayTimer_sf128   = 3,
+       BSR_Config__logicalChannelSR_DelayTimer_sf512   = 4,
+       BSR_Config__logicalChannelSR_DelayTimer_sf1024  = 5,
+       BSR_Config__logicalChannelSR_DelayTimer_sf2560  = 6,
+       BSR_Config__logicalChannelSR_DelayTimer_spare1  = 7
+} e_BSR_Config__logicalChannelSR_DelayTimer;
+
+/* BSR-Config */
+typedef struct BSR_Config {
+       long     periodicBSR_Timer;
+       long     retxBSR_Timer;
+       long    *logicalChannelSR_DelayTimer;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BSR_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_periodicBSR_Timer_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_retxBSR_Timer_19;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_logicalChannelSR_DelayTimer_36;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BSR_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_BSR_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_BSR_Config_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BSR_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-Downlink.c b/src/codec_utils/RRC/BWP-Downlink.c
new file mode 100644 (file)
index 0000000..ab79dec
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-Downlink.h"
+
+#include "BWP-DownlinkCommon.h"
+#include "BWP-DownlinkDedicated.h"
+asn_TYPE_member_t asn_MBR_BWP_Downlink_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_Downlink, bwp_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Id"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_Downlink, bwp_Common),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_DownlinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Common"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_Downlink, bwp_Dedicated),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_DownlinkDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Dedicated"
+               },
+};
+static const int asn_MAP_BWP_Downlink_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BWP_Downlink_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_Downlink_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bwp-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bwp-Common */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* bwp-Dedicated */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_Downlink_specs_1 = {
+       sizeof(struct BWP_Downlink),
+       offsetof(struct BWP_Downlink, _asn_ctx),
+       asn_MAP_BWP_Downlink_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BWP_Downlink_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_Downlink = {
+       "BWP-Downlink",
+       "BWP-Downlink",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_Downlink_tags_1,
+       sizeof(asn_DEF_BWP_Downlink_tags_1)
+               /sizeof(asn_DEF_BWP_Downlink_tags_1[0]), /* 1 */
+       asn_DEF_BWP_Downlink_tags_1,    /* Same as above */
+       sizeof(asn_DEF_BWP_Downlink_tags_1)
+               /sizeof(asn_DEF_BWP_Downlink_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_Downlink_1,
+       3,      /* Elements count */
+       &asn_SPC_BWP_Downlink_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-Downlink.h b/src/codec_utils/RRC/BWP-Downlink.h
new file mode 100644 (file)
index 0000000..cef0adf
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_Downlink_H_
+#define        _BWP_Downlink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BWP_DownlinkCommon;
+struct BWP_DownlinkDedicated;
+
+/* BWP-Downlink */
+typedef struct BWP_Downlink {
+       BWP_Id_t         bwp_Id;
+       struct BWP_DownlinkCommon       *bwp_Common;    /* OPTIONAL */
+       struct BWP_DownlinkDedicated    *bwp_Dedicated; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_Downlink_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_Downlink;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_Downlink_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_Downlink_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_Downlink_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-DownlinkCommon.c b/src/codec_utils/RRC/BWP-DownlinkCommon.c
new file mode 100644 (file)
index 0000000..d88e7cb
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-DownlinkCommon.h"
+
+#include "PDCCH-ConfigCommon.h"
+#include "PDSCH-ConfigCommon.h"
+static asn_oer_constraints_t asn_OER_type_pdcch_ConfigCommon_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcch_ConfigCommon_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_ConfigCommon_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_ConfigCommon_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcch_ConfigCommon_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCCH_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdcch_ConfigCommon_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdcch_ConfigCommon_specs_3 = {
+       sizeof(struct BWP_DownlinkCommon__pdcch_ConfigCommon),
+       offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, _asn_ctx),
+       offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, present),
+       sizeof(((struct BWP_DownlinkCommon__pdcch_ConfigCommon *)0)->present),
+       asn_MAP_pdcch_ConfigCommon_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdcch_ConfigCommon_3 = {
+       "pdcch-ConfigCommon",
+       "pdcch-ConfigCommon",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdcch_ConfigCommon_constr_3, &asn_PER_type_pdcch_ConfigCommon_constr_3, CHOICE_constraint },
+       asn_MBR_pdcch_ConfigCommon_3,
+       2,      /* Elements count */
+       &asn_SPC_pdcch_ConfigCommon_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdsch_ConfigCommon_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdsch_ConfigCommon_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdsch_ConfigCommon_specs_6 = {
+       sizeof(struct BWP_DownlinkCommon__pdsch_ConfigCommon),
+       offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, _asn_ctx),
+       offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, present),
+       sizeof(((struct BWP_DownlinkCommon__pdsch_ConfigCommon *)0)->present),
+       asn_MAP_pdsch_ConfigCommon_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_ConfigCommon_6 = {
+       "pdsch-ConfigCommon",
+       "pdsch-ConfigCommon",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdsch_ConfigCommon_constr_6, &asn_PER_type_pdsch_ConfigCommon_constr_6, CHOICE_constraint },
+       asn_MBR_pdsch_ConfigCommon_6,
+       2,      /* Elements count */
+       &asn_SPC_pdsch_ConfigCommon_specs_6     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BWP_DownlinkCommon_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon, genericParameters),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "genericParameters"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_DownlinkCommon, pdcch_ConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdcch_ConfigCommon_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-ConfigCommon"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_DownlinkCommon, pdsch_ConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdsch_ConfigCommon_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-ConfigCommon"
+               },
+};
+static const int asn_MAP_BWP_DownlinkCommon_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BWP_DownlinkCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_DownlinkCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* genericParameters */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pdcch-ConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pdsch-ConfigCommon */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkCommon_specs_1 = {
+       sizeof(struct BWP_DownlinkCommon),
+       offsetof(struct BWP_DownlinkCommon, _asn_ctx),
+       asn_MAP_BWP_DownlinkCommon_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BWP_DownlinkCommon_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkCommon = {
+       "BWP-DownlinkCommon",
+       "BWP-DownlinkCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_DownlinkCommon_tags_1,
+       sizeof(asn_DEF_BWP_DownlinkCommon_tags_1)
+               /sizeof(asn_DEF_BWP_DownlinkCommon_tags_1[0]), /* 1 */
+       asn_DEF_BWP_DownlinkCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_BWP_DownlinkCommon_tags_1)
+               /sizeof(asn_DEF_BWP_DownlinkCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_DownlinkCommon_1,
+       3,      /* Elements count */
+       &asn_SPC_BWP_DownlinkCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-DownlinkCommon.h b/src/codec_utils/RRC/BWP-DownlinkCommon.h
new file mode 100644 (file)
index 0000000..227a923
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_DownlinkCommon_H_
+#define        _BWP_DownlinkCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BWP_DownlinkCommon__pdcch_ConfigCommon_PR {
+       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_NOTHING,      /* No components present */
+       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_release,
+       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_setup
+} BWP_DownlinkCommon__pdcch_ConfigCommon_PR;
+typedef enum BWP_DownlinkCommon__pdsch_ConfigCommon_PR {
+       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_NOTHING,      /* No components present */
+       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_release,
+       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup
+} BWP_DownlinkCommon__pdsch_ConfigCommon_PR;
+
+/* Forward declarations */
+struct PDCCH_ConfigCommon;
+struct PDSCH_ConfigCommon;
+
+/* BWP-DownlinkCommon */
+typedef struct BWP_DownlinkCommon {
+       BWP_t    genericParameters;
+       struct BWP_DownlinkCommon__pdcch_ConfigCommon {
+               BWP_DownlinkCommon__pdcch_ConfigCommon_PR present;
+               union BWP_DownlinkCommon__pdcch_ConfigCommon_u {
+                       NULL_t   release;
+                       struct PDCCH_ConfigCommon       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdcch_ConfigCommon;
+       struct BWP_DownlinkCommon__pdsch_ConfigCommon {
+               BWP_DownlinkCommon__pdsch_ConfigCommon_PR present;
+               union BWP_DownlinkCommon__pdsch_ConfigCommon_u {
+                       NULL_t   release;
+                       struct PDSCH_ConfigCommon       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdsch_ConfigCommon;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_DownlinkCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_DownlinkCommon_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_DownlinkCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-DownlinkDedicated.c b/src/codec_utils/RRC/BWP-DownlinkDedicated.c
new file mode 100644 (file)
index 0000000..84a843a
--- /dev/null
@@ -0,0 +1,314 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-DownlinkDedicated.h"
+
+#include "PDCCH-Config.h"
+#include "PDSCH-Config.h"
+#include "SPS-Config.h"
+#include "RadioLinkMonitoringConfig.h"
+static asn_oer_constraints_t asn_OER_type_pdcch_Config_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcch_Config_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_Config_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_Config_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sps_Config_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sps_Config_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_radioLinkMonitoringConfig_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_radioLinkMonitoringConfig_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcch_Config_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkDedicated__pdcch_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkDedicated__pdcch_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdcch_Config_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdcch_Config_specs_2 = {
+       sizeof(struct BWP_DownlinkDedicated__pdcch_Config),
+       offsetof(struct BWP_DownlinkDedicated__pdcch_Config, _asn_ctx),
+       offsetof(struct BWP_DownlinkDedicated__pdcch_Config, present),
+       sizeof(((struct BWP_DownlinkDedicated__pdcch_Config *)0)->present),
+       asn_MAP_pdcch_Config_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdcch_Config_2 = {
+       "pdcch-Config",
+       "pdcch-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdcch_Config_constr_2, &asn_PER_type_pdcch_Config_constr_2, CHOICE_constraint },
+       asn_MBR_pdcch_Config_2,
+       2,      /* Elements count */
+       &asn_SPC_pdcch_Config_specs_2   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdsch_Config_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkDedicated__pdsch_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkDedicated__pdsch_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdsch_Config_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdsch_Config_specs_5 = {
+       sizeof(struct BWP_DownlinkDedicated__pdsch_Config),
+       offsetof(struct BWP_DownlinkDedicated__pdsch_Config, _asn_ctx),
+       offsetof(struct BWP_DownlinkDedicated__pdsch_Config, present),
+       sizeof(((struct BWP_DownlinkDedicated__pdsch_Config *)0)->present),
+       asn_MAP_pdsch_Config_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_Config_5 = {
+       "pdsch-Config",
+       "pdsch-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdsch_Config_constr_5, &asn_PER_type_pdsch_Config_constr_5, CHOICE_constraint },
+       asn_MBR_pdsch_Config_5,
+       2,      /* Elements count */
+       &asn_SPC_pdsch_Config_specs_5   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sps_Config_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkDedicated__sps_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkDedicated__sps_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SPS_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_sps_Config_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_sps_Config_specs_8 = {
+       sizeof(struct BWP_DownlinkDedicated__sps_Config),
+       offsetof(struct BWP_DownlinkDedicated__sps_Config, _asn_ctx),
+       offsetof(struct BWP_DownlinkDedicated__sps_Config, present),
+       sizeof(((struct BWP_DownlinkDedicated__sps_Config *)0)->present),
+       asn_MAP_sps_Config_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sps_Config_8 = {
+       "sps-Config",
+       "sps-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_sps_Config_constr_8, &asn_PER_type_sps_Config_constr_8, CHOICE_constraint },
+       asn_MBR_sps_Config_8,
+       2,      /* Elements count */
+       &asn_SPC_sps_Config_specs_8     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_radioLinkMonitoringConfig_11[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkDedicated__radioLinkMonitoringConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkDedicated__radioLinkMonitoringConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RadioLinkMonitoringConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_radioLinkMonitoringConfig_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_radioLinkMonitoringConfig_specs_11 = {
+       sizeof(struct BWP_DownlinkDedicated__radioLinkMonitoringConfig),
+       offsetof(struct BWP_DownlinkDedicated__radioLinkMonitoringConfig, _asn_ctx),
+       offsetof(struct BWP_DownlinkDedicated__radioLinkMonitoringConfig, present),
+       sizeof(((struct BWP_DownlinkDedicated__radioLinkMonitoringConfig *)0)->present),
+       asn_MAP_radioLinkMonitoringConfig_tag2el_11,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_radioLinkMonitoringConfig_11 = {
+       "radioLinkMonitoringConfig",
+       "radioLinkMonitoringConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_radioLinkMonitoringConfig_constr_11, &asn_PER_type_radioLinkMonitoringConfig_constr_11, CHOICE_constraint },
+       asn_MBR_radioLinkMonitoringConfig_11,
+       2,      /* Elements count */
+       &asn_SPC_radioLinkMonitoringConfig_specs_11     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BWP_DownlinkDedicated_1[] = {
+       { ATF_POINTER, 4, offsetof(struct BWP_DownlinkDedicated, pdcch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdcch_Config_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-Config"
+               },
+       { ATF_POINTER, 3, offsetof(struct BWP_DownlinkDedicated, pdsch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdsch_Config_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-Config"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_DownlinkDedicated, sps_Config),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_sps_Config_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sps-Config"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_DownlinkDedicated, radioLinkMonitoringConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_radioLinkMonitoringConfig_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioLinkMonitoringConfig"
+               },
+};
+static const int asn_MAP_BWP_DownlinkDedicated_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_BWP_DownlinkDedicated_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_DownlinkDedicated_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pdcch-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pdsch-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sps-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* radioLinkMonitoringConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkDedicated_specs_1 = {
+       sizeof(struct BWP_DownlinkDedicated),
+       offsetof(struct BWP_DownlinkDedicated, _asn_ctx),
+       asn_MAP_BWP_DownlinkDedicated_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_BWP_DownlinkDedicated_oms_1,    /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkDedicated = {
+       "BWP-DownlinkDedicated",
+       "BWP-DownlinkDedicated",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_DownlinkDedicated_tags_1,
+       sizeof(asn_DEF_BWP_DownlinkDedicated_tags_1)
+               /sizeof(asn_DEF_BWP_DownlinkDedicated_tags_1[0]), /* 1 */
+       asn_DEF_BWP_DownlinkDedicated_tags_1,   /* Same as above */
+       sizeof(asn_DEF_BWP_DownlinkDedicated_tags_1)
+               /sizeof(asn_DEF_BWP_DownlinkDedicated_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_DownlinkDedicated_1,
+       4,      /* Elements count */
+       &asn_SPC_BWP_DownlinkDedicated_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-DownlinkDedicated.h b/src/codec_utils/RRC/BWP-DownlinkDedicated.h
new file mode 100644 (file)
index 0000000..77f9b41
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_DownlinkDedicated_H_
+#define        _BWP_DownlinkDedicated_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BWP_DownlinkDedicated__pdcch_Config_PR {
+       BWP_DownlinkDedicated__pdcch_Config_PR_NOTHING, /* No components present */
+       BWP_DownlinkDedicated__pdcch_Config_PR_release,
+       BWP_DownlinkDedicated__pdcch_Config_PR_setup
+} BWP_DownlinkDedicated__pdcch_Config_PR;
+typedef enum BWP_DownlinkDedicated__pdsch_Config_PR {
+       BWP_DownlinkDedicated__pdsch_Config_PR_NOTHING, /* No components present */
+       BWP_DownlinkDedicated__pdsch_Config_PR_release,
+       BWP_DownlinkDedicated__pdsch_Config_PR_setup
+} BWP_DownlinkDedicated__pdsch_Config_PR;
+typedef enum BWP_DownlinkDedicated__sps_Config_PR {
+       BWP_DownlinkDedicated__sps_Config_PR_NOTHING,   /* No components present */
+       BWP_DownlinkDedicated__sps_Config_PR_release,
+       BWP_DownlinkDedicated__sps_Config_PR_setup
+} BWP_DownlinkDedicated__sps_Config_PR;
+typedef enum BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR {
+       BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR_NOTHING,    /* No components present */
+       BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR_release,
+       BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR_setup
+} BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR;
+
+/* Forward declarations */
+struct PDCCH_Config;
+struct PDSCH_Config;
+struct SPS_Config;
+struct RadioLinkMonitoringConfig;
+
+/* BWP-DownlinkDedicated */
+typedef struct BWP_DownlinkDedicated {
+       struct BWP_DownlinkDedicated__pdcch_Config {
+               BWP_DownlinkDedicated__pdcch_Config_PR present;
+               union BWP_DownlinkDedicated__pdcch_Config_u {
+                       NULL_t   release;
+                       struct PDCCH_Config     *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdcch_Config;
+       struct BWP_DownlinkDedicated__pdsch_Config {
+               BWP_DownlinkDedicated__pdsch_Config_PR present;
+               union BWP_DownlinkDedicated__pdsch_Config_u {
+                       NULL_t   release;
+                       struct PDSCH_Config     *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdsch_Config;
+       struct BWP_DownlinkDedicated__sps_Config {
+               BWP_DownlinkDedicated__sps_Config_PR present;
+               union BWP_DownlinkDedicated__sps_Config_u {
+                       NULL_t   release;
+                       struct SPS_Config       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sps_Config;
+       struct BWP_DownlinkDedicated__radioLinkMonitoringConfig {
+               BWP_DownlinkDedicated__radioLinkMonitoringConfig_PR present;
+               union BWP_DownlinkDedicated__radioLinkMonitoringConfig_u {
+                       NULL_t   release;
+                       struct RadioLinkMonitoringConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *radioLinkMonitoringConfig;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_DownlinkDedicated_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkDedicated;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkDedicated_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_DownlinkDedicated_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_DownlinkDedicated_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-Id.c b/src/codec_utils/RRC/BWP-Id.c
new file mode 100644 (file)
index 0000000..0400a8e
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-Id.h"
+
+int
+BWP_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 <= 4)) {
+               /* 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_BWP_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+asn_per_constraints_t asn_PER_type_BWP_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_BWP_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_Id = {
+       "BWP-Id",
+       "BWP-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_BWP_Id_tags_1,
+       sizeof(asn_DEF_BWP_Id_tags_1)
+               /sizeof(asn_DEF_BWP_Id_tags_1[0]), /* 1 */
+       asn_DEF_BWP_Id_tags_1,  /* Same as above */
+       sizeof(asn_DEF_BWP_Id_tags_1)
+               /sizeof(asn_DEF_BWP_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_BWP_Id_constr_1, &asn_PER_type_BWP_Id_constr_1, BWP_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/BWP-Id.h b/src/codec_utils/RRC/BWP-Id.h
new file mode 100644 (file)
index 0000000..fe2db7c
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_Id_H_
+#define        _BWP_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BWP-Id */
+typedef long    BWP_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_BWP_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_BWP_Id;
+asn_struct_free_f BWP_Id_free;
+asn_struct_print_f BWP_Id_print;
+asn_constr_check_f BWP_Id_constraint;
+ber_type_decoder_f BWP_Id_decode_ber;
+der_type_encoder_f BWP_Id_encode_der;
+xer_type_decoder_f BWP_Id_decode_xer;
+xer_type_encoder_f BWP_Id_encode_xer;
+oer_type_decoder_f BWP_Id_decode_oer;
+oer_type_encoder_f BWP_Id_encode_oer;
+per_type_decoder_f BWP_Id_decode_uper;
+per_type_encoder_f BWP_Id_encode_uper;
+per_type_decoder_f BWP_Id_decode_aper;
+per_type_encoder_f BWP_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-Uplink.c b/src/codec_utils/RRC/BWP-Uplink.c
new file mode 100644 (file)
index 0000000..a929c6e
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-Uplink.h"
+
+#include "BWP-UplinkCommon.h"
+#include "BWP-UplinkDedicated.h"
+asn_TYPE_member_t asn_MBR_BWP_Uplink_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_Uplink, bwp_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Id"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_Uplink, bwp_Common),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_UplinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Common"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_Uplink, bwp_Dedicated),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_UplinkDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Dedicated"
+               },
+};
+static const int asn_MAP_BWP_Uplink_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_BWP_Uplink_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_Uplink_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bwp-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bwp-Common */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* bwp-Dedicated */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_Uplink_specs_1 = {
+       sizeof(struct BWP_Uplink),
+       offsetof(struct BWP_Uplink, _asn_ctx),
+       asn_MAP_BWP_Uplink_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BWP_Uplink_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_Uplink = {
+       "BWP-Uplink",
+       "BWP-Uplink",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_Uplink_tags_1,
+       sizeof(asn_DEF_BWP_Uplink_tags_1)
+               /sizeof(asn_DEF_BWP_Uplink_tags_1[0]), /* 1 */
+       asn_DEF_BWP_Uplink_tags_1,      /* Same as above */
+       sizeof(asn_DEF_BWP_Uplink_tags_1)
+               /sizeof(asn_DEF_BWP_Uplink_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_Uplink_1,
+       3,      /* Elements count */
+       &asn_SPC_BWP_Uplink_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-Uplink.h b/src/codec_utils/RRC/BWP-Uplink.h
new file mode 100644 (file)
index 0000000..610a84a
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_Uplink_H_
+#define        _BWP_Uplink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BWP_UplinkCommon;
+struct BWP_UplinkDedicated;
+
+/* BWP-Uplink */
+typedef struct BWP_Uplink {
+       BWP_Id_t         bwp_Id;
+       struct BWP_UplinkCommon *bwp_Common;    /* OPTIONAL */
+       struct BWP_UplinkDedicated      *bwp_Dedicated; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_Uplink_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_Uplink;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_Uplink_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_Uplink_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_Uplink_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-UplinkCommon.c b/src/codec_utils/RRC/BWP-UplinkCommon.c
new file mode 100644 (file)
index 0000000..6d4875f
--- /dev/null
@@ -0,0 +1,256 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-UplinkCommon.h"
+
+#include "RACH-ConfigCommon.h"
+#include "PUSCH-ConfigCommon.h"
+#include "PUCCH-ConfigCommon.h"
+static asn_oer_constraints_t asn_OER_type_rach_ConfigCommon_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rach_ConfigCommon_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_ConfigCommon_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_ConfigCommon_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_ConfigCommon_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_ConfigCommon_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rach_ConfigCommon_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_rach_ConfigCommon_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_rach_ConfigCommon_specs_3 = {
+       sizeof(struct BWP_UplinkCommon__rach_ConfigCommon),
+       offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, _asn_ctx),
+       offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, present),
+       sizeof(((struct BWP_UplinkCommon__rach_ConfigCommon *)0)->present),
+       asn_MAP_rach_ConfigCommon_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rach_ConfigCommon_3 = {
+       "rach-ConfigCommon",
+       "rach-ConfigCommon",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_rach_ConfigCommon_constr_3, &asn_PER_type_rach_ConfigCommon_constr_3, CHOICE_constraint },
+       asn_MBR_rach_ConfigCommon_3,
+       2,      /* Elements count */
+       &asn_SPC_rach_ConfigCommon_specs_3      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pusch_ConfigCommon_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pusch_ConfigCommon_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pusch_ConfigCommon_specs_6 = {
+       sizeof(struct BWP_UplinkCommon__pusch_ConfigCommon),
+       offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, _asn_ctx),
+       offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, present),
+       sizeof(((struct BWP_UplinkCommon__pusch_ConfigCommon *)0)->present),
+       asn_MAP_pusch_ConfigCommon_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_ConfigCommon_6 = {
+       "pusch-ConfigCommon",
+       "pusch-ConfigCommon",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pusch_ConfigCommon_constr_6, &asn_PER_type_pusch_ConfigCommon_constr_6, CHOICE_constraint },
+       asn_MBR_pusch_ConfigCommon_6,
+       2,      /* Elements count */
+       &asn_SPC_pusch_ConfigCommon_specs_6     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pucch_ConfigCommon_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pucch_ConfigCommon_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pucch_ConfigCommon_specs_9 = {
+       sizeof(struct BWP_UplinkCommon__pucch_ConfigCommon),
+       offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, _asn_ctx),
+       offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, present),
+       sizeof(((struct BWP_UplinkCommon__pucch_ConfigCommon *)0)->present),
+       asn_MAP_pucch_ConfigCommon_tag2el_9,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_ConfigCommon_9 = {
+       "pucch-ConfigCommon",
+       "pucch-ConfigCommon",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pucch_ConfigCommon_constr_9, &asn_PER_type_pucch_ConfigCommon_constr_9, CHOICE_constraint },
+       asn_MBR_pucch_ConfigCommon_9,
+       2,      /* Elements count */
+       &asn_SPC_pucch_ConfigCommon_specs_9     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BWP_UplinkCommon_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon, genericParameters),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "genericParameters"
+               },
+       { ATF_POINTER, 3, offsetof(struct BWP_UplinkCommon, rach_ConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_rach_ConfigCommon_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigCommon"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_UplinkCommon, pusch_ConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pusch_ConfigCommon_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-ConfigCommon"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_UplinkCommon, pucch_ConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pucch_ConfigCommon_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-ConfigCommon"
+               },
+};
+static const int asn_MAP_BWP_UplinkCommon_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_BWP_UplinkCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_UplinkCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* genericParameters */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rach-ConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pusch-ConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pucch-ConfigCommon */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkCommon_specs_1 = {
+       sizeof(struct BWP_UplinkCommon),
+       offsetof(struct BWP_UplinkCommon, _asn_ctx),
+       asn_MAP_BWP_UplinkCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_BWP_UplinkCommon_oms_1, /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_UplinkCommon = {
+       "BWP-UplinkCommon",
+       "BWP-UplinkCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_UplinkCommon_tags_1,
+       sizeof(asn_DEF_BWP_UplinkCommon_tags_1)
+               /sizeof(asn_DEF_BWP_UplinkCommon_tags_1[0]), /* 1 */
+       asn_DEF_BWP_UplinkCommon_tags_1,        /* Same as above */
+       sizeof(asn_DEF_BWP_UplinkCommon_tags_1)
+               /sizeof(asn_DEF_BWP_UplinkCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_UplinkCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_BWP_UplinkCommon_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-UplinkCommon.h b/src/codec_utils/RRC/BWP-UplinkCommon.h
new file mode 100644 (file)
index 0000000..6e79020
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_UplinkCommon_H_
+#define        _BWP_UplinkCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BWP_UplinkCommon__rach_ConfigCommon_PR {
+       BWP_UplinkCommon__rach_ConfigCommon_PR_NOTHING, /* No components present */
+       BWP_UplinkCommon__rach_ConfigCommon_PR_release,
+       BWP_UplinkCommon__rach_ConfigCommon_PR_setup
+} BWP_UplinkCommon__rach_ConfigCommon_PR;
+typedef enum BWP_UplinkCommon__pusch_ConfigCommon_PR {
+       BWP_UplinkCommon__pusch_ConfigCommon_PR_NOTHING,        /* No components present */
+       BWP_UplinkCommon__pusch_ConfigCommon_PR_release,
+       BWP_UplinkCommon__pusch_ConfigCommon_PR_setup
+} BWP_UplinkCommon__pusch_ConfigCommon_PR;
+typedef enum BWP_UplinkCommon__pucch_ConfigCommon_PR {
+       BWP_UplinkCommon__pucch_ConfigCommon_PR_NOTHING,        /* No components present */
+       BWP_UplinkCommon__pucch_ConfigCommon_PR_release,
+       BWP_UplinkCommon__pucch_ConfigCommon_PR_setup
+} BWP_UplinkCommon__pucch_ConfigCommon_PR;
+
+/* Forward declarations */
+struct RACH_ConfigCommon;
+struct PUSCH_ConfigCommon;
+struct PUCCH_ConfigCommon;
+
+/* BWP-UplinkCommon */
+typedef struct BWP_UplinkCommon {
+       BWP_t    genericParameters;
+       struct BWP_UplinkCommon__rach_ConfigCommon {
+               BWP_UplinkCommon__rach_ConfigCommon_PR present;
+               union BWP_UplinkCommon__rach_ConfigCommon_u {
+                       NULL_t   release;
+                       struct RACH_ConfigCommon        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rach_ConfigCommon;
+       struct BWP_UplinkCommon__pusch_ConfigCommon {
+               BWP_UplinkCommon__pusch_ConfigCommon_PR present;
+               union BWP_UplinkCommon__pusch_ConfigCommon_u {
+                       NULL_t   release;
+                       struct PUSCH_ConfigCommon       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pusch_ConfigCommon;
+       struct BWP_UplinkCommon__pucch_ConfigCommon {
+               BWP_UplinkCommon__pucch_ConfigCommon_PR present;
+               union BWP_UplinkCommon__pucch_ConfigCommon_u {
+                       NULL_t   release;
+                       struct PUCCH_ConfigCommon       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pucch_ConfigCommon;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_UplinkCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_UplinkCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_UplinkCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_UplinkCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP-UplinkDedicated.c b/src/codec_utils/RRC/BWP-UplinkDedicated.c
new file mode 100644 (file)
index 0000000..b54e0b9
--- /dev/null
@@ -0,0 +1,382 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP-UplinkDedicated.h"
+
+#include "PUCCH-Config.h"
+#include "PUSCH-Config.h"
+#include "ConfiguredGrantConfig.h"
+#include "SRS-Config.h"
+#include "BeamFailureRecoveryConfig.h"
+static asn_oer_constraints_t asn_OER_type_pucch_Config_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_Config_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_Config_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_Config_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_configuredGrantConfig_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_configuredGrantConfig_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_Config_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srs_Config_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_beamFailureRecoveryConfig_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_beamFailureRecoveryConfig_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_Config_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkDedicated__pucch_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkDedicated__pucch_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pucch_Config_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pucch_Config_specs_2 = {
+       sizeof(struct BWP_UplinkDedicated__pucch_Config),
+       offsetof(struct BWP_UplinkDedicated__pucch_Config, _asn_ctx),
+       offsetof(struct BWP_UplinkDedicated__pucch_Config, present),
+       sizeof(((struct BWP_UplinkDedicated__pucch_Config *)0)->present),
+       asn_MAP_pucch_Config_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_Config_2 = {
+       "pucch-Config",
+       "pucch-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pucch_Config_constr_2, &asn_PER_type_pucch_Config_constr_2, CHOICE_constraint },
+       asn_MBR_pucch_Config_2,
+       2,      /* Elements count */
+       &asn_SPC_pucch_Config_specs_2   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pusch_Config_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkDedicated__pusch_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkDedicated__pusch_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pusch_Config_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pusch_Config_specs_5 = {
+       sizeof(struct BWP_UplinkDedicated__pusch_Config),
+       offsetof(struct BWP_UplinkDedicated__pusch_Config, _asn_ctx),
+       offsetof(struct BWP_UplinkDedicated__pusch_Config, present),
+       sizeof(((struct BWP_UplinkDedicated__pusch_Config *)0)->present),
+       asn_MAP_pusch_Config_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_Config_5 = {
+       "pusch-Config",
+       "pusch-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pusch_Config_constr_5, &asn_PER_type_pusch_Config_constr_5, CHOICE_constraint },
+       asn_MBR_pusch_Config_5,
+       2,      /* Elements count */
+       &asn_SPC_pusch_Config_specs_5   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_configuredGrantConfig_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkDedicated__configuredGrantConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkDedicated__configuredGrantConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ConfiguredGrantConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_configuredGrantConfig_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_configuredGrantConfig_specs_8 = {
+       sizeof(struct BWP_UplinkDedicated__configuredGrantConfig),
+       offsetof(struct BWP_UplinkDedicated__configuredGrantConfig, _asn_ctx),
+       offsetof(struct BWP_UplinkDedicated__configuredGrantConfig, present),
+       sizeof(((struct BWP_UplinkDedicated__configuredGrantConfig *)0)->present),
+       asn_MAP_configuredGrantConfig_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_configuredGrantConfig_8 = {
+       "configuredGrantConfig",
+       "configuredGrantConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_configuredGrantConfig_constr_8, &asn_PER_type_configuredGrantConfig_constr_8, CHOICE_constraint },
+       asn_MBR_configuredGrantConfig_8,
+       2,      /* Elements count */
+       &asn_SPC_configuredGrantConfig_specs_8  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_srs_Config_11[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkDedicated__srs_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkDedicated__srs_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_srs_Config_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_srs_Config_specs_11 = {
+       sizeof(struct BWP_UplinkDedicated__srs_Config),
+       offsetof(struct BWP_UplinkDedicated__srs_Config, _asn_ctx),
+       offsetof(struct BWP_UplinkDedicated__srs_Config, present),
+       sizeof(((struct BWP_UplinkDedicated__srs_Config *)0)->present),
+       asn_MAP_srs_Config_tag2el_11,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_Config_11 = {
+       "srs-Config",
+       "srs-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_srs_Config_constr_11, &asn_PER_type_srs_Config_constr_11, CHOICE_constraint },
+       asn_MBR_srs_Config_11,
+       2,      /* Elements count */
+       &asn_SPC_srs_Config_specs_11    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_beamFailureRecoveryConfig_14[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkDedicated__beamFailureRecoveryConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct BWP_UplinkDedicated__beamFailureRecoveryConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BeamFailureRecoveryConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_beamFailureRecoveryConfig_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_beamFailureRecoveryConfig_specs_14 = {
+       sizeof(struct BWP_UplinkDedicated__beamFailureRecoveryConfig),
+       offsetof(struct BWP_UplinkDedicated__beamFailureRecoveryConfig, _asn_ctx),
+       offsetof(struct BWP_UplinkDedicated__beamFailureRecoveryConfig, present),
+       sizeof(((struct BWP_UplinkDedicated__beamFailureRecoveryConfig *)0)->present),
+       asn_MAP_beamFailureRecoveryConfig_tag2el_14,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_beamFailureRecoveryConfig_14 = {
+       "beamFailureRecoveryConfig",
+       "beamFailureRecoveryConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_beamFailureRecoveryConfig_constr_14, &asn_PER_type_beamFailureRecoveryConfig_constr_14, CHOICE_constraint },
+       asn_MBR_beamFailureRecoveryConfig_14,
+       2,      /* Elements count */
+       &asn_SPC_beamFailureRecoveryConfig_specs_14     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BWP_UplinkDedicated_1[] = {
+       { ATF_POINTER, 5, offsetof(struct BWP_UplinkDedicated, pucch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pucch_Config_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-Config"
+               },
+       { ATF_POINTER, 4, offsetof(struct BWP_UplinkDedicated, pusch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pusch_Config_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-Config"
+               },
+       { ATF_POINTER, 3, offsetof(struct BWP_UplinkDedicated, configuredGrantConfig),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_configuredGrantConfig_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configuredGrantConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct BWP_UplinkDedicated, srs_Config),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_srs_Config_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-Config"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP_UplinkDedicated, beamFailureRecoveryConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_beamFailureRecoveryConfig_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamFailureRecoveryConfig"
+               },
+};
+static const int asn_MAP_BWP_UplinkDedicated_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_BWP_UplinkDedicated_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_UplinkDedicated_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pusch-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* configuredGrantConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* srs-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* beamFailureRecoveryConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkDedicated_specs_1 = {
+       sizeof(struct BWP_UplinkDedicated),
+       offsetof(struct BWP_UplinkDedicated, _asn_ctx),
+       asn_MAP_BWP_UplinkDedicated_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_BWP_UplinkDedicated_oms_1,      /* Optional members */
+       5, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP_UplinkDedicated = {
+       "BWP-UplinkDedicated",
+       "BWP-UplinkDedicated",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_UplinkDedicated_tags_1,
+       sizeof(asn_DEF_BWP_UplinkDedicated_tags_1)
+               /sizeof(asn_DEF_BWP_UplinkDedicated_tags_1[0]), /* 1 */
+       asn_DEF_BWP_UplinkDedicated_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BWP_UplinkDedicated_tags_1)
+               /sizeof(asn_DEF_BWP_UplinkDedicated_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_UplinkDedicated_1,
+       5,      /* Elements count */
+       &asn_SPC_BWP_UplinkDedicated_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP-UplinkDedicated.h b/src/codec_utils/RRC/BWP-UplinkDedicated.h
new file mode 100644 (file)
index 0000000..e1510d3
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_UplinkDedicated_H_
+#define        _BWP_UplinkDedicated_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BWP_UplinkDedicated__pucch_Config_PR {
+       BWP_UplinkDedicated__pucch_Config_PR_NOTHING,   /* No components present */
+       BWP_UplinkDedicated__pucch_Config_PR_release,
+       BWP_UplinkDedicated__pucch_Config_PR_setup
+} BWP_UplinkDedicated__pucch_Config_PR;
+typedef enum BWP_UplinkDedicated__pusch_Config_PR {
+       BWP_UplinkDedicated__pusch_Config_PR_NOTHING,   /* No components present */
+       BWP_UplinkDedicated__pusch_Config_PR_release,
+       BWP_UplinkDedicated__pusch_Config_PR_setup
+} BWP_UplinkDedicated__pusch_Config_PR;
+typedef enum BWP_UplinkDedicated__configuredGrantConfig_PR {
+       BWP_UplinkDedicated__configuredGrantConfig_PR_NOTHING,  /* No components present */
+       BWP_UplinkDedicated__configuredGrantConfig_PR_release,
+       BWP_UplinkDedicated__configuredGrantConfig_PR_setup
+} BWP_UplinkDedicated__configuredGrantConfig_PR;
+typedef enum BWP_UplinkDedicated__srs_Config_PR {
+       BWP_UplinkDedicated__srs_Config_PR_NOTHING,     /* No components present */
+       BWP_UplinkDedicated__srs_Config_PR_release,
+       BWP_UplinkDedicated__srs_Config_PR_setup
+} BWP_UplinkDedicated__srs_Config_PR;
+typedef enum BWP_UplinkDedicated__beamFailureRecoveryConfig_PR {
+       BWP_UplinkDedicated__beamFailureRecoveryConfig_PR_NOTHING,      /* No components present */
+       BWP_UplinkDedicated__beamFailureRecoveryConfig_PR_release,
+       BWP_UplinkDedicated__beamFailureRecoveryConfig_PR_setup
+} BWP_UplinkDedicated__beamFailureRecoveryConfig_PR;
+
+/* Forward declarations */
+struct PUCCH_Config;
+struct PUSCH_Config;
+struct ConfiguredGrantConfig;
+struct SRS_Config;
+struct BeamFailureRecoveryConfig;
+
+/* BWP-UplinkDedicated */
+typedef struct BWP_UplinkDedicated {
+       struct BWP_UplinkDedicated__pucch_Config {
+               BWP_UplinkDedicated__pucch_Config_PR present;
+               union BWP_UplinkDedicated__pucch_Config_u {
+                       NULL_t   release;
+                       struct PUCCH_Config     *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pucch_Config;
+       struct BWP_UplinkDedicated__pusch_Config {
+               BWP_UplinkDedicated__pusch_Config_PR present;
+               union BWP_UplinkDedicated__pusch_Config_u {
+                       NULL_t   release;
+                       struct PUSCH_Config     *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pusch_Config;
+       struct BWP_UplinkDedicated__configuredGrantConfig {
+               BWP_UplinkDedicated__configuredGrantConfig_PR present;
+               union BWP_UplinkDedicated__configuredGrantConfig_u {
+                       NULL_t   release;
+                       struct ConfiguredGrantConfig    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *configuredGrantConfig;
+       struct BWP_UplinkDedicated__srs_Config {
+               BWP_UplinkDedicated__srs_Config_PR present;
+               union BWP_UplinkDedicated__srs_Config_u {
+                       NULL_t   release;
+                       struct SRS_Config       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_Config;
+       struct BWP_UplinkDedicated__beamFailureRecoveryConfig {
+               BWP_UplinkDedicated__beamFailureRecoveryConfig_PR present;
+               union BWP_UplinkDedicated__beamFailureRecoveryConfig_u {
+                       NULL_t   release;
+                       struct BeamFailureRecoveryConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *beamFailureRecoveryConfig;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_UplinkDedicated_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BWP_UplinkDedicated;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkDedicated_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_UplinkDedicated_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_UplinkDedicated_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BWP.c b/src/codec_utils/RRC/BWP.c
new file mode 100644 (file)
index 0000000..60af8bf
--- /dev/null
@@ -0,0 +1,152 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BWP.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_locationAndBandwidth_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 >= 0 && value <= 37949)) {
+               /* 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_cyclicPrefix_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cyclicPrefix_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_locationAndBandwidth_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..37949) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_locationAndBandwidth_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  37949 }  /* (0..37949) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_cyclicPrefix_value2enum_4[] = {
+       { 0,    8,      "extended" }
+};
+static const unsigned int asn_MAP_cyclicPrefix_enum2value_4[] = {
+       0       /* extended(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cyclicPrefix_specs_4 = {
+       asn_MAP_cyclicPrefix_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_cyclicPrefix_enum2value_4,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cyclicPrefix_tags_4[] = {
+       (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_cyclicPrefix_4 = {
+       "cyclicPrefix",
+       "cyclicPrefix",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cyclicPrefix_tags_4,
+       sizeof(asn_DEF_cyclicPrefix_tags_4)
+               /sizeof(asn_DEF_cyclicPrefix_tags_4[0]) - 1, /* 1 */
+       asn_DEF_cyclicPrefix_tags_4,    /* Same as above */
+       sizeof(asn_DEF_cyclicPrefix_tags_4)
+               /sizeof(asn_DEF_cyclicPrefix_tags_4[0]), /* 2 */
+       { &asn_OER_type_cyclicPrefix_constr_4, &asn_PER_type_cyclicPrefix_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cyclicPrefix_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BWP_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BWP, locationAndBandwidth),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_locationAndBandwidth_constr_2, &asn_PER_memb_locationAndBandwidth_constr_2,  memb_locationAndBandwidth_constraint_1 },
+               0, 0, /* No default value */
+               "locationAndBandwidth"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BWP, subcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing"
+               },
+       { ATF_POINTER, 1, offsetof(struct BWP, cyclicPrefix),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cyclicPrefix_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cyclicPrefix"
+               },
+};
+static const int asn_MAP_BWP_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_BWP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BWP_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* locationAndBandwidth */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cyclicPrefix */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BWP_specs_1 = {
+       sizeof(struct BWP),
+       offsetof(struct BWP, _asn_ctx),
+       asn_MAP_BWP_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_BWP_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BWP = {
+       "BWP",
+       "BWP",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BWP_tags_1,
+       sizeof(asn_DEF_BWP_tags_1)
+               /sizeof(asn_DEF_BWP_tags_1[0]), /* 1 */
+       asn_DEF_BWP_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BWP_tags_1)
+               /sizeof(asn_DEF_BWP_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BWP_1,
+       3,      /* Elements count */
+       &asn_SPC_BWP_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BWP.h b/src/codec_utils/RRC/BWP.h
new file mode 100644 (file)
index 0000000..6a9ddd1
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BWP_H_
+#define        _BWP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "SubcarrierSpacing.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BWP__cyclicPrefix {
+       BWP__cyclicPrefix_extended      = 0
+} e_BWP__cyclicPrefix;
+
+/* BWP */
+typedef struct BWP {
+       long     locationAndBandwidth;
+       SubcarrierSpacing_t      subcarrierSpacing;
+       long    *cyclicPrefix;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BWP_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_cyclicPrefix_4;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BWP;
+extern asn_SEQUENCE_specifics_t asn_SPC_BWP_specs_1;
+extern asn_TYPE_member_t asn_MBR_BWP_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BWP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombination.c b/src/codec_utils/RRC/BandCombination.c
new file mode 100644 (file)
index 0000000..031c94c
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombination.h"
+
+#include "CA-ParametersEUTRA.h"
+#include "CA-ParametersNR.h"
+#include "MRDC-Parameters.h"
+#include "BandParameters.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_bandList_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 <= 32)) {
+               /* 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_supportedBandwidthCombinationSet_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 >= 1 && 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_type_bandList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_bandList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_powerClass_v1530_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_powerClass_v1530_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bandList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_bandList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_supportedBandwidthCombinationSet_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_supportedBandwidthCombinationSet_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_bandList_2[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_BandParameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_bandList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_bandList_specs_2 = {
+       sizeof(struct BandCombination__bandList),
+       offsetof(struct BandCombination__bandList, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_bandList_2 = {
+       "bandList",
+       "bandList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_bandList_tags_2,
+       sizeof(asn_DEF_bandList_tags_2)
+               /sizeof(asn_DEF_bandList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_bandList_tags_2,        /* Same as above */
+       sizeof(asn_DEF_bandList_tags_2)
+               /sizeof(asn_DEF_bandList_tags_2[0]), /* 2 */
+       { &asn_OER_type_bandList_constr_2, &asn_PER_type_bandList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_bandList_2,
+       1,      /* Single element */
+       &asn_SPC_bandList_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_powerClass_v1530_value2enum_9[] = {
+       { 0,    3,      "pc2" }
+};
+static const unsigned int asn_MAP_powerClass_v1530_enum2value_9[] = {
+       0       /* pc2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_powerClass_v1530_specs_9 = {
+       asn_MAP_powerClass_v1530_value2enum_9,  /* "tag" => N; sorted by tag */
+       asn_MAP_powerClass_v1530_enum2value_9,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_powerClass_v1530_tags_9[] = {
+       (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_powerClass_v1530_9 = {
+       "powerClass-v1530",
+       "powerClass-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_powerClass_v1530_tags_9,
+       sizeof(asn_DEF_powerClass_v1530_tags_9)
+               /sizeof(asn_DEF_powerClass_v1530_tags_9[0]) - 1, /* 1 */
+       asn_DEF_powerClass_v1530_tags_9,        /* Same as above */
+       sizeof(asn_DEF_powerClass_v1530_tags_9)
+               /sizeof(asn_DEF_powerClass_v1530_tags_9[0]), /* 2 */
+       { &asn_OER_type_powerClass_v1530_constr_9, &asn_PER_type_powerClass_v1530_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_powerClass_v1530_specs_9       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BandCombination_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombination, bandList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_bandList_2,
+               0,
+               { &asn_OER_memb_bandList_constr_2, &asn_PER_memb_bandList_constr_2,  memb_bandList_constraint_1 },
+               0, 0, /* No default value */
+               "bandList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombination, featureSetCombination),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetCombinationId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "featureSetCombination"
+               },
+       { ATF_POINTER, 5, offsetof(struct BandCombination, ca_ParametersEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_ParametersEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-ParametersEUTRA"
+               },
+       { ATF_POINTER, 4, offsetof(struct BandCombination, ca_ParametersNR),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_ParametersNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-ParametersNR"
+               },
+       { ATF_POINTER, 3, offsetof(struct BandCombination, mrdc_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MRDC_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mrdc-Parameters"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandCombination, supportedBandwidthCombinationSet),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_supportedBandwidthCombinationSet_constr_8, &asn_PER_memb_supportedBandwidthCombinationSet_constr_8,  memb_supportedBandwidthCombinationSet_constraint_1 },
+               0, 0, /* No default value */
+               "supportedBandwidthCombinationSet"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandCombination, powerClass_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_powerClass_v1530_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerClass-v1530"
+               },
+};
+static const int asn_MAP_BandCombination_oms_1[] = { 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_BandCombination_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BandCombination_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* featureSetCombination */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ca-ParametersEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ca-ParametersNR */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* mrdc-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* supportedBandwidthCombinationSet */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* powerClass-v1530 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BandCombination_specs_1 = {
+       sizeof(struct BandCombination),
+       offsetof(struct BandCombination, _asn_ctx),
+       asn_MAP_BandCombination_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_BandCombination_oms_1,  /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombination = {
+       "BandCombination",
+       "BandCombination",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BandCombination_tags_1,
+       sizeof(asn_DEF_BandCombination_tags_1)
+               /sizeof(asn_DEF_BandCombination_tags_1[0]), /* 1 */
+       asn_DEF_BandCombination_tags_1, /* Same as above */
+       sizeof(asn_DEF_BandCombination_tags_1)
+               /sizeof(asn_DEF_BandCombination_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BandCombination_1,
+       7,      /* Elements count */
+       &asn_SPC_BandCombination_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandCombination.h b/src/codec_utils/RRC/BandCombination.h
new file mode 100644 (file)
index 0000000..c7a482f
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombination_H_
+#define        _BandCombination_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FeatureSetCombinationId.h"
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BandCombination__powerClass_v1530 {
+       BandCombination__powerClass_v1530_pc2   = 0
+} e_BandCombination__powerClass_v1530;
+
+/* Forward declarations */
+struct CA_ParametersEUTRA;
+struct CA_ParametersNR;
+struct MRDC_Parameters;
+struct BandParameters;
+
+/* BandCombination */
+typedef struct BandCombination {
+       struct BandCombination__bandList {
+               A_SEQUENCE_OF(struct BandParameters) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } bandList;
+       FeatureSetCombinationId_t        featureSetCombination;
+       struct CA_ParametersEUTRA       *ca_ParametersEUTRA;    /* OPTIONAL */
+       struct CA_ParametersNR  *ca_ParametersNR;       /* OPTIONAL */
+       struct MRDC_Parameters  *mrdc_Parameters;       /* OPTIONAL */
+       BIT_STRING_t    *supportedBandwidthCombinationSet;      /* OPTIONAL */
+       long    *powerClass_v1530;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandCombination_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_powerClass_v1530_9;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BandCombination;
+extern asn_SEQUENCE_specifics_t asn_SPC_BandCombination_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandCombination_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombination_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombinationIndex.c b/src/codec_utils/RRC/BandCombinationIndex.c
new file mode 100644 (file)
index 0000000..3b26dd7
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombinationIndex.h"
+
+int
+BandCombinationIndex_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_BandCombinationIndex_constr_1 CC_NOTUSED = {
+       { 4, 1 }        /* (1..65536) */,
+       -1};
+asn_per_constraints_t asn_PER_type_BandCombinationIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_BandCombinationIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombinationIndex = {
+       "BandCombinationIndex",
+       "BandCombinationIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_BandCombinationIndex_tags_1,
+       sizeof(asn_DEF_BandCombinationIndex_tags_1)
+               /sizeof(asn_DEF_BandCombinationIndex_tags_1[0]), /* 1 */
+       asn_DEF_BandCombinationIndex_tags_1,    /* Same as above */
+       sizeof(asn_DEF_BandCombinationIndex_tags_1)
+               /sizeof(asn_DEF_BandCombinationIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_BandCombinationIndex_constr_1, &asn_PER_type_BandCombinationIndex_constr_1, BandCombinationIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/BandCombinationIndex.h b/src/codec_utils/RRC/BandCombinationIndex.h
new file mode 100644 (file)
index 0000000..679dcc4
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombinationIndex_H_
+#define        _BandCombinationIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BandCombinationIndex */
+typedef long    BandCombinationIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_BandCombinationIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_BandCombinationIndex;
+asn_struct_free_f BandCombinationIndex_free;
+asn_struct_print_f BandCombinationIndex_print;
+asn_constr_check_f BandCombinationIndex_constraint;
+ber_type_decoder_f BandCombinationIndex_decode_ber;
+der_type_encoder_f BandCombinationIndex_encode_der;
+xer_type_decoder_f BandCombinationIndex_decode_xer;
+xer_type_encoder_f BandCombinationIndex_encode_xer;
+oer_type_decoder_f BandCombinationIndex_decode_oer;
+oer_type_encoder_f BandCombinationIndex_encode_oer;
+per_type_decoder_f BandCombinationIndex_decode_uper;
+per_type_encoder_f BandCombinationIndex_encode_uper;
+per_type_decoder_f BandCombinationIndex_decode_aper;
+per_type_encoder_f BandCombinationIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombinationIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombinationInfo.c b/src/codec_utils/RRC/BandCombinationInfo.c
new file mode 100644 (file)
index 0000000..fc26e08
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombinationInfo.h"
+
+static int
+memb_allowedFeatureSetsList_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 <= 128)) {
+               /* 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_allowedFeatureSetsList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_allowedFeatureSetsList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_allowedFeatureSetsList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_allowedFeatureSetsList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_allowedFeatureSetsList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FeatureSetEntryIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_allowedFeatureSetsList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_allowedFeatureSetsList_specs_3 = {
+       sizeof(struct BandCombinationInfo__allowedFeatureSetsList),
+       offsetof(struct BandCombinationInfo__allowedFeatureSetsList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_allowedFeatureSetsList_3 = {
+       "allowedFeatureSetsList",
+       "allowedFeatureSetsList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_allowedFeatureSetsList_tags_3,
+       sizeof(asn_DEF_allowedFeatureSetsList_tags_3)
+               /sizeof(asn_DEF_allowedFeatureSetsList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_allowedFeatureSetsList_tags_3,  /* Same as above */
+       sizeof(asn_DEF_allowedFeatureSetsList_tags_3)
+               /sizeof(asn_DEF_allowedFeatureSetsList_tags_3[0]), /* 2 */
+       { &asn_OER_type_allowedFeatureSetsList_constr_3, &asn_PER_type_allowedFeatureSetsList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_allowedFeatureSetsList_3,
+       1,      /* Single element */
+       &asn_SPC_allowedFeatureSetsList_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BandCombinationInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombinationInfo, bandCombinationIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandCombinationIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombinationInfo, allowedFeatureSetsList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_allowedFeatureSetsList_3,
+               0,
+               { &asn_OER_memb_allowedFeatureSetsList_constr_3, &asn_PER_memb_allowedFeatureSetsList_constr_3,  memb_allowedFeatureSetsList_constraint_1 },
+               0, 0, /* No default value */
+               "allowedFeatureSetsList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BandCombinationInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BandCombinationInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandCombinationIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* allowedFeatureSetsList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BandCombinationInfo_specs_1 = {
+       sizeof(struct BandCombinationInfo),
+       offsetof(struct BandCombinationInfo, _asn_ctx),
+       asn_MAP_BandCombinationInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombinationInfo = {
+       "BandCombinationInfo",
+       "BandCombinationInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BandCombinationInfo_tags_1,
+       sizeof(asn_DEF_BandCombinationInfo_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfo_tags_1[0]), /* 1 */
+       asn_DEF_BandCombinationInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BandCombinationInfo_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BandCombinationInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_BandCombinationInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandCombinationInfo.h b/src/codec_utils/RRC/BandCombinationInfo.h
new file mode 100644 (file)
index 0000000..1b6d17f
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombinationInfo_H_
+#define        _BandCombinationInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BandCombinationIndex.h"
+#include "FeatureSetEntryIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BandCombinationInfo */
+typedef struct BandCombinationInfo {
+       BandCombinationIndex_t   bandCombinationIndex;
+       struct BandCombinationInfo__allowedFeatureSetsList {
+               A_SEQUENCE_OF(FeatureSetEntryIndex_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } allowedFeatureSetsList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandCombinationInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BandCombinationInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_BandCombinationInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandCombinationInfo_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombinationInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombinationInfoList.c b/src/codec_utils/RRC/BandCombinationInfoList.c
new file mode 100644 (file)
index 0000000..fd9ad53
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombinationInfoList.h"
+
+#include "BandCombinationInfo.h"
+static asn_oer_constraints_t asn_OER_type_BandCombinationInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65536)) */};
+asn_per_constraints_t asn_PER_type_BandCombinationInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16, -1,  1,  65536 }   /* (SIZE(1..65536)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BandCombinationInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BandCombinationInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BandCombinationInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_BandCombinationInfoList_specs_1 = {
+       sizeof(struct BandCombinationInfoList),
+       offsetof(struct BandCombinationInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombinationInfoList = {
+       "BandCombinationInfoList",
+       "BandCombinationInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_BandCombinationInfoList_tags_1,
+       sizeof(asn_DEF_BandCombinationInfoList_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfoList_tags_1[0]), /* 1 */
+       asn_DEF_BandCombinationInfoList_tags_1, /* Same as above */
+       sizeof(asn_DEF_BandCombinationInfoList_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_BandCombinationInfoList_constr_1, &asn_PER_type_BandCombinationInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_BandCombinationInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_BandCombinationInfoList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandCombinationInfoList.h b/src/codec_utils/RRC/BandCombinationInfoList.h
new file mode 100644 (file)
index 0000000..32deec5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombinationInfoList_H_
+#define        _BandCombinationInfoList_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 BandCombinationInfo;
+
+/* BandCombinationInfoList */
+typedef struct BandCombinationInfoList {
+       A_SEQUENCE_OF(struct BandCombinationInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandCombinationInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BandCombinationInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_BandCombinationInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandCombinationInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_BandCombinationInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombinationInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombinationInfoSN.c b/src/codec_utils/RRC/BandCombinationInfoSN.c
new file mode 100644 (file)
index 0000000..31235b6
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombinationInfoSN.h"
+
+asn_TYPE_member_t asn_MBR_BandCombinationInfoSN_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombinationInfoSN, bandCombinationIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandCombinationIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BandCombinationInfoSN, requestedFeatureSets),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetEntryIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "requestedFeatureSets"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BandCombinationInfoSN_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BandCombinationInfoSN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandCombinationIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* requestedFeatureSets */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BandCombinationInfoSN_specs_1 = {
+       sizeof(struct BandCombinationInfoSN),
+       offsetof(struct BandCombinationInfoSN, _asn_ctx),
+       asn_MAP_BandCombinationInfoSN_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombinationInfoSN = {
+       "BandCombinationInfoSN",
+       "BandCombinationInfoSN",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BandCombinationInfoSN_tags_1,
+       sizeof(asn_DEF_BandCombinationInfoSN_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfoSN_tags_1[0]), /* 1 */
+       asn_DEF_BandCombinationInfoSN_tags_1,   /* Same as above */
+       sizeof(asn_DEF_BandCombinationInfoSN_tags_1)
+               /sizeof(asn_DEF_BandCombinationInfoSN_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BandCombinationInfoSN_1,
+       2,      /* Elements count */
+       &asn_SPC_BandCombinationInfoSN_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandCombinationInfoSN.h b/src/codec_utils/RRC/BandCombinationInfoSN.h
new file mode 100644 (file)
index 0000000..85b6456
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombinationInfoSN_H_
+#define        _BandCombinationInfoSN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BandCombinationIndex.h"
+#include "FeatureSetEntryIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BandCombinationInfoSN */
+typedef struct BandCombinationInfoSN {
+       BandCombinationIndex_t   bandCombinationIndex;
+       FeatureSetEntryIndex_t   requestedFeatureSets;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandCombinationInfoSN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BandCombinationInfoSN;
+extern asn_SEQUENCE_specifics_t asn_SPC_BandCombinationInfoSN_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandCombinationInfoSN_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombinationInfoSN_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandCombinationList.c b/src/codec_utils/RRC/BandCombinationList.c
new file mode 100644 (file)
index 0000000..7ac91c4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandCombinationList.h"
+
+#include "BandCombination.h"
+static asn_oer_constraints_t asn_OER_type_BandCombinationList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..65536)) */};
+asn_per_constraints_t asn_PER_type_BandCombinationList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       16, -1,  1,  65536 }   /* (SIZE(1..65536)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BandCombinationList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BandCombination,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BandCombinationList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_BandCombinationList_specs_1 = {
+       sizeof(struct BandCombinationList),
+       offsetof(struct BandCombinationList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_BandCombinationList = {
+       "BandCombinationList",
+       "BandCombinationList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_BandCombinationList_tags_1,
+       sizeof(asn_DEF_BandCombinationList_tags_1)
+               /sizeof(asn_DEF_BandCombinationList_tags_1[0]), /* 1 */
+       asn_DEF_BandCombinationList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BandCombinationList_tags_1)
+               /sizeof(asn_DEF_BandCombinationList_tags_1[0]), /* 1 */
+       { &asn_OER_type_BandCombinationList_constr_1, &asn_PER_type_BandCombinationList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_BandCombinationList_1,
+       1,      /* Single element */
+       &asn_SPC_BandCombinationList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandCombinationList.h b/src/codec_utils/RRC/BandCombinationList.h
new file mode 100644 (file)
index 0000000..7758795
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandCombinationList_H_
+#define        _BandCombinationList_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 BandCombination;
+
+/* BandCombinationList */
+typedef struct BandCombinationList {
+       A_SEQUENCE_OF(struct BandCombination) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandCombinationList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BandCombinationList;
+extern asn_SET_OF_specifics_t asn_SPC_BandCombinationList_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandCombinationList_1[1];
+extern asn_per_constraints_t asn_PER_type_BandCombinationList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandCombinationList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandNR.c b/src/codec_utils/RRC/BandNR.c
new file mode 100644 (file)
index 0000000..522a943
--- /dev/null
@@ -0,0 +1,1564 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandNR.h"
+
+#include "MIMO-ParametersPerBand.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.
+ */
+static int
+memb_scs_15kHz_constraint_30(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;
+       }
+}
+
+static int
+memb_scs_30kHz_constraint_30(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;
+       }
+}
+
+static int
+memb_scs_60kHz_constraint_30(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;
+       }
+}
+
+static int
+memb_scs_60kHz_constraint_34(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 == 3)) {
+               /* 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_scs_120kHz_constraint_34(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 == 3)) {
+               /* 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_scs_15kHz_constraint_38(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;
+       }
+}
+
+static int
+memb_scs_30kHz_constraint_38(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;
+       }
+}
+
+static int
+memb_scs_60kHz_constraint_38(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;
+       }
+}
+
+static int
+memb_scs_60kHz_constraint_42(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 == 3)) {
+               /* 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_scs_120kHz_constraint_42(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 == 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_modifiedMPR_Behaviour_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 == 8)) {
+               /* 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_extendedCP_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_extendedCP_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_multipleTCI_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleTCI_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bwp_WithoutRestriction_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bwp_WithoutRestriction_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bwp_SameNumerology_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bwp_SameNumerology_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bwp_DiffNumerology_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bwp_DiffNumerology_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_crossCarrierScheduling_SameSCS_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_crossCarrierScheduling_SameSCS_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_256QAM_FR2_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_256QAM_FR2_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_256QAM_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_256QAM_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ue_PowerClass_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ue_PowerClass_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rateMatchingLTE_CRS_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rateMatchingLTE_CRS_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_15kHz_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_15kHz_constr_31 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_30kHz_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_30kHz_constr_32 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_60kHz_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_60kHz_constr_33 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_60kHz_constr_35 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_scs_60kHz_constr_35 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_120kHz_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_scs_120kHz_constr_36 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_channelBWs_DL_v1530_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_channelBWs_DL_v1530_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_scs_15kHz_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_15kHz_constr_39 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_30kHz_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_30kHz_constr_40 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_60kHz_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_scs_60kHz_constr_41 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_60kHz_constr_43 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_scs_60kHz_constr_43 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_120kHz_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_scs_120kHz_constr_44 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_channelBWs_UL_v1530_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_channelBWs_UL_v1530_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxUplinkDutyCycle_PC2_FR1_constr_47 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxUplinkDutyCycle_PC2_FR1_constr_47 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_modifiedMPR_Behaviour_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_modifiedMPR_Behaviour_constr_3 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 asn_INTEGER_enum_map_t asn_MAP_extendedCP_value2enum_5[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_extendedCP_enum2value_5[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_extendedCP_specs_5 = {
+       asn_MAP_extendedCP_value2enum_5,        /* "tag" => N; sorted by tag */
+       asn_MAP_extendedCP_enum2value_5,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_extendedCP_tags_5[] = {
+       (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_extendedCP_5 = {
+       "extendedCP",
+       "extendedCP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_extendedCP_tags_5,
+       sizeof(asn_DEF_extendedCP_tags_5)
+               /sizeof(asn_DEF_extendedCP_tags_5[0]) - 1, /* 1 */
+       asn_DEF_extendedCP_tags_5,      /* Same as above */
+       sizeof(asn_DEF_extendedCP_tags_5)
+               /sizeof(asn_DEF_extendedCP_tags_5[0]), /* 2 */
+       { &asn_OER_type_extendedCP_constr_5, &asn_PER_type_extendedCP_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_extendedCP_specs_5     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_multipleTCI_value2enum_7[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleTCI_enum2value_7[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleTCI_specs_7 = {
+       asn_MAP_multipleTCI_value2enum_7,       /* "tag" => N; sorted by tag */
+       asn_MAP_multipleTCI_enum2value_7,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleTCI_tags_7[] = {
+       (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_multipleTCI_7 = {
+       "multipleTCI",
+       "multipleTCI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleTCI_tags_7,
+       sizeof(asn_DEF_multipleTCI_tags_7)
+               /sizeof(asn_DEF_multipleTCI_tags_7[0]) - 1, /* 1 */
+       asn_DEF_multipleTCI_tags_7,     /* Same as above */
+       sizeof(asn_DEF_multipleTCI_tags_7)
+               /sizeof(asn_DEF_multipleTCI_tags_7[0]), /* 2 */
+       { &asn_OER_type_multipleTCI_constr_7, &asn_PER_type_multipleTCI_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleTCI_specs_7    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bwp_WithoutRestriction_value2enum_9[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_bwp_WithoutRestriction_enum2value_9[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bwp_WithoutRestriction_specs_9 = {
+       asn_MAP_bwp_WithoutRestriction_value2enum_9,    /* "tag" => N; sorted by tag */
+       asn_MAP_bwp_WithoutRestriction_enum2value_9,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bwp_WithoutRestriction_tags_9[] = {
+       (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_bwp_WithoutRestriction_9 = {
+       "bwp-WithoutRestriction",
+       "bwp-WithoutRestriction",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bwp_WithoutRestriction_tags_9,
+       sizeof(asn_DEF_bwp_WithoutRestriction_tags_9)
+               /sizeof(asn_DEF_bwp_WithoutRestriction_tags_9[0]) - 1, /* 1 */
+       asn_DEF_bwp_WithoutRestriction_tags_9,  /* Same as above */
+       sizeof(asn_DEF_bwp_WithoutRestriction_tags_9)
+               /sizeof(asn_DEF_bwp_WithoutRestriction_tags_9[0]), /* 2 */
+       { &asn_OER_type_bwp_WithoutRestriction_constr_9, &asn_PER_type_bwp_WithoutRestriction_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bwp_WithoutRestriction_specs_9 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bwp_SameNumerology_value2enum_11[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" }
+};
+static const unsigned int asn_MAP_bwp_SameNumerology_enum2value_11[] = {
+       0,      /* upto2(0) */
+       1       /* upto4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bwp_SameNumerology_specs_11 = {
+       asn_MAP_bwp_SameNumerology_value2enum_11,       /* "tag" => N; sorted by tag */
+       asn_MAP_bwp_SameNumerology_enum2value_11,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bwp_SameNumerology_tags_11[] = {
+       (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_bwp_SameNumerology_11 = {
+       "bwp-SameNumerology",
+       "bwp-SameNumerology",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bwp_SameNumerology_tags_11,
+       sizeof(asn_DEF_bwp_SameNumerology_tags_11)
+               /sizeof(asn_DEF_bwp_SameNumerology_tags_11[0]) - 1, /* 1 */
+       asn_DEF_bwp_SameNumerology_tags_11,     /* Same as above */
+       sizeof(asn_DEF_bwp_SameNumerology_tags_11)
+               /sizeof(asn_DEF_bwp_SameNumerology_tags_11[0]), /* 2 */
+       { &asn_OER_type_bwp_SameNumerology_constr_11, &asn_PER_type_bwp_SameNumerology_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bwp_SameNumerology_specs_11    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bwp_DiffNumerology_value2enum_14[] = {
+       { 0,    5,      "upto4" }
+};
+static const unsigned int asn_MAP_bwp_DiffNumerology_enum2value_14[] = {
+       0       /* upto4(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bwp_DiffNumerology_specs_14 = {
+       asn_MAP_bwp_DiffNumerology_value2enum_14,       /* "tag" => N; sorted by tag */
+       asn_MAP_bwp_DiffNumerology_enum2value_14,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bwp_DiffNumerology_tags_14[] = {
+       (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_bwp_DiffNumerology_14 = {
+       "bwp-DiffNumerology",
+       "bwp-DiffNumerology",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bwp_DiffNumerology_tags_14,
+       sizeof(asn_DEF_bwp_DiffNumerology_tags_14)
+               /sizeof(asn_DEF_bwp_DiffNumerology_tags_14[0]) - 1, /* 1 */
+       asn_DEF_bwp_DiffNumerology_tags_14,     /* Same as above */
+       sizeof(asn_DEF_bwp_DiffNumerology_tags_14)
+               /sizeof(asn_DEF_bwp_DiffNumerology_tags_14[0]), /* 2 */
+       { &asn_OER_type_bwp_DiffNumerology_constr_14, &asn_PER_type_bwp_DiffNumerology_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bwp_DiffNumerology_specs_14    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_crossCarrierScheduling_SameSCS_value2enum_16[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_crossCarrierScheduling_SameSCS_enum2value_16[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_crossCarrierScheduling_SameSCS_specs_16 = {
+       asn_MAP_crossCarrierScheduling_SameSCS_value2enum_16,   /* "tag" => N; sorted by tag */
+       asn_MAP_crossCarrierScheduling_SameSCS_enum2value_16,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_crossCarrierScheduling_SameSCS_tags_16[] = {
+       (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_crossCarrierScheduling_SameSCS_16 = {
+       "crossCarrierScheduling-SameSCS",
+       "crossCarrierScheduling-SameSCS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_crossCarrierScheduling_SameSCS_tags_16,
+       sizeof(asn_DEF_crossCarrierScheduling_SameSCS_tags_16)
+               /sizeof(asn_DEF_crossCarrierScheduling_SameSCS_tags_16[0]) - 1, /* 1 */
+       asn_DEF_crossCarrierScheduling_SameSCS_tags_16, /* Same as above */
+       sizeof(asn_DEF_crossCarrierScheduling_SameSCS_tags_16)
+               /sizeof(asn_DEF_crossCarrierScheduling_SameSCS_tags_16[0]), /* 2 */
+       { &asn_OER_type_crossCarrierScheduling_SameSCS_constr_16, &asn_PER_type_crossCarrierScheduling_SameSCS_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_crossCarrierScheduling_SameSCS_specs_16        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_256QAM_FR2_value2enum_18[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdsch_256QAM_FR2_enum2value_18[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_256QAM_FR2_specs_18 = {
+       asn_MAP_pdsch_256QAM_FR2_value2enum_18, /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_256QAM_FR2_enum2value_18, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_256QAM_FR2_tags_18[] = {
+       (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_pdsch_256QAM_FR2_18 = {
+       "pdsch-256QAM-FR2",
+       "pdsch-256QAM-FR2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_256QAM_FR2_tags_18,
+       sizeof(asn_DEF_pdsch_256QAM_FR2_tags_18)
+               /sizeof(asn_DEF_pdsch_256QAM_FR2_tags_18[0]) - 1, /* 1 */
+       asn_DEF_pdsch_256QAM_FR2_tags_18,       /* Same as above */
+       sizeof(asn_DEF_pdsch_256QAM_FR2_tags_18)
+               /sizeof(asn_DEF_pdsch_256QAM_FR2_tags_18[0]), /* 2 */
+       { &asn_OER_type_pdsch_256QAM_FR2_constr_18, &asn_PER_type_pdsch_256QAM_FR2_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_256QAM_FR2_specs_18      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_256QAM_value2enum_20[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pusch_256QAM_enum2value_20[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_256QAM_specs_20 = {
+       asn_MAP_pusch_256QAM_value2enum_20,     /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_256QAM_enum2value_20,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_256QAM_tags_20[] = {
+       (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_pusch_256QAM_20 = {
+       "pusch-256QAM",
+       "pusch-256QAM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_256QAM_tags_20,
+       sizeof(asn_DEF_pusch_256QAM_tags_20)
+               /sizeof(asn_DEF_pusch_256QAM_tags_20[0]) - 1, /* 1 */
+       asn_DEF_pusch_256QAM_tags_20,   /* Same as above */
+       sizeof(asn_DEF_pusch_256QAM_tags_20)
+               /sizeof(asn_DEF_pusch_256QAM_tags_20[0]), /* 2 */
+       { &asn_OER_type_pusch_256QAM_constr_20, &asn_PER_type_pusch_256QAM_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_256QAM_specs_20  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ue_PowerClass_value2enum_22[] = {
+       { 0,    3,      "pc1" },
+       { 1,    3,      "pc2" },
+       { 2,    3,      "pc3" },
+       { 3,    3,      "pc4" }
+};
+static const unsigned int asn_MAP_ue_PowerClass_enum2value_22[] = {
+       0,      /* pc1(0) */
+       1,      /* pc2(1) */
+       2,      /* pc3(2) */
+       3       /* pc4(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ue_PowerClass_specs_22 = {
+       asn_MAP_ue_PowerClass_value2enum_22,    /* "tag" => N; sorted by tag */
+       asn_MAP_ue_PowerClass_enum2value_22,    /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ue_PowerClass_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ue_PowerClass_22 = {
+       "ue-PowerClass",
+       "ue-PowerClass",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ue_PowerClass_tags_22,
+       sizeof(asn_DEF_ue_PowerClass_tags_22)
+               /sizeof(asn_DEF_ue_PowerClass_tags_22[0]) - 1, /* 1 */
+       asn_DEF_ue_PowerClass_tags_22,  /* Same as above */
+       sizeof(asn_DEF_ue_PowerClass_tags_22)
+               /sizeof(asn_DEF_ue_PowerClass_tags_22[0]), /* 2 */
+       { &asn_OER_type_ue_PowerClass_constr_22, &asn_PER_type_ue_PowerClass_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ue_PowerClass_specs_22 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rateMatchingLTE_CRS_value2enum_27[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_rateMatchingLTE_CRS_enum2value_27[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rateMatchingLTE_CRS_specs_27 = {
+       asn_MAP_rateMatchingLTE_CRS_value2enum_27,      /* "tag" => N; sorted by tag */
+       asn_MAP_rateMatchingLTE_CRS_enum2value_27,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchingLTE_CRS_tags_27[] = {
+       (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_rateMatchingLTE_CRS_27 = {
+       "rateMatchingLTE-CRS",
+       "rateMatchingLTE-CRS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rateMatchingLTE_CRS_tags_27,
+       sizeof(asn_DEF_rateMatchingLTE_CRS_tags_27)
+               /sizeof(asn_DEF_rateMatchingLTE_CRS_tags_27[0]) - 1, /* 1 */
+       asn_DEF_rateMatchingLTE_CRS_tags_27,    /* Same as above */
+       sizeof(asn_DEF_rateMatchingLTE_CRS_tags_27)
+               /sizeof(asn_DEF_rateMatchingLTE_CRS_tags_27[0]), /* 2 */
+       { &asn_OER_type_rateMatchingLTE_CRS_constr_27, &asn_PER_type_rateMatchingLTE_CRS_constr_27, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rateMatchingLTE_CRS_specs_27   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_fr1_30[] = {
+       { ATF_POINTER, 3, offsetof(struct BandNR__channelBWs_DL_v1530__fr1, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_15kHz_constr_31, &asn_PER_memb_scs_15kHz_constr_31,  memb_scs_15kHz_constraint_30 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandNR__channelBWs_DL_v1530__fr1, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_30kHz_constr_32, &asn_PER_memb_scs_30kHz_constr_32,  memb_scs_30kHz_constraint_30 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandNR__channelBWs_DL_v1530__fr1, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_60kHz_constr_33, &asn_PER_memb_scs_60kHz_constr_33,  memb_scs_60kHz_constraint_30 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+};
+static const int asn_MAP_fr1_oms_30[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_fr1_tags_30[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_fr1_tag2el_30[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* scs-60kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_fr1_specs_30 = {
+       sizeof(struct BandNR__channelBWs_DL_v1530__fr1),
+       offsetof(struct BandNR__channelBWs_DL_v1530__fr1, _asn_ctx),
+       asn_MAP_fr1_tag2el_30,
+       3,      /* Count of tags in the map */
+       asn_MAP_fr1_oms_30,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fr1_30 = {
+       "fr1",
+       "fr1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_fr1_tags_30,
+       sizeof(asn_DEF_fr1_tags_30)
+               /sizeof(asn_DEF_fr1_tags_30[0]) - 1, /* 1 */
+       asn_DEF_fr1_tags_30,    /* Same as above */
+       sizeof(asn_DEF_fr1_tags_30)
+               /sizeof(asn_DEF_fr1_tags_30[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_fr1_30,
+       3,      /* Elements count */
+       &asn_SPC_fr1_specs_30   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_fr2_34[] = {
+       { ATF_POINTER, 2, offsetof(struct BandNR__channelBWs_DL_v1530__fr2, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_60kHz_constr_35, &asn_PER_memb_scs_60kHz_constr_35,  memb_scs_60kHz_constraint_34 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandNR__channelBWs_DL_v1530__fr2, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_120kHz_constr_36, &asn_PER_memb_scs_120kHz_constr_36,  memb_scs_120kHz_constraint_34 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_fr2_oms_34[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_fr2_tags_34[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_fr2_tag2el_34[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_fr2_specs_34 = {
+       sizeof(struct BandNR__channelBWs_DL_v1530__fr2),
+       offsetof(struct BandNR__channelBWs_DL_v1530__fr2, _asn_ctx),
+       asn_MAP_fr2_tag2el_34,
+       2,      /* Count of tags in the map */
+       asn_MAP_fr2_oms_34,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fr2_34 = {
+       "fr2",
+       "fr2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_fr2_tags_34,
+       sizeof(asn_DEF_fr2_tags_34)
+               /sizeof(asn_DEF_fr2_tags_34[0]) - 1, /* 1 */
+       asn_DEF_fr2_tags_34,    /* Same as above */
+       sizeof(asn_DEF_fr2_tags_34)
+               /sizeof(asn_DEF_fr2_tags_34[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_fr2_34,
+       2,      /* Elements count */
+       &asn_SPC_fr2_specs_34   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_channelBWs_DL_v1530_29[] = {
+       { ATF_POINTER, 0, offsetof(struct BandNR__channelBWs_DL_v1530, choice.fr1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_fr1_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr1"
+               },
+       { ATF_POINTER, 0, offsetof(struct BandNR__channelBWs_DL_v1530, choice.fr2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_fr2_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_channelBWs_DL_v1530_tag2el_29[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fr1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fr2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_channelBWs_DL_v1530_specs_29 = {
+       sizeof(struct BandNR__channelBWs_DL_v1530),
+       offsetof(struct BandNR__channelBWs_DL_v1530, _asn_ctx),
+       offsetof(struct BandNR__channelBWs_DL_v1530, present),
+       sizeof(((struct BandNR__channelBWs_DL_v1530 *)0)->present),
+       asn_MAP_channelBWs_DL_v1530_tag2el_29,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_channelBWs_DL_v1530_29 = {
+       "channelBWs-DL-v1530",
+       "channelBWs-DL-v1530",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_channelBWs_DL_v1530_constr_29, &asn_PER_type_channelBWs_DL_v1530_constr_29, CHOICE_constraint },
+       asn_MBR_channelBWs_DL_v1530_29,
+       2,      /* Elements count */
+       &asn_SPC_channelBWs_DL_v1530_specs_29   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_fr1_38[] = {
+       { ATF_POINTER, 3, offsetof(struct BandNR__channelBWs_UL_v1530__fr1, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_15kHz_constr_39, &asn_PER_memb_scs_15kHz_constr_39,  memb_scs_15kHz_constraint_38 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandNR__channelBWs_UL_v1530__fr1, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_30kHz_constr_40, &asn_PER_memb_scs_30kHz_constr_40,  memb_scs_30kHz_constraint_38 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandNR__channelBWs_UL_v1530__fr1, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_60kHz_constr_41, &asn_PER_memb_scs_60kHz_constr_41,  memb_scs_60kHz_constraint_38 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+};
+static const int asn_MAP_fr1_oms_38[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_fr1_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_fr1_tag2el_38[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* scs-60kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_fr1_specs_38 = {
+       sizeof(struct BandNR__channelBWs_UL_v1530__fr1),
+       offsetof(struct BandNR__channelBWs_UL_v1530__fr1, _asn_ctx),
+       asn_MAP_fr1_tag2el_38,
+       3,      /* Count of tags in the map */
+       asn_MAP_fr1_oms_38,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fr1_38 = {
+       "fr1",
+       "fr1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_fr1_tags_38,
+       sizeof(asn_DEF_fr1_tags_38)
+               /sizeof(asn_DEF_fr1_tags_38[0]) - 1, /* 1 */
+       asn_DEF_fr1_tags_38,    /* Same as above */
+       sizeof(asn_DEF_fr1_tags_38)
+               /sizeof(asn_DEF_fr1_tags_38[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_fr1_38,
+       3,      /* Elements count */
+       &asn_SPC_fr1_specs_38   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_fr2_42[] = {
+       { ATF_POINTER, 2, offsetof(struct BandNR__channelBWs_UL_v1530__fr2, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_60kHz_constr_43, &asn_PER_memb_scs_60kHz_constr_43,  memb_scs_60kHz_constraint_42 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandNR__channelBWs_UL_v1530__fr2, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_scs_120kHz_constr_44, &asn_PER_memb_scs_120kHz_constr_44,  memb_scs_120kHz_constraint_42 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_fr2_oms_42[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_fr2_tags_42[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_fr2_tag2el_42[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_fr2_specs_42 = {
+       sizeof(struct BandNR__channelBWs_UL_v1530__fr2),
+       offsetof(struct BandNR__channelBWs_UL_v1530__fr2, _asn_ctx),
+       asn_MAP_fr2_tag2el_42,
+       2,      /* Count of tags in the map */
+       asn_MAP_fr2_oms_42,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_fr2_42 = {
+       "fr2",
+       "fr2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_fr2_tags_42,
+       sizeof(asn_DEF_fr2_tags_42)
+               /sizeof(asn_DEF_fr2_tags_42[0]) - 1, /* 1 */
+       asn_DEF_fr2_tags_42,    /* Same as above */
+       sizeof(asn_DEF_fr2_tags_42)
+               /sizeof(asn_DEF_fr2_tags_42[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_fr2_42,
+       2,      /* Elements count */
+       &asn_SPC_fr2_specs_42   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_channelBWs_UL_v1530_37[] = {
+       { ATF_POINTER, 0, offsetof(struct BandNR__channelBWs_UL_v1530, choice.fr1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_fr1_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr1"
+               },
+       { ATF_POINTER, 0, offsetof(struct BandNR__channelBWs_UL_v1530, choice.fr2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_fr2_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_channelBWs_UL_v1530_tag2el_37[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fr1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fr2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_channelBWs_UL_v1530_specs_37 = {
+       sizeof(struct BandNR__channelBWs_UL_v1530),
+       offsetof(struct BandNR__channelBWs_UL_v1530, _asn_ctx),
+       offsetof(struct BandNR__channelBWs_UL_v1530, present),
+       sizeof(((struct BandNR__channelBWs_UL_v1530 *)0)->present),
+       asn_MAP_channelBWs_UL_v1530_tag2el_37,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_channelBWs_UL_v1530_37 = {
+       "channelBWs-UL-v1530",
+       "channelBWs-UL-v1530",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_channelBWs_UL_v1530_constr_37, &asn_PER_type_channelBWs_UL_v1530_constr_37, CHOICE_constraint },
+       asn_MBR_channelBWs_UL_v1530_37,
+       2,      /* Elements count */
+       &asn_SPC_channelBWs_UL_v1530_specs_37   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxUplinkDutyCycle_PC2_FR1_value2enum_47[] = {
+       { 0,    3,      "n60" },
+       { 1,    3,      "n70" },
+       { 2,    3,      "n80" },
+       { 3,    3,      "n90" },
+       { 4,    4,      "n100" }
+};
+static const unsigned int asn_MAP_maxUplinkDutyCycle_PC2_FR1_enum2value_47[] = {
+       4,      /* n100(4) */
+       0,      /* n60(0) */
+       1,      /* n70(1) */
+       2,      /* n80(2) */
+       3       /* n90(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxUplinkDutyCycle_PC2_FR1_specs_47 = {
+       asn_MAP_maxUplinkDutyCycle_PC2_FR1_value2enum_47,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxUplinkDutyCycle_PC2_FR1_enum2value_47,       /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47[] = {
+       (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_maxUplinkDutyCycle_PC2_FR1_47 = {
+       "maxUplinkDutyCycle-PC2-FR1",
+       "maxUplinkDutyCycle-PC2-FR1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47,
+       sizeof(asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47)
+               /sizeof(asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47[0]) - 1, /* 1 */
+       asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47,     /* Same as above */
+       sizeof(asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47)
+               /sizeof(asn_DEF_maxUplinkDutyCycle_PC2_FR1_tags_47[0]), /* 2 */
+       { &asn_OER_type_maxUplinkDutyCycle_PC2_FR1_constr_47, &asn_PER_type_maxUplinkDutyCycle_PC2_FR1_constr_47, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxUplinkDutyCycle_PC2_FR1_specs_47    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_46[] = {
+       { ATF_POINTER, 1, offsetof(struct BandNR__ext1, maxUplinkDutyCycle_PC2_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxUplinkDutyCycle_PC2_FR1_47,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxUplinkDutyCycle-PC2-FR1"
+               },
+};
+static const int asn_MAP_ext1_oms_46[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_46[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_46[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* maxUplinkDutyCycle-PC2-FR1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_46 = {
+       sizeof(struct BandNR__ext1),
+       offsetof(struct BandNR__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_46,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_46,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_46 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_46,
+       sizeof(asn_DEF_ext1_tags_46)
+               /sizeof(asn_DEF_ext1_tags_46[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_46,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_46)
+               /sizeof(asn_DEF_ext1_tags_46[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_46,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_46  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BandNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandNR, bandNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandNR"
+               },
+       { ATF_POINTER, 15, offsetof(struct BandNR, modifiedMPR_Behaviour),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_modifiedMPR_Behaviour_constr_3, &asn_PER_memb_modifiedMPR_Behaviour_constr_3,  memb_modifiedMPR_Behaviour_constraint_1 },
+               0, 0, /* No default value */
+               "modifiedMPR-Behaviour"
+               },
+       { ATF_POINTER, 14, offsetof(struct BandNR, mimo_ParametersPerBand),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_ParametersPerBand,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mimo-ParametersPerBand"
+               },
+       { ATF_POINTER, 13, offsetof(struct BandNR, extendedCP),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_extendedCP_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "extendedCP"
+               },
+       { ATF_POINTER, 12, offsetof(struct BandNR, multipleTCI),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleTCI_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleTCI"
+               },
+       { ATF_POINTER, 11, offsetof(struct BandNR, bwp_WithoutRestriction),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bwp_WithoutRestriction_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-WithoutRestriction"
+               },
+       { ATF_POINTER, 10, offsetof(struct BandNR, bwp_SameNumerology),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bwp_SameNumerology_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-SameNumerology"
+               },
+       { ATF_POINTER, 9, offsetof(struct BandNR, bwp_DiffNumerology),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bwp_DiffNumerology_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-DiffNumerology"
+               },
+       { ATF_POINTER, 8, offsetof(struct BandNR, crossCarrierScheduling_SameSCS),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_crossCarrierScheduling_SameSCS_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "crossCarrierScheduling-SameSCS"
+               },
+       { ATF_POINTER, 7, offsetof(struct BandNR, pdsch_256QAM_FR2),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_256QAM_FR2_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-256QAM-FR2"
+               },
+       { ATF_POINTER, 6, offsetof(struct BandNR, pusch_256QAM),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_256QAM_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-256QAM"
+               },
+       { ATF_POINTER, 5, offsetof(struct BandNR, ue_PowerClass),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ue_PowerClass_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-PowerClass"
+               },
+       { ATF_POINTER, 4, offsetof(struct BandNR, rateMatchingLTE_CRS),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rateMatchingLTE_CRS_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchingLTE-CRS"
+               },
+       { ATF_POINTER, 3, offsetof(struct BandNR, channelBWs_DL_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_channelBWs_DL_v1530_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "channelBWs-DL-v1530"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandNR, channelBWs_UL_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_channelBWs_UL_v1530_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "channelBWs-UL-v1530"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandNR, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               0,
+               &asn_DEF_ext1_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_BandNR_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
+static const ber_tlv_tag_t asn_DEF_BandNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BandNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* modifiedMPR-Behaviour */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mimo-ParametersPerBand */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* extendedCP */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* multipleTCI */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* bwp-WithoutRestriction */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* bwp-SameNumerology */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* bwp-DiffNumerology */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* crossCarrierScheduling-SameSCS */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pdsch-256QAM-FR2 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* pusch-256QAM */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ue-PowerClass */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* rateMatchingLTE-CRS */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* channelBWs-DL-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* channelBWs-UL-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BandNR_specs_1 = {
+       sizeof(struct BandNR),
+       offsetof(struct BandNR, _asn_ctx),
+       asn_MAP_BandNR_tag2el_1,
+       16,     /* Count of tags in the map */
+       asn_MAP_BandNR_oms_1,   /* Optional members */
+       14, 1,  /* Root/Additions */
+       15,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BandNR = {
+       "BandNR",
+       "BandNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BandNR_tags_1,
+       sizeof(asn_DEF_BandNR_tags_1)
+               /sizeof(asn_DEF_BandNR_tags_1[0]), /* 1 */
+       asn_DEF_BandNR_tags_1,  /* Same as above */
+       sizeof(asn_DEF_BandNR_tags_1)
+               /sizeof(asn_DEF_BandNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BandNR_1,
+       16,     /* Elements count */
+       &asn_SPC_BandNR_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandNR.h b/src/codec_utils/RRC/BandNR.h
new file mode 100644 (file)
index 0000000..e509416
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandNR_H_
+#define        _BandNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorNR.h"
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BandNR__extendedCP {
+       BandNR__extendedCP_supported    = 0
+} e_BandNR__extendedCP;
+typedef enum BandNR__multipleTCI {
+       BandNR__multipleTCI_supported   = 0
+} e_BandNR__multipleTCI;
+typedef enum BandNR__bwp_WithoutRestriction {
+       BandNR__bwp_WithoutRestriction_supported        = 0
+} e_BandNR__bwp_WithoutRestriction;
+typedef enum BandNR__bwp_SameNumerology {
+       BandNR__bwp_SameNumerology_upto2        = 0,
+       BandNR__bwp_SameNumerology_upto4        = 1
+} e_BandNR__bwp_SameNumerology;
+typedef enum BandNR__bwp_DiffNumerology {
+       BandNR__bwp_DiffNumerology_upto4        = 0
+} e_BandNR__bwp_DiffNumerology;
+typedef enum BandNR__crossCarrierScheduling_SameSCS {
+       BandNR__crossCarrierScheduling_SameSCS_supported        = 0
+} e_BandNR__crossCarrierScheduling_SameSCS;
+typedef enum BandNR__pdsch_256QAM_FR2 {
+       BandNR__pdsch_256QAM_FR2_supported      = 0
+} e_BandNR__pdsch_256QAM_FR2;
+typedef enum BandNR__pusch_256QAM {
+       BandNR__pusch_256QAM_supported  = 0
+} e_BandNR__pusch_256QAM;
+typedef enum BandNR__ue_PowerClass {
+       BandNR__ue_PowerClass_pc1       = 0,
+       BandNR__ue_PowerClass_pc2       = 1,
+       BandNR__ue_PowerClass_pc3       = 2,
+       BandNR__ue_PowerClass_pc4       = 3
+} e_BandNR__ue_PowerClass;
+typedef enum BandNR__rateMatchingLTE_CRS {
+       BandNR__rateMatchingLTE_CRS_supported   = 0
+} e_BandNR__rateMatchingLTE_CRS;
+typedef enum BandNR__channelBWs_DL_v1530_PR {
+       BandNR__channelBWs_DL_v1530_PR_NOTHING, /* No components present */
+       BandNR__channelBWs_DL_v1530_PR_fr1,
+       BandNR__channelBWs_DL_v1530_PR_fr2
+} BandNR__channelBWs_DL_v1530_PR;
+typedef enum BandNR__channelBWs_UL_v1530_PR {
+       BandNR__channelBWs_UL_v1530_PR_NOTHING, /* No components present */
+       BandNR__channelBWs_UL_v1530_PR_fr1,
+       BandNR__channelBWs_UL_v1530_PR_fr2
+} BandNR__channelBWs_UL_v1530_PR;
+typedef enum BandNR__ext1__maxUplinkDutyCycle_PC2_FR1 {
+       BandNR__ext1__maxUplinkDutyCycle_PC2_FR1_n60    = 0,
+       BandNR__ext1__maxUplinkDutyCycle_PC2_FR1_n70    = 1,
+       BandNR__ext1__maxUplinkDutyCycle_PC2_FR1_n80    = 2,
+       BandNR__ext1__maxUplinkDutyCycle_PC2_FR1_n90    = 3,
+       BandNR__ext1__maxUplinkDutyCycle_PC2_FR1_n100   = 4
+} e_BandNR__ext1__maxUplinkDutyCycle_PC2_FR1;
+
+/* Forward declarations */
+struct MIMO_ParametersPerBand;
+
+/* BandNR */
+typedef struct BandNR {
+       FreqBandIndicatorNR_t    bandNR;
+       BIT_STRING_t    *modifiedMPR_Behaviour; /* OPTIONAL */
+       struct MIMO_ParametersPerBand   *mimo_ParametersPerBand;        /* OPTIONAL */
+       long    *extendedCP;    /* OPTIONAL */
+       long    *multipleTCI;   /* OPTIONAL */
+       long    *bwp_WithoutRestriction;        /* OPTIONAL */
+       long    *bwp_SameNumerology;    /* OPTIONAL */
+       long    *bwp_DiffNumerology;    /* OPTIONAL */
+       long    *crossCarrierScheduling_SameSCS;        /* OPTIONAL */
+       long    *pdsch_256QAM_FR2;      /* OPTIONAL */
+       long    *pusch_256QAM;  /* OPTIONAL */
+       long    *ue_PowerClass; /* OPTIONAL */
+       long    *rateMatchingLTE_CRS;   /* OPTIONAL */
+       struct BandNR__channelBWs_DL_v1530 {
+               BandNR__channelBWs_DL_v1530_PR present;
+               union BandNR__channelBWs_DL_v1530_u {
+                       struct BandNR__channelBWs_DL_v1530__fr1 {
+                               BIT_STRING_t    *scs_15kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_30kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_60kHz;     /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *fr1;
+                       struct BandNR__channelBWs_DL_v1530__fr2 {
+                               BIT_STRING_t    *scs_60kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_120kHz;    /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *fr2;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *channelBWs_DL_v1530;
+       struct BandNR__channelBWs_UL_v1530 {
+               BandNR__channelBWs_UL_v1530_PR present;
+               union BandNR__channelBWs_UL_v1530_u {
+                       struct BandNR__channelBWs_UL_v1530__fr1 {
+                               BIT_STRING_t    *scs_15kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_30kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_60kHz;     /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *fr1;
+                       struct BandNR__channelBWs_UL_v1530__fr2 {
+                               BIT_STRING_t    *scs_60kHz;     /* OPTIONAL */
+                               BIT_STRING_t    *scs_120kHz;    /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *fr2;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *channelBWs_UL_v1530;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct BandNR__ext1 {
+               long    *maxUplinkDutyCycle_PC2_FR1;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandNR_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_extendedCP_5;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleTCI_7; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bwp_WithoutRestriction_9;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bwp_SameNumerology_11; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bwp_DiffNumerology_14; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_crossCarrierScheduling_SameSCS_16;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_256QAM_FR2_18;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_256QAM_20;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ue_PowerClass_22;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rateMatchingLTE_CRS_27;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxUplinkDutyCycle_PC2_FR1_47; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BandNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_BandNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandNR_1[16];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BandParameters.c b/src/codec_utils/RRC/BandParameters.c
new file mode 100644 (file)
index 0000000..80926be
--- /dev/null
@@ -0,0 +1,195 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BandParameters.h"
+
+static asn_oer_constraints_t asn_OER_type_BandParameters_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_BandParameters_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eutra_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandParameters__eutra, bandEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandParameters__eutra, ca_BandwidthClassDL_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassDL-EUTRA"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandParameters__eutra, ca_BandwidthClassUL_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassUL-EUTRA"
+               },
+};
+static const int asn_MAP_eutra_oms_2[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_eutra_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eutra_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ca-BandwidthClassDL-EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ca-BandwidthClassUL-EUTRA */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eutra_specs_2 = {
+       sizeof(struct BandParameters__eutra),
+       offsetof(struct BandParameters__eutra, _asn_ctx),
+       asn_MAP_eutra_tag2el_2,
+       3,      /* Count of tags in the map */
+       asn_MAP_eutra_oms_2,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eutra_2 = {
+       "eutra",
+       "eutra",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eutra_tags_2,
+       sizeof(asn_DEF_eutra_tags_2)
+               /sizeof(asn_DEF_eutra_tags_2[0]) - 1, /* 1 */
+       asn_DEF_eutra_tags_2,   /* Same as above */
+       sizeof(asn_DEF_eutra_tags_2)
+               /sizeof(asn_DEF_eutra_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eutra_2,
+       3,      /* Elements count */
+       &asn_SPC_eutra_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nr_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BandParameters__nr, bandNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandNR"
+               },
+       { ATF_POINTER, 2, offsetof(struct BandParameters__nr, ca_BandwidthClassDL_NR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassDL-NR"
+               },
+       { ATF_POINTER, 1, offsetof(struct BandParameters__nr, ca_BandwidthClassUL_NR),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassUL-NR"
+               },
+};
+static const int asn_MAP_nr_oms_6[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_nr_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nr_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ca-BandwidthClassDL-NR */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ca-BandwidthClassUL-NR */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nr_specs_6 = {
+       sizeof(struct BandParameters__nr),
+       offsetof(struct BandParameters__nr, _asn_ctx),
+       asn_MAP_nr_tag2el_6,
+       3,      /* Count of tags in the map */
+       asn_MAP_nr_oms_6,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nr_6 = {
+       "nr",
+       "nr",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nr_tags_6,
+       sizeof(asn_DEF_nr_tags_6)
+               /sizeof(asn_DEF_nr_tags_6[0]) - 1, /* 1 */
+       asn_DEF_nr_tags_6,      /* Same as above */
+       sizeof(asn_DEF_nr_tags_6)
+               /sizeof(asn_DEF_nr_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nr_6,
+       3,      /* Elements count */
+       &asn_SPC_nr_specs_6     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BandParameters_1[] = {
+       { ATF_POINTER, 0, offsetof(struct BandParameters, choice.eutra),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_eutra_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra"
+               },
+       { ATF_POINTER, 0, offsetof(struct BandParameters, choice.nr),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nr_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nr"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_BandParameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nr */
+};
+asn_CHOICE_specifics_t asn_SPC_BandParameters_specs_1 = {
+       sizeof(struct BandParameters),
+       offsetof(struct BandParameters, _asn_ctx),
+       offsetof(struct BandParameters, present),
+       sizeof(((struct BandParameters *)0)->present),
+       asn_MAP_BandParameters_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_BandParameters = {
+       "BandParameters",
+       "BandParameters",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_BandParameters_constr_1, &asn_PER_type_BandParameters_constr_1, CHOICE_constraint },
+       asn_MBR_BandParameters_1,
+       2,      /* Elements count */
+       &asn_SPC_BandParameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BandParameters.h b/src/codec_utils/RRC/BandParameters.h
new file mode 100644 (file)
index 0000000..5073e41
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BandParameters_H_
+#define        _BandParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorEUTRA.h"
+#include "CA-BandwidthClassEUTRA.h"
+#include <constr_SEQUENCE.h>
+#include "FreqBandIndicatorNR.h"
+#include "CA-BandwidthClassNR.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BandParameters_PR {
+       BandParameters_PR_NOTHING,      /* No components present */
+       BandParameters_PR_eutra,
+       BandParameters_PR_nr
+} BandParameters_PR;
+
+/* BandParameters */
+typedef struct BandParameters {
+       BandParameters_PR present;
+       union BandParameters_u {
+               struct BandParameters__eutra {
+                       FreqBandIndicatorEUTRA_t         bandEUTRA;
+                       CA_BandwidthClassEUTRA_t        *ca_BandwidthClassDL_EUTRA;     /* OPTIONAL */
+                       CA_BandwidthClassEUTRA_t        *ca_BandwidthClassUL_EUTRA;     /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *eutra;
+               struct BandParameters__nr {
+                       FreqBandIndicatorNR_t    bandNR;
+                       CA_BandwidthClassNR_t   *ca_BandwidthClassDL_NR;        /* OPTIONAL */
+                       CA_BandwidthClassNR_t   *ca_BandwidthClassUL_NR;        /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *nr;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BandParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BandParameters;
+extern asn_CHOICE_specifics_t asn_SPC_BandParameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_BandParameters_1[2];
+extern asn_per_constraints_t asn_PER_type_BandParameters_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BandParameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BeamFailureRecoveryConfig.c b/src/codec_utils/RRC/BeamFailureRecoveryConfig.c
new file mode 100644 (file)
index 0000000..904803d
--- /dev/null
@@ -0,0 +1,457 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BeamFailureRecoveryConfig.h"
+
+#include "RACH-ConfigGeneric.h"
+#include "RA-Prioritization.h"
+#include "PRACH-ResourceDedicatedBFR.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.
+ */
+static int
+memb_rootSequenceIndex_BFR_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 >= 0 && value <= 137)) {
+               /* 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_candidateBeamRSList_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 <= 16)) {
+               /* 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_ra_ssb_OccasionMaskIndex_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_candidateBeamRSList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_candidateBeamRSList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_perRACH_Occasion_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_perRACH_Occasion_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_beamFailureRecoveryTimer_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_beamFailureRecoveryTimer_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rootSequenceIndex_BFR_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..137) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_rootSequenceIndex_BFR_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  137 }      /* (0..137) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_candidateBeamRSList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_candidateBeamRSList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_candidateBeamRSList_5[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_PRACH_ResourceDedicatedBFR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_candidateBeamRSList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_candidateBeamRSList_specs_5 = {
+       sizeof(struct BeamFailureRecoveryConfig__candidateBeamRSList),
+       offsetof(struct BeamFailureRecoveryConfig__candidateBeamRSList, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_candidateBeamRSList_5 = {
+       "candidateBeamRSList",
+       "candidateBeamRSList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_candidateBeamRSList_tags_5,
+       sizeof(asn_DEF_candidateBeamRSList_tags_5)
+               /sizeof(asn_DEF_candidateBeamRSList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_candidateBeamRSList_tags_5,     /* Same as above */
+       sizeof(asn_DEF_candidateBeamRSList_tags_5)
+               /sizeof(asn_DEF_candidateBeamRSList_tags_5[0]), /* 2 */
+       { &asn_OER_type_candidateBeamRSList_constr_5, &asn_PER_type_candidateBeamRSList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_candidateBeamRSList_5,
+       1,      /* Single element */
+       &asn_SPC_candidateBeamRSList_specs_5    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_perRACH_Occasion_value2enum_7[] = {
+       { 0,    9,      "oneEighth" },
+       { 1,    9,      "oneFourth" },
+       { 2,    7,      "oneHalf" },
+       { 3,    3,      "one" },
+       { 4,    3,      "two" },
+       { 5,    4,      "four" },
+       { 6,    5,      "eight" },
+       { 7,    7,      "sixteen" }
+};
+static const unsigned int asn_MAP_ssb_perRACH_Occasion_enum2value_7[] = {
+       6,      /* eight(6) */
+       5,      /* four(5) */
+       3,      /* one(3) */
+       0,      /* oneEighth(0) */
+       1,      /* oneFourth(1) */
+       2,      /* oneHalf(2) */
+       7,      /* sixteen(7) */
+       4       /* two(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_perRACH_Occasion_specs_7 = {
+       asn_MAP_ssb_perRACH_Occasion_value2enum_7,      /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_perRACH_Occasion_enum2value_7,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_perRACH_Occasion_tags_7[] = {
+       (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_ssb_perRACH_Occasion_7 = {
+       "ssb-perRACH-Occasion",
+       "ssb-perRACH-Occasion",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_perRACH_Occasion_tags_7,
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_7)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_7[0]) - 1, /* 1 */
+       asn_DEF_ssb_perRACH_Occasion_tags_7,    /* Same as above */
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_7)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_7[0]), /* 2 */
+       { &asn_OER_type_ssb_perRACH_Occasion_constr_7, &asn_PER_type_ssb_perRACH_Occasion_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_perRACH_Occasion_specs_7   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_beamFailureRecoveryTimer_value2enum_19[] = {
+       { 0,    4,      "ms10" },
+       { 1,    4,      "ms20" },
+       { 2,    4,      "ms40" },
+       { 3,    4,      "ms60" },
+       { 4,    4,      "ms80" },
+       { 5,    5,      "ms100" },
+       { 6,    5,      "ms150" },
+       { 7,    5,      "ms200" }
+};
+static const unsigned int asn_MAP_beamFailureRecoveryTimer_enum2value_19[] = {
+       0,      /* ms10(0) */
+       5,      /* ms100(5) */
+       6,      /* ms150(6) */
+       1,      /* ms20(1) */
+       7,      /* ms200(7) */
+       2,      /* ms40(2) */
+       3,      /* ms60(3) */
+       4       /* ms80(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_beamFailureRecoveryTimer_specs_19 = {
+       asn_MAP_beamFailureRecoveryTimer_value2enum_19, /* "tag" => N; sorted by tag */
+       asn_MAP_beamFailureRecoveryTimer_enum2value_19, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_beamFailureRecoveryTimer_tags_19[] = {
+       (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_beamFailureRecoveryTimer_19 = {
+       "beamFailureRecoveryTimer",
+       "beamFailureRecoveryTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_beamFailureRecoveryTimer_tags_19,
+       sizeof(asn_DEF_beamFailureRecoveryTimer_tags_19)
+               /sizeof(asn_DEF_beamFailureRecoveryTimer_tags_19[0]) - 1, /* 1 */
+       asn_DEF_beamFailureRecoveryTimer_tags_19,       /* Same as above */
+       sizeof(asn_DEF_beamFailureRecoveryTimer_tags_19)
+               /sizeof(asn_DEF_beamFailureRecoveryTimer_tags_19[0]), /* 2 */
+       { &asn_OER_type_beamFailureRecoveryTimer_constr_19, &asn_PER_type_beamFailureRecoveryTimer_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_beamFailureRecoveryTimer_specs_19      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_29[] = {
+       { ATF_POINTER, 1, offsetof(struct BeamFailureRecoveryConfig__ext1, msg1_SubcarrierSpacing_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "msg1-SubcarrierSpacing-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_29[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_29[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* msg1-SubcarrierSpacing-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_29 = {
+       sizeof(struct BeamFailureRecoveryConfig__ext1),
+       offsetof(struct BeamFailureRecoveryConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_29,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_29,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_29 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_29,
+       sizeof(asn_DEF_ext1_tags_29)
+               /sizeof(asn_DEF_ext1_tags_29[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_29,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_29)
+               /sizeof(asn_DEF_ext1_tags_29[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_29,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_29  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BeamFailureRecoveryConfig_1[] = {
+       { ATF_POINTER, 10, offsetof(struct BeamFailureRecoveryConfig, rootSequenceIndex_BFR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_rootSequenceIndex_BFR_constr_2, &asn_PER_memb_rootSequenceIndex_BFR_constr_2,  memb_rootSequenceIndex_BFR_constraint_1 },
+               0, 0, /* No default value */
+               "rootSequenceIndex-BFR"
+               },
+       { ATF_POINTER, 9, offsetof(struct BeamFailureRecoveryConfig, rach_ConfigBFR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigGeneric,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigBFR"
+               },
+       { ATF_POINTER, 8, offsetof(struct BeamFailureRecoveryConfig, rsrp_ThresholdSSB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp-ThresholdSSB"
+               },
+       { ATF_POINTER, 7, offsetof(struct BeamFailureRecoveryConfig, candidateBeamRSList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_candidateBeamRSList_5,
+               0,
+               { &asn_OER_memb_candidateBeamRSList_constr_5, &asn_PER_memb_candidateBeamRSList_constr_5,  memb_candidateBeamRSList_constraint_1 },
+               0, 0, /* No default value */
+               "candidateBeamRSList"
+               },
+       { ATF_POINTER, 6, offsetof(struct BeamFailureRecoveryConfig, ssb_perRACH_Occasion),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_perRACH_Occasion_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-perRACH-Occasion"
+               },
+       { ATF_POINTER, 5, offsetof(struct BeamFailureRecoveryConfig, ra_ssb_OccasionMaskIndex),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_16, &asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_16,  memb_ra_ssb_OccasionMaskIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-ssb-OccasionMaskIndex"
+               },
+       { ATF_POINTER, 4, offsetof(struct BeamFailureRecoveryConfig, recoverySearchSpaceId),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "recoverySearchSpaceId"
+               },
+       { ATF_POINTER, 3, offsetof(struct BeamFailureRecoveryConfig, ra_Prioritization),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RA_Prioritization,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-Prioritization"
+               },
+       { ATF_POINTER, 2, offsetof(struct BeamFailureRecoveryConfig, beamFailureRecoveryTimer),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_beamFailureRecoveryTimer_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamFailureRecoveryTimer"
+               },
+       { ATF_POINTER, 1, offsetof(struct BeamFailureRecoveryConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_ext1_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_BeamFailureRecoveryConfig_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+static const ber_tlv_tag_t asn_DEF_BeamFailureRecoveryConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BeamFailureRecoveryConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rootSequenceIndex-BFR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rach-ConfigBFR */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rsrp-ThresholdSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* candidateBeamRSList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ssb-perRACH-Occasion */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ra-ssb-OccasionMaskIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* recoverySearchSpaceId */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ra-Prioritization */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* beamFailureRecoveryTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BeamFailureRecoveryConfig_specs_1 = {
+       sizeof(struct BeamFailureRecoveryConfig),
+       offsetof(struct BeamFailureRecoveryConfig, _asn_ctx),
+       asn_MAP_BeamFailureRecoveryConfig_tag2el_1,
+       10,     /* Count of tags in the map */
+       asn_MAP_BeamFailureRecoveryConfig_oms_1,        /* Optional members */
+       9, 1,   /* Root/Additions */
+       9,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BeamFailureRecoveryConfig = {
+       "BeamFailureRecoveryConfig",
+       "BeamFailureRecoveryConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BeamFailureRecoveryConfig_tags_1,
+       sizeof(asn_DEF_BeamFailureRecoveryConfig_tags_1)
+               /sizeof(asn_DEF_BeamFailureRecoveryConfig_tags_1[0]), /* 1 */
+       asn_DEF_BeamFailureRecoveryConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_BeamFailureRecoveryConfig_tags_1)
+               /sizeof(asn_DEF_BeamFailureRecoveryConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BeamFailureRecoveryConfig_1,
+       10,     /* Elements count */
+       &asn_SPC_BeamFailureRecoveryConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BeamFailureRecoveryConfig.h b/src/codec_utils/RRC/BeamFailureRecoveryConfig.h
new file mode 100644 (file)
index 0000000..1384937
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BeamFailureRecoveryConfig_H_
+#define        _BeamFailureRecoveryConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "RSRP-Range.h"
+#include <NativeEnumerated.h>
+#include "SearchSpaceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "SubcarrierSpacing.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BeamFailureRecoveryConfig__ssb_perRACH_Occasion {
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_oneEighth       = 0,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_oneFourth       = 1,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_oneHalf = 2,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_one     = 3,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_two     = 4,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_four    = 5,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_eight   = 6,
+       BeamFailureRecoveryConfig__ssb_perRACH_Occasion_sixteen = 7
+} e_BeamFailureRecoveryConfig__ssb_perRACH_Occasion;
+typedef enum BeamFailureRecoveryConfig__beamFailureRecoveryTimer {
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms10        = 0,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms20        = 1,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms40        = 2,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms60        = 3,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms80        = 4,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms100       = 5,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms150       = 6,
+       BeamFailureRecoveryConfig__beamFailureRecoveryTimer_ms200       = 7
+} e_BeamFailureRecoveryConfig__beamFailureRecoveryTimer;
+
+/* Forward declarations */
+struct RACH_ConfigGeneric;
+struct RA_Prioritization;
+struct PRACH_ResourceDedicatedBFR;
+
+/* BeamFailureRecoveryConfig */
+typedef struct BeamFailureRecoveryConfig {
+       long    *rootSequenceIndex_BFR; /* OPTIONAL */
+       struct RACH_ConfigGeneric       *rach_ConfigBFR;        /* OPTIONAL */
+       RSRP_Range_t    *rsrp_ThresholdSSB;     /* OPTIONAL */
+       struct BeamFailureRecoveryConfig__candidateBeamRSList {
+               A_SEQUENCE_OF(struct PRACH_ResourceDedicatedBFR) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *candidateBeamRSList;
+       long    *ssb_perRACH_Occasion;  /* OPTIONAL */
+       long    *ra_ssb_OccasionMaskIndex;      /* OPTIONAL */
+       SearchSpaceId_t *recoverySearchSpaceId; /* OPTIONAL */
+       struct RA_Prioritization        *ra_Prioritization;     /* OPTIONAL */
+       long    *beamFailureRecoveryTimer;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct BeamFailureRecoveryConfig__ext1 {
+               SubcarrierSpacing_t     *msg1_SubcarrierSpacing_v1530;  /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BeamFailureRecoveryConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_Occasion_7;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_beamFailureRecoveryTimer_19;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BeamFailureRecoveryConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_BeamFailureRecoveryConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_BeamFailureRecoveryConfig_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BeamFailureRecoveryConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BeamManagementSSB-CSI-RS.c b/src/codec_utils/RRC/BeamManagementSSB-CSI-RS.c
new file mode 100644 (file)
index 0000000..99c7d90
--- /dev/null
@@ -0,0 +1,233 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BeamManagementSSB-CSI-RS.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.
+ */
+static asn_oer_constraints_t asn_OER_type_maxNumberSSB_CSI_RS_ResourceOneTx_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberSSB_CSI_RS_ResourceOneTx_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberCSI_RS_ResourceTwoTx_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberCSI_RS_ResourceTwoTx_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_supportedCSI_RS_Density_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedCSI_RS_Density_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberSSB_CSI_RS_ResourceOneTx_value2enum_2[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n16" },
+       { 3,    3,      "n32" },
+       { 4,    3,      "n64" }
+};
+static const unsigned int asn_MAP_maxNumberSSB_CSI_RS_ResourceOneTx_enum2value_2[] = {
+       0,      /* n0(0) */
+       2,      /* n16(2) */
+       3,      /* n32(3) */
+       4,      /* n64(4) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberSSB_CSI_RS_ResourceOneTx_specs_2 = {
+       asn_MAP_maxNumberSSB_CSI_RS_ResourceOneTx_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberSSB_CSI_RS_ResourceOneTx_enum2value_2, /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_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_maxNumberSSB_CSI_RS_ResourceOneTx_2 = {
+       "maxNumberSSB-CSI-RS-ResourceOneTx",
+       "maxNumberSSB-CSI-RS-ResourceOneTx",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2,
+       sizeof(asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2)
+               /sizeof(asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2,       /* Same as above */
+       sizeof(asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2)
+               /sizeof(asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberSSB_CSI_RS_ResourceOneTx_constr_2, &asn_PER_type_maxNumberSSB_CSI_RS_ResourceOneTx_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberSSB_CSI_RS_ResourceOneTx_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberCSI_RS_ResourceTwoTx_value2enum_8[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n32" },
+       { 5,    3,      "n64" }
+};
+static const unsigned int asn_MAP_maxNumberCSI_RS_ResourceTwoTx_enum2value_8[] = {
+       0,      /* n0(0) */
+       3,      /* n16(3) */
+       4,      /* n32(4) */
+       1,      /* n4(1) */
+       5,      /* n64(5) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberCSI_RS_ResourceTwoTx_specs_8 = {
+       asn_MAP_maxNumberCSI_RS_ResourceTwoTx_value2enum_8,     /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberCSI_RS_ResourceTwoTx_enum2value_8,     /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8[] = {
+       (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_maxNumberCSI_RS_ResourceTwoTx_8 = {
+       "maxNumberCSI-RS-ResourceTwoTx",
+       "maxNumberCSI-RS-ResourceTwoTx",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8,
+       sizeof(asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8)
+               /sizeof(asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8[0]) - 1, /* 1 */
+       asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8,   /* Same as above */
+       sizeof(asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8)
+               /sizeof(asn_DEF_maxNumberCSI_RS_ResourceTwoTx_tags_8[0]), /* 2 */
+       { &asn_OER_type_maxNumberCSI_RS_ResourceTwoTx_constr_8, &asn_PER_type_maxNumberCSI_RS_ResourceTwoTx_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberCSI_RS_ResourceTwoTx_specs_8  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedCSI_RS_Density_value2enum_15[] = {
+       { 0,    3,      "one" },
+       { 1,    5,      "three" },
+       { 2,    11,     "oneAndThree" }
+};
+static const unsigned int asn_MAP_supportedCSI_RS_Density_enum2value_15[] = {
+       0,      /* one(0) */
+       2,      /* oneAndThree(2) */
+       1       /* three(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedCSI_RS_Density_specs_15 = {
+       asn_MAP_supportedCSI_RS_Density_value2enum_15,  /* "tag" => N; sorted by tag */
+       asn_MAP_supportedCSI_RS_Density_enum2value_15,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedCSI_RS_Density_tags_15[] = {
+       (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_supportedCSI_RS_Density_15 = {
+       "supportedCSI-RS-Density",
+       "supportedCSI-RS-Density",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedCSI_RS_Density_tags_15,
+       sizeof(asn_DEF_supportedCSI_RS_Density_tags_15)
+               /sizeof(asn_DEF_supportedCSI_RS_Density_tags_15[0]) - 1, /* 1 */
+       asn_DEF_supportedCSI_RS_Density_tags_15,        /* Same as above */
+       sizeof(asn_DEF_supportedCSI_RS_Density_tags_15)
+               /sizeof(asn_DEF_supportedCSI_RS_Density_tags_15[0]), /* 2 */
+       { &asn_OER_type_supportedCSI_RS_Density_constr_15, &asn_PER_type_supportedCSI_RS_Density_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedCSI_RS_Density_specs_15       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_BeamManagementSSB_CSI_RS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct BeamManagementSSB_CSI_RS, maxNumberSSB_CSI_RS_ResourceOneTx),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberSSB-CSI-RS-ResourceOneTx"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BeamManagementSSB_CSI_RS, maxNumberCSI_RS_ResourceTwoTx),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberCSI_RS_ResourceTwoTx_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-ResourceTwoTx"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct BeamManagementSSB_CSI_RS, supportedCSI_RS_Density),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedCSI_RS_Density_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedCSI-RS-Density"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_BeamManagementSSB_CSI_RS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BeamManagementSSB_CSI_RS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberSSB-CSI-RS-ResourceOneTx */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberCSI-RS-ResourceTwoTx */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* supportedCSI-RS-Density */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BeamManagementSSB_CSI_RS_specs_1 = {
+       sizeof(struct BeamManagementSSB_CSI_RS),
+       offsetof(struct BeamManagementSSB_CSI_RS, _asn_ctx),
+       asn_MAP_BeamManagementSSB_CSI_RS_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BeamManagementSSB_CSI_RS = {
+       "BeamManagementSSB-CSI-RS",
+       "BeamManagementSSB-CSI-RS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BeamManagementSSB_CSI_RS_tags_1,
+       sizeof(asn_DEF_BeamManagementSSB_CSI_RS_tags_1)
+               /sizeof(asn_DEF_BeamManagementSSB_CSI_RS_tags_1[0]), /* 1 */
+       asn_DEF_BeamManagementSSB_CSI_RS_tags_1,        /* Same as above */
+       sizeof(asn_DEF_BeamManagementSSB_CSI_RS_tags_1)
+               /sizeof(asn_DEF_BeamManagementSSB_CSI_RS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BeamManagementSSB_CSI_RS_1,
+       3,      /* Elements count */
+       &asn_SPC_BeamManagementSSB_CSI_RS_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BeamManagementSSB-CSI-RS.h b/src/codec_utils/RRC/BeamManagementSSB-CSI-RS.h
new file mode 100644 (file)
index 0000000..5544bd9
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BeamManagementSSB_CSI_RS_H_
+#define        _BeamManagementSSB_CSI_RS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx {
+       BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx_n0  = 0,
+       BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx_n8  = 1,
+       BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx_n16 = 2,
+       BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx_n32 = 3,
+       BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx_n64 = 4
+} e_BeamManagementSSB_CSI_RS__maxNumberSSB_CSI_RS_ResourceOneTx;
+typedef enum BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx {
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n0      = 0,
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n4      = 1,
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n8      = 2,
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n16     = 3,
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n32     = 4,
+       BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx_n64     = 5
+} e_BeamManagementSSB_CSI_RS__maxNumberCSI_RS_ResourceTwoTx;
+typedef enum BeamManagementSSB_CSI_RS__supportedCSI_RS_Density {
+       BeamManagementSSB_CSI_RS__supportedCSI_RS_Density_one   = 0,
+       BeamManagementSSB_CSI_RS__supportedCSI_RS_Density_three = 1,
+       BeamManagementSSB_CSI_RS__supportedCSI_RS_Density_oneAndThree   = 2
+} e_BeamManagementSSB_CSI_RS__supportedCSI_RS_Density;
+
+/* BeamManagementSSB-CSI-RS */
+typedef struct BeamManagementSSB_CSI_RS {
+       long     maxNumberSSB_CSI_RS_ResourceOneTx;
+       long     maxNumberCSI_RS_ResourceTwoTx;
+       long     supportedCSI_RS_Density;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BeamManagementSSB_CSI_RS_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberSSB_CSI_RS_ResourceOneTx_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberCSI_RS_ResourceTwoTx_8;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedCSI_RS_Density_15;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_BeamManagementSSB_CSI_RS;
+extern asn_SEQUENCE_specifics_t asn_SPC_BeamManagementSSB_CSI_RS_specs_1;
+extern asn_TYPE_member_t asn_MBR_BeamManagementSSB_CSI_RS_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BeamManagementSSB_CSI_RS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/BetaOffsets.c b/src/codec_utils/RRC/BetaOffsets.c
new file mode 100644 (file)
index 0000000..3b957a1
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "BetaOffsets.h"
+
+static int
+memb_betaOffsetACK_Index1_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetACK_Index2_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetACK_Index3_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetCSI_Part1_Index1_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetCSI_Part1_Index2_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetCSI_Part2_Index1_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetCSI_Part2_Index2_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 >= 0 && value <= 31)) {
+               /* 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_betaOffsetACK_Index1_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetACK_Index1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetACK_Index2_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetACK_Index2_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetACK_Index3_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetACK_Index3_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetCSI_Part1_Index1_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetCSI_Part1_Index1_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetCSI_Part1_Index2_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetCSI_Part1_Index2_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetCSI_Part2_Index1_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetCSI_Part2_Index1_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_betaOffsetCSI_Part2_Index2_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_betaOffsetCSI_Part2_Index2_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_BetaOffsets_1[] = {
+       { ATF_POINTER, 7, offsetof(struct BetaOffsets, betaOffsetACK_Index1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetACK_Index1_constr_2, &asn_PER_memb_betaOffsetACK_Index1_constr_2,  memb_betaOffsetACK_Index1_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetACK-Index1"
+               },
+       { ATF_POINTER, 6, offsetof(struct BetaOffsets, betaOffsetACK_Index2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetACK_Index2_constr_3, &asn_PER_memb_betaOffsetACK_Index2_constr_3,  memb_betaOffsetACK_Index2_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetACK-Index2"
+               },
+       { ATF_POINTER, 5, offsetof(struct BetaOffsets, betaOffsetACK_Index3),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetACK_Index3_constr_4, &asn_PER_memb_betaOffsetACK_Index3_constr_4,  memb_betaOffsetACK_Index3_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetACK-Index3"
+               },
+       { ATF_POINTER, 4, offsetof(struct BetaOffsets, betaOffsetCSI_Part1_Index1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetCSI_Part1_Index1_constr_5, &asn_PER_memb_betaOffsetCSI_Part1_Index1_constr_5,  memb_betaOffsetCSI_Part1_Index1_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetCSI-Part1-Index1"
+               },
+       { ATF_POINTER, 3, offsetof(struct BetaOffsets, betaOffsetCSI_Part1_Index2),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetCSI_Part1_Index2_constr_6, &asn_PER_memb_betaOffsetCSI_Part1_Index2_constr_6,  memb_betaOffsetCSI_Part1_Index2_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetCSI-Part1-Index2"
+               },
+       { ATF_POINTER, 2, offsetof(struct BetaOffsets, betaOffsetCSI_Part2_Index1),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetCSI_Part2_Index1_constr_7, &asn_PER_memb_betaOffsetCSI_Part2_Index1_constr_7,  memb_betaOffsetCSI_Part2_Index1_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetCSI-Part2-Index1"
+               },
+       { ATF_POINTER, 1, offsetof(struct BetaOffsets, betaOffsetCSI_Part2_Index2),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_betaOffsetCSI_Part2_Index2_constr_8, &asn_PER_memb_betaOffsetCSI_Part2_Index2_constr_8,  memb_betaOffsetCSI_Part2_Index2_constraint_1 },
+               0, 0, /* No default value */
+               "betaOffsetCSI-Part2-Index2"
+               },
+};
+static const int asn_MAP_BetaOffsets_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_BetaOffsets_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_BetaOffsets_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* betaOffsetACK-Index1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* betaOffsetACK-Index2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* betaOffsetACK-Index3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* betaOffsetCSI-Part1-Index1 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* betaOffsetCSI-Part1-Index2 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* betaOffsetCSI-Part2-Index1 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* betaOffsetCSI-Part2-Index2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_BetaOffsets_specs_1 = {
+       sizeof(struct BetaOffsets),
+       offsetof(struct BetaOffsets, _asn_ctx),
+       asn_MAP_BetaOffsets_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_BetaOffsets_oms_1,      /* Optional members */
+       7, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_BetaOffsets = {
+       "BetaOffsets",
+       "BetaOffsets",
+       &asn_OP_SEQUENCE,
+       asn_DEF_BetaOffsets_tags_1,
+       sizeof(asn_DEF_BetaOffsets_tags_1)
+               /sizeof(asn_DEF_BetaOffsets_tags_1[0]), /* 1 */
+       asn_DEF_BetaOffsets_tags_1,     /* Same as above */
+       sizeof(asn_DEF_BetaOffsets_tags_1)
+               /sizeof(asn_DEF_BetaOffsets_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_BetaOffsets_1,
+       7,      /* Elements count */
+       &asn_SPC_BetaOffsets_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/BetaOffsets.h b/src/codec_utils/RRC/BetaOffsets.h
new file mode 100644 (file)
index 0000000..1af05d1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _BetaOffsets_H_
+#define        _BetaOffsets_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BetaOffsets */
+typedef struct BetaOffsets {
+       long    *betaOffsetACK_Index1;  /* OPTIONAL */
+       long    *betaOffsetACK_Index2;  /* OPTIONAL */
+       long    *betaOffsetACK_Index3;  /* OPTIONAL */
+       long    *betaOffsetCSI_Part1_Index1;    /* OPTIONAL */
+       long    *betaOffsetCSI_Part1_Index2;    /* OPTIONAL */
+       long    *betaOffsetCSI_Part2_Index1;    /* OPTIONAL */
+       long    *betaOffsetCSI_Part2_Index2;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} BetaOffsets_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BetaOffsets;
+extern asn_SEQUENCE_specifics_t asn_SPC_BetaOffsets_specs_1;
+extern asn_TYPE_member_t asn_MBR_BetaOffsets_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _BetaOffsets_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CA-BandwidthClassEUTRA.c b/src/codec_utils/RRC/CA-BandwidthClassEUTRA.c
new file mode 100644 (file)
index 0000000..3316d1c
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CA-BandwidthClassEUTRA.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_CA_BandwidthClassEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CA_BandwidthClassEUTRA_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_CA_BandwidthClassEUTRA_value2enum_1[] = {
+       { 0,    1,      "a" },
+       { 1,    1,      "b" },
+       { 2,    1,      "c" },
+       { 3,    1,      "d" },
+       { 4,    1,      "e" },
+       { 5,    1,      "f" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_CA_BandwidthClassEUTRA_enum2value_1[] = {
+       0,      /* a(0) */
+       1,      /* b(1) */
+       2,      /* c(2) */
+       3,      /* d(3) */
+       4,      /* e(4) */
+       5       /* f(5) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_CA_BandwidthClassEUTRA_specs_1 = {
+       asn_MAP_CA_BandwidthClassEUTRA_value2enum_1,    /* "tag" => N; sorted by tag */
+       asn_MAP_CA_BandwidthClassEUTRA_enum2value_1,    /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       7,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_CA_BandwidthClassEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CA_BandwidthClassEUTRA = {
+       "CA-BandwidthClassEUTRA",
+       "CA-BandwidthClassEUTRA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_CA_BandwidthClassEUTRA_tags_1,
+       sizeof(asn_DEF_CA_BandwidthClassEUTRA_tags_1)
+               /sizeof(asn_DEF_CA_BandwidthClassEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_CA_BandwidthClassEUTRA_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CA_BandwidthClassEUTRA_tags_1)
+               /sizeof(asn_DEF_CA_BandwidthClassEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_CA_BandwidthClassEUTRA_constr_1, &asn_PER_type_CA_BandwidthClassEUTRA_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_CA_BandwidthClassEUTRA_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CA-BandwidthClassEUTRA.h b/src/codec_utils/RRC/CA-BandwidthClassEUTRA.h
new file mode 100644 (file)
index 0000000..3f25a8d
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CA_BandwidthClassEUTRA_H_
+#define        _CA_BandwidthClassEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CA_BandwidthClassEUTRA {
+       CA_BandwidthClassEUTRA_a        = 0,
+       CA_BandwidthClassEUTRA_b        = 1,
+       CA_BandwidthClassEUTRA_c        = 2,
+       CA_BandwidthClassEUTRA_d        = 3,
+       CA_BandwidthClassEUTRA_e        = 4,
+       CA_BandwidthClassEUTRA_f        = 5
+       /*
+        * Enumeration is extensible
+        */
+} e_CA_BandwidthClassEUTRA;
+
+/* CA-BandwidthClassEUTRA */
+typedef long    CA_BandwidthClassEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CA_BandwidthClassEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CA_BandwidthClassEUTRA;
+extern const asn_INTEGER_specifics_t asn_SPC_CA_BandwidthClassEUTRA_specs_1;
+asn_struct_free_f CA_BandwidthClassEUTRA_free;
+asn_struct_print_f CA_BandwidthClassEUTRA_print;
+asn_constr_check_f CA_BandwidthClassEUTRA_constraint;
+ber_type_decoder_f CA_BandwidthClassEUTRA_decode_ber;
+der_type_encoder_f CA_BandwidthClassEUTRA_encode_der;
+xer_type_decoder_f CA_BandwidthClassEUTRA_decode_xer;
+xer_type_encoder_f CA_BandwidthClassEUTRA_encode_xer;
+oer_type_decoder_f CA_BandwidthClassEUTRA_decode_oer;
+oer_type_encoder_f CA_BandwidthClassEUTRA_encode_oer;
+per_type_decoder_f CA_BandwidthClassEUTRA_decode_uper;
+per_type_encoder_f CA_BandwidthClassEUTRA_encode_uper;
+per_type_decoder_f CA_BandwidthClassEUTRA_decode_aper;
+per_type_encoder_f CA_BandwidthClassEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CA_BandwidthClassEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CA-BandwidthClassNR.c b/src/codec_utils/RRC/CA-BandwidthClassNR.c
new file mode 100644 (file)
index 0000000..93f749a
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CA-BandwidthClassNR.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_CA_BandwidthClassNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CA_BandwidthClassNR_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  5,  5,  0,  16 }   /* (0..16,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CA_BandwidthClassNR_value2enum_1[] = {
+       { 0,    1,      "a" },
+       { 1,    1,      "b" },
+       { 2,    1,      "c" },
+       { 3,    1,      "d" },
+       { 4,    1,      "e" },
+       { 5,    1,      "f" },
+       { 6,    1,      "g" },
+       { 7,    1,      "h" },
+       { 8,    1,      "i" },
+       { 9,    1,      "j" },
+       { 10,   1,      "k" },
+       { 11,   1,      "l" },
+       { 12,   1,      "m" },
+       { 13,   1,      "n" },
+       { 14,   1,      "o" },
+       { 15,   1,      "p" },
+       { 16,   1,      "q" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_CA_BandwidthClassNR_enum2value_1[] = {
+       0,      /* a(0) */
+       1,      /* b(1) */
+       2,      /* c(2) */
+       3,      /* d(3) */
+       4,      /* e(4) */
+       5,      /* f(5) */
+       6,      /* g(6) */
+       7,      /* h(7) */
+       8,      /* i(8) */
+       9,      /* j(9) */
+       10,     /* k(10) */
+       11,     /* l(11) */
+       12,     /* m(12) */
+       13,     /* n(13) */
+       14,     /* o(14) */
+       15,     /* p(15) */
+       16      /* q(16) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_CA_BandwidthClassNR_specs_1 = {
+       asn_MAP_CA_BandwidthClassNR_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_CA_BandwidthClassNR_enum2value_1,       /* N => "tag"; sorted by N */
+       17,     /* Number of elements in the maps */
+       18,     /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_CA_BandwidthClassNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CA_BandwidthClassNR = {
+       "CA-BandwidthClassNR",
+       "CA-BandwidthClassNR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_CA_BandwidthClassNR_tags_1,
+       sizeof(asn_DEF_CA_BandwidthClassNR_tags_1)
+               /sizeof(asn_DEF_CA_BandwidthClassNR_tags_1[0]), /* 1 */
+       asn_DEF_CA_BandwidthClassNR_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CA_BandwidthClassNR_tags_1)
+               /sizeof(asn_DEF_CA_BandwidthClassNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_CA_BandwidthClassNR_constr_1, &asn_PER_type_CA_BandwidthClassNR_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_CA_BandwidthClassNR_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CA-BandwidthClassNR.h b/src/codec_utils/RRC/CA-BandwidthClassNR.h
new file mode 100644 (file)
index 0000000..2458d07
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CA_BandwidthClassNR_H_
+#define        _CA_BandwidthClassNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CA_BandwidthClassNR {
+       CA_BandwidthClassNR_a   = 0,
+       CA_BandwidthClassNR_b   = 1,
+       CA_BandwidthClassNR_c   = 2,
+       CA_BandwidthClassNR_d   = 3,
+       CA_BandwidthClassNR_e   = 4,
+       CA_BandwidthClassNR_f   = 5,
+       CA_BandwidthClassNR_g   = 6,
+       CA_BandwidthClassNR_h   = 7,
+       CA_BandwidthClassNR_i   = 8,
+       CA_BandwidthClassNR_j   = 9,
+       CA_BandwidthClassNR_k   = 10,
+       CA_BandwidthClassNR_l   = 11,
+       CA_BandwidthClassNR_m   = 12,
+       CA_BandwidthClassNR_n   = 13,
+       CA_BandwidthClassNR_o   = 14,
+       CA_BandwidthClassNR_p   = 15,
+       CA_BandwidthClassNR_q   = 16
+       /*
+        * Enumeration is extensible
+        */
+} e_CA_BandwidthClassNR;
+
+/* CA-BandwidthClassNR */
+typedef long    CA_BandwidthClassNR_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CA_BandwidthClassNR_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CA_BandwidthClassNR;
+extern const asn_INTEGER_specifics_t asn_SPC_CA_BandwidthClassNR_specs_1;
+asn_struct_free_f CA_BandwidthClassNR_free;
+asn_struct_print_f CA_BandwidthClassNR_print;
+asn_constr_check_f CA_BandwidthClassNR_constraint;
+ber_type_decoder_f CA_BandwidthClassNR_decode_ber;
+der_type_encoder_f CA_BandwidthClassNR_encode_der;
+xer_type_decoder_f CA_BandwidthClassNR_decode_xer;
+xer_type_encoder_f CA_BandwidthClassNR_encode_xer;
+oer_type_decoder_f CA_BandwidthClassNR_decode_oer;
+oer_type_encoder_f CA_BandwidthClassNR_encode_oer;
+per_type_decoder_f CA_BandwidthClassNR_decode_uper;
+per_type_encoder_f CA_BandwidthClassNR_encode_uper;
+per_type_decoder_f CA_BandwidthClassNR_decode_aper;
+per_type_encoder_f CA_BandwidthClassNR_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CA_BandwidthClassNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CA-ParametersEUTRA.c b/src/codec_utils/RRC/CA-ParametersEUTRA.c
new file mode 100644 (file)
index 0000000..646789c
--- /dev/null
@@ -0,0 +1,368 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CA-ParametersEUTRA.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.
+ */
+static int
+memb_supportedNAICS_2CRS_AP_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 >= 1 && 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;
+       }
+}
+
+static int
+memb_supportedBandwidthCombinationSetEUTRA_v1530_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 >= 1 && 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_type_multipleTimingAdvance_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleTimingAdvance_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousRx_Tx_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousRx_Tx_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_additionalRx_Tx_PerformanceReq_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_additionalRx_Tx_PerformanceReq_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ue_CA_PowerClass_N_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ue_CA_PowerClass_N_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedNAICS_2CRS_AP_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_supportedNAICS_2CRS_AP_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_supportedBandwidthCombinationSetEUTRA_v1530_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_supportedBandwidthCombinationSetEUTRA_v1530_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_multipleTimingAdvance_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleTimingAdvance_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleTimingAdvance_specs_2 = {
+       asn_MAP_multipleTimingAdvance_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_multipleTimingAdvance_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleTimingAdvance_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_multipleTimingAdvance_2 = {
+       "multipleTimingAdvance",
+       "multipleTimingAdvance",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleTimingAdvance_tags_2,
+       sizeof(asn_DEF_multipleTimingAdvance_tags_2)
+               /sizeof(asn_DEF_multipleTimingAdvance_tags_2[0]) - 1, /* 1 */
+       asn_DEF_multipleTimingAdvance_tags_2,   /* Same as above */
+       sizeof(asn_DEF_multipleTimingAdvance_tags_2)
+               /sizeof(asn_DEF_multipleTimingAdvance_tags_2[0]), /* 2 */
+       { &asn_OER_type_multipleTimingAdvance_constr_2, &asn_PER_type_multipleTimingAdvance_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleTimingAdvance_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousRx_Tx_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousRx_Tx_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousRx_Tx_specs_4 = {
+       asn_MAP_simultaneousRx_Tx_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousRx_Tx_enum2value_4, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousRx_Tx_tags_4[] = {
+       (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_simultaneousRx_Tx_4 = {
+       "simultaneousRx-Tx",
+       "simultaneousRx-Tx",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousRx_Tx_tags_4,
+       sizeof(asn_DEF_simultaneousRx_Tx_tags_4)
+               /sizeof(asn_DEF_simultaneousRx_Tx_tags_4[0]) - 1, /* 1 */
+       asn_DEF_simultaneousRx_Tx_tags_4,       /* Same as above */
+       sizeof(asn_DEF_simultaneousRx_Tx_tags_4)
+               /sizeof(asn_DEF_simultaneousRx_Tx_tags_4[0]), /* 2 */
+       { &asn_OER_type_simultaneousRx_Tx_constr_4, &asn_PER_type_simultaneousRx_Tx_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousRx_Tx_specs_4      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_additionalRx_Tx_PerformanceReq_value2enum_7[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_additionalRx_Tx_PerformanceReq_enum2value_7[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_additionalRx_Tx_PerformanceReq_specs_7 = {
+       asn_MAP_additionalRx_Tx_PerformanceReq_value2enum_7,    /* "tag" => N; sorted by tag */
+       asn_MAP_additionalRx_Tx_PerformanceReq_enum2value_7,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_additionalRx_Tx_PerformanceReq_tags_7[] = {
+       (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_additionalRx_Tx_PerformanceReq_7 = {
+       "additionalRx-Tx-PerformanceReq",
+       "additionalRx-Tx-PerformanceReq",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_additionalRx_Tx_PerformanceReq_tags_7,
+       sizeof(asn_DEF_additionalRx_Tx_PerformanceReq_tags_7)
+               /sizeof(asn_DEF_additionalRx_Tx_PerformanceReq_tags_7[0]) - 1, /* 1 */
+       asn_DEF_additionalRx_Tx_PerformanceReq_tags_7,  /* Same as above */
+       sizeof(asn_DEF_additionalRx_Tx_PerformanceReq_tags_7)
+               /sizeof(asn_DEF_additionalRx_Tx_PerformanceReq_tags_7[0]), /* 2 */
+       { &asn_OER_type_additionalRx_Tx_PerformanceReq_constr_7, &asn_PER_type_additionalRx_Tx_PerformanceReq_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_additionalRx_Tx_PerformanceReq_specs_7 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ue_CA_PowerClass_N_value2enum_9[] = {
+       { 0,    6,      "class2" }
+};
+static const unsigned int asn_MAP_ue_CA_PowerClass_N_enum2value_9[] = {
+       0       /* class2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ue_CA_PowerClass_N_specs_9 = {
+       asn_MAP_ue_CA_PowerClass_N_value2enum_9,        /* "tag" => N; sorted by tag */
+       asn_MAP_ue_CA_PowerClass_N_enum2value_9,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ue_CA_PowerClass_N_tags_9[] = {
+       (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_ue_CA_PowerClass_N_9 = {
+       "ue-CA-PowerClass-N",
+       "ue-CA-PowerClass-N",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ue_CA_PowerClass_N_tags_9,
+       sizeof(asn_DEF_ue_CA_PowerClass_N_tags_9)
+               /sizeof(asn_DEF_ue_CA_PowerClass_N_tags_9[0]) - 1, /* 1 */
+       asn_DEF_ue_CA_PowerClass_N_tags_9,      /* Same as above */
+       sizeof(asn_DEF_ue_CA_PowerClass_N_tags_9)
+               /sizeof(asn_DEF_ue_CA_PowerClass_N_tags_9[0]), /* 2 */
+       { &asn_OER_type_ue_CA_PowerClass_N_constr_9, &asn_PER_type_ue_CA_PowerClass_N_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ue_CA_PowerClass_N_specs_9     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CA_ParametersEUTRA_1[] = {
+       { ATF_POINTER, 6, offsetof(struct CA_ParametersEUTRA, multipleTimingAdvance),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleTimingAdvance_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleTimingAdvance"
+               },
+       { ATF_POINTER, 5, offsetof(struct CA_ParametersEUTRA, simultaneousRx_Tx),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousRx_Tx_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousRx-Tx"
+               },
+       { ATF_POINTER, 4, offsetof(struct CA_ParametersEUTRA, supportedNAICS_2CRS_AP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_supportedNAICS_2CRS_AP_constr_6, &asn_PER_memb_supportedNAICS_2CRS_AP_constr_6,  memb_supportedNAICS_2CRS_AP_constraint_1 },
+               0, 0, /* No default value */
+               "supportedNAICS-2CRS-AP"
+               },
+       { ATF_POINTER, 3, offsetof(struct CA_ParametersEUTRA, additionalRx_Tx_PerformanceReq),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_additionalRx_Tx_PerformanceReq_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalRx-Tx-PerformanceReq"
+               },
+       { ATF_POINTER, 2, offsetof(struct CA_ParametersEUTRA, ue_CA_PowerClass_N),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ue_CA_PowerClass_N_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-CA-PowerClass-N"
+               },
+       { ATF_POINTER, 1, offsetof(struct CA_ParametersEUTRA, supportedBandwidthCombinationSetEUTRA_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_supportedBandwidthCombinationSetEUTRA_v1530_constr_11, &asn_PER_memb_supportedBandwidthCombinationSetEUTRA_v1530_constr_11,  memb_supportedBandwidthCombinationSetEUTRA_v1530_constraint_1 },
+               0, 0, /* No default value */
+               "supportedBandwidthCombinationSetEUTRA-v1530"
+               },
+};
+static const int asn_MAP_CA_ParametersEUTRA_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_CA_ParametersEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CA_ParametersEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* multipleTimingAdvance */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* simultaneousRx-Tx */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* supportedNAICS-2CRS-AP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* additionalRx-Tx-PerformanceReq */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ue-CA-PowerClass-N */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* supportedBandwidthCombinationSetEUTRA-v1530 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CA_ParametersEUTRA_specs_1 = {
+       sizeof(struct CA_ParametersEUTRA),
+       offsetof(struct CA_ParametersEUTRA, _asn_ctx),
+       asn_MAP_CA_ParametersEUTRA_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_CA_ParametersEUTRA_oms_1,       /* Optional members */
+       6, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CA_ParametersEUTRA = {
+       "CA-ParametersEUTRA",
+       "CA-ParametersEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CA_ParametersEUTRA_tags_1,
+       sizeof(asn_DEF_CA_ParametersEUTRA_tags_1)
+               /sizeof(asn_DEF_CA_ParametersEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_CA_ParametersEUTRA_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CA_ParametersEUTRA_tags_1)
+               /sizeof(asn_DEF_CA_ParametersEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CA_ParametersEUTRA_1,
+       6,      /* Elements count */
+       &asn_SPC_CA_ParametersEUTRA_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CA-ParametersEUTRA.h b/src/codec_utils/RRC/CA-ParametersEUTRA.h
new file mode 100644 (file)
index 0000000..53bd9bd
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CA_ParametersEUTRA_H_
+#define        _CA_ParametersEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CA_ParametersEUTRA__multipleTimingAdvance {
+       CA_ParametersEUTRA__multipleTimingAdvance_supported     = 0
+} e_CA_ParametersEUTRA__multipleTimingAdvance;
+typedef enum CA_ParametersEUTRA__simultaneousRx_Tx {
+       CA_ParametersEUTRA__simultaneousRx_Tx_supported = 0
+} e_CA_ParametersEUTRA__simultaneousRx_Tx;
+typedef enum CA_ParametersEUTRA__additionalRx_Tx_PerformanceReq {
+       CA_ParametersEUTRA__additionalRx_Tx_PerformanceReq_supported    = 0
+} e_CA_ParametersEUTRA__additionalRx_Tx_PerformanceReq;
+typedef enum CA_ParametersEUTRA__ue_CA_PowerClass_N {
+       CA_ParametersEUTRA__ue_CA_PowerClass_N_class2   = 0
+} e_CA_ParametersEUTRA__ue_CA_PowerClass_N;
+
+/* CA-ParametersEUTRA */
+typedef struct CA_ParametersEUTRA {
+       long    *multipleTimingAdvance; /* OPTIONAL */
+       long    *simultaneousRx_Tx;     /* OPTIONAL */
+       BIT_STRING_t    *supportedNAICS_2CRS_AP;        /* OPTIONAL */
+       long    *additionalRx_Tx_PerformanceReq;        /* OPTIONAL */
+       long    *ue_CA_PowerClass_N;    /* OPTIONAL */
+       BIT_STRING_t    *supportedBandwidthCombinationSetEUTRA_v1530;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CA_ParametersEUTRA_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleTimingAdvance_2;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousRx_Tx_4;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_additionalRx_Tx_PerformanceReq_7;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ue_CA_PowerClass_N_9;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CA_ParametersEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_CA_ParametersEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_CA_ParametersEUTRA_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CA_ParametersEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CA-ParametersNR.c b/src/codec_utils/RRC/CA-ParametersNR.c
new file mode 100644 (file)
index 0000000..7f46752
--- /dev/null
@@ -0,0 +1,502 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CA-ParametersNR.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.
+ */
+static asn_oer_constraints_t asn_OER_type_multipleTimingAdvances_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleTimingAdvances_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_parallelTxSRS_PUCCH_PUSCH_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_parallelTxSRS_PUCCH_PUSCH_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_parallelTxPRACH_SRS_PUCCH_PUSCH_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_parallelTxPRACH_SRS_PUCCH_PUSCH_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousRxTxInterBandCA_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousRxTxInterBandCA_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousRxTxSUL_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousRxTxSUL_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_diffNumerologyAcrossPUCCH_Group_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_diffNumerologyAcrossPUCCH_Group_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_diffNumerologyWithinPUCCH_Group_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_diffNumerologyWithinPUCCH_Group_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedNumberTAG_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedNumberTAG_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_multipleTimingAdvances_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleTimingAdvances_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleTimingAdvances_specs_2 = {
+       asn_MAP_multipleTimingAdvances_value2enum_2,    /* "tag" => N; sorted by tag */
+       asn_MAP_multipleTimingAdvances_enum2value_2,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleTimingAdvances_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_multipleTimingAdvances_2 = {
+       "multipleTimingAdvances",
+       "multipleTimingAdvances",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleTimingAdvances_tags_2,
+       sizeof(asn_DEF_multipleTimingAdvances_tags_2)
+               /sizeof(asn_DEF_multipleTimingAdvances_tags_2[0]) - 1, /* 1 */
+       asn_DEF_multipleTimingAdvances_tags_2,  /* Same as above */
+       sizeof(asn_DEF_multipleTimingAdvances_tags_2)
+               /sizeof(asn_DEF_multipleTimingAdvances_tags_2[0]), /* 2 */
+       { &asn_OER_type_multipleTimingAdvances_constr_2, &asn_PER_type_multipleTimingAdvances_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleTimingAdvances_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_parallelTxSRS_PUCCH_PUSCH_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_parallelTxSRS_PUCCH_PUSCH_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_parallelTxSRS_PUCCH_PUSCH_specs_4 = {
+       asn_MAP_parallelTxSRS_PUCCH_PUSCH_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_parallelTxSRS_PUCCH_PUSCH_enum2value_4, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4[] = {
+       (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_parallelTxSRS_PUCCH_PUSCH_4 = {
+       "parallelTxSRS-PUCCH-PUSCH",
+       "parallelTxSRS-PUCCH-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4,
+       sizeof(asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4)
+               /sizeof(asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4[0]) - 1, /* 1 */
+       asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4,       /* Same as above */
+       sizeof(asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4)
+               /sizeof(asn_DEF_parallelTxSRS_PUCCH_PUSCH_tags_4[0]), /* 2 */
+       { &asn_OER_type_parallelTxSRS_PUCCH_PUSCH_constr_4, &asn_PER_type_parallelTxSRS_PUCCH_PUSCH_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_parallelTxSRS_PUCCH_PUSCH_specs_4      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_parallelTxPRACH_SRS_PUCCH_PUSCH_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_parallelTxPRACH_SRS_PUCCH_PUSCH_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_parallelTxPRACH_SRS_PUCCH_PUSCH_specs_6 = {
+       asn_MAP_parallelTxPRACH_SRS_PUCCH_PUSCH_value2enum_6,   /* "tag" => N; sorted by tag */
+       asn_MAP_parallelTxPRACH_SRS_PUCCH_PUSCH_enum2value_6,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6[] = {
+       (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_parallelTxPRACH_SRS_PUCCH_PUSCH_6 = {
+       "parallelTxPRACH-SRS-PUCCH-PUSCH",
+       "parallelTxPRACH-SRS-PUCCH-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6,
+       sizeof(asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6)
+               /sizeof(asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6[0]) - 1, /* 1 */
+       asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6, /* Same as above */
+       sizeof(asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6)
+               /sizeof(asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_tags_6[0]), /* 2 */
+       { &asn_OER_type_parallelTxPRACH_SRS_PUCCH_PUSCH_constr_6, &asn_PER_type_parallelTxPRACH_SRS_PUCCH_PUSCH_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_parallelTxPRACH_SRS_PUCCH_PUSCH_specs_6        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousRxTxInterBandCA_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousRxTxInterBandCA_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousRxTxInterBandCA_specs_8 = {
+       asn_MAP_simultaneousRxTxInterBandCA_value2enum_8,       /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousRxTxInterBandCA_enum2value_8,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousRxTxInterBandCA_tags_8[] = {
+       (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_simultaneousRxTxInterBandCA_8 = {
+       "simultaneousRxTxInterBandCA",
+       "simultaneousRxTxInterBandCA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousRxTxInterBandCA_tags_8,
+       sizeof(asn_DEF_simultaneousRxTxInterBandCA_tags_8)
+               /sizeof(asn_DEF_simultaneousRxTxInterBandCA_tags_8[0]) - 1, /* 1 */
+       asn_DEF_simultaneousRxTxInterBandCA_tags_8,     /* Same as above */
+       sizeof(asn_DEF_simultaneousRxTxInterBandCA_tags_8)
+               /sizeof(asn_DEF_simultaneousRxTxInterBandCA_tags_8[0]), /* 2 */
+       { &asn_OER_type_simultaneousRxTxInterBandCA_constr_8, &asn_PER_type_simultaneousRxTxInterBandCA_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousRxTxInterBandCA_specs_8    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousRxTxSUL_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousRxTxSUL_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousRxTxSUL_specs_10 = {
+       asn_MAP_simultaneousRxTxSUL_value2enum_10,      /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousRxTxSUL_enum2value_10,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousRxTxSUL_tags_10[] = {
+       (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_simultaneousRxTxSUL_10 = {
+       "simultaneousRxTxSUL",
+       "simultaneousRxTxSUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousRxTxSUL_tags_10,
+       sizeof(asn_DEF_simultaneousRxTxSUL_tags_10)
+               /sizeof(asn_DEF_simultaneousRxTxSUL_tags_10[0]) - 1, /* 1 */
+       asn_DEF_simultaneousRxTxSUL_tags_10,    /* Same as above */
+       sizeof(asn_DEF_simultaneousRxTxSUL_tags_10)
+               /sizeof(asn_DEF_simultaneousRxTxSUL_tags_10[0]), /* 2 */
+       { &asn_OER_type_simultaneousRxTxSUL_constr_10, &asn_PER_type_simultaneousRxTxSUL_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousRxTxSUL_specs_10   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_diffNumerologyAcrossPUCCH_Group_value2enum_12[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_diffNumerologyAcrossPUCCH_Group_enum2value_12[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_diffNumerologyAcrossPUCCH_Group_specs_12 = {
+       asn_MAP_diffNumerologyAcrossPUCCH_Group_value2enum_12,  /* "tag" => N; sorted by tag */
+       asn_MAP_diffNumerologyAcrossPUCCH_Group_enum2value_12,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12[] = {
+       (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_diffNumerologyAcrossPUCCH_Group_12 = {
+       "diffNumerologyAcrossPUCCH-Group",
+       "diffNumerologyAcrossPUCCH-Group",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12,
+       sizeof(asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12)
+               /sizeof(asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12[0]) - 1, /* 1 */
+       asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12,        /* Same as above */
+       sizeof(asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12)
+               /sizeof(asn_DEF_diffNumerologyAcrossPUCCH_Group_tags_12[0]), /* 2 */
+       { &asn_OER_type_diffNumerologyAcrossPUCCH_Group_constr_12, &asn_PER_type_diffNumerologyAcrossPUCCH_Group_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_diffNumerologyAcrossPUCCH_Group_specs_12       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_diffNumerologyWithinPUCCH_Group_value2enum_14[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_diffNumerologyWithinPUCCH_Group_enum2value_14[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_diffNumerologyWithinPUCCH_Group_specs_14 = {
+       asn_MAP_diffNumerologyWithinPUCCH_Group_value2enum_14,  /* "tag" => N; sorted by tag */
+       asn_MAP_diffNumerologyWithinPUCCH_Group_enum2value_14,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14[] = {
+       (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_diffNumerologyWithinPUCCH_Group_14 = {
+       "diffNumerologyWithinPUCCH-Group",
+       "diffNumerologyWithinPUCCH-Group",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14,
+       sizeof(asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14)
+               /sizeof(asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14[0]) - 1, /* 1 */
+       asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14,        /* Same as above */
+       sizeof(asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14)
+               /sizeof(asn_DEF_diffNumerologyWithinPUCCH_Group_tags_14[0]), /* 2 */
+       { &asn_OER_type_diffNumerologyWithinPUCCH_Group_constr_14, &asn_PER_type_diffNumerologyWithinPUCCH_Group_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_diffNumerologyWithinPUCCH_Group_specs_14       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedNumberTAG_value2enum_16[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n3" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_supportedNumberTAG_enum2value_16[] = {
+       0,      /* n2(0) */
+       1,      /* n3(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedNumberTAG_specs_16 = {
+       asn_MAP_supportedNumberTAG_value2enum_16,       /* "tag" => N; sorted by tag */
+       asn_MAP_supportedNumberTAG_enum2value_16,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedNumberTAG_tags_16[] = {
+       (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_supportedNumberTAG_16 = {
+       "supportedNumberTAG",
+       "supportedNumberTAG",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedNumberTAG_tags_16,
+       sizeof(asn_DEF_supportedNumberTAG_tags_16)
+               /sizeof(asn_DEF_supportedNumberTAG_tags_16[0]) - 1, /* 1 */
+       asn_DEF_supportedNumberTAG_tags_16,     /* Same as above */
+       sizeof(asn_DEF_supportedNumberTAG_tags_16)
+               /sizeof(asn_DEF_supportedNumberTAG_tags_16[0]), /* 2 */
+       { &asn_OER_type_supportedNumberTAG_constr_16, &asn_PER_type_supportedNumberTAG_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedNumberTAG_specs_16    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CA_ParametersNR_1[] = {
+       { ATF_POINTER, 8, offsetof(struct CA_ParametersNR, multipleTimingAdvances),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleTimingAdvances_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleTimingAdvances"
+               },
+       { ATF_POINTER, 7, offsetof(struct CA_ParametersNR, parallelTxSRS_PUCCH_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_parallelTxSRS_PUCCH_PUSCH_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "parallelTxSRS-PUCCH-PUSCH"
+               },
+       { ATF_POINTER, 6, offsetof(struct CA_ParametersNR, parallelTxPRACH_SRS_PUCCH_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "parallelTxPRACH-SRS-PUCCH-PUSCH"
+               },
+       { ATF_POINTER, 5, offsetof(struct CA_ParametersNR, simultaneousRxTxInterBandCA),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousRxTxInterBandCA_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousRxTxInterBandCA"
+               },
+       { ATF_POINTER, 4, offsetof(struct CA_ParametersNR, simultaneousRxTxSUL),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousRxTxSUL_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousRxTxSUL"
+               },
+       { ATF_POINTER, 3, offsetof(struct CA_ParametersNR, diffNumerologyAcrossPUCCH_Group),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_diffNumerologyAcrossPUCCH_Group_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "diffNumerologyAcrossPUCCH-Group"
+               },
+       { ATF_POINTER, 2, offsetof(struct CA_ParametersNR, diffNumerologyWithinPUCCH_Group),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_diffNumerologyWithinPUCCH_Group_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "diffNumerologyWithinPUCCH-Group"
+               },
+       { ATF_POINTER, 1, offsetof(struct CA_ParametersNR, supportedNumberTAG),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedNumberTAG_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedNumberTAG"
+               },
+};
+static const int asn_MAP_CA_ParametersNR_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_CA_ParametersNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CA_ParametersNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* multipleTimingAdvances */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* parallelTxSRS-PUCCH-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* parallelTxPRACH-SRS-PUCCH-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* simultaneousRxTxInterBandCA */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* simultaneousRxTxSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* diffNumerologyAcrossPUCCH-Group */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* diffNumerologyWithinPUCCH-Group */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* supportedNumberTAG */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CA_ParametersNR_specs_1 = {
+       sizeof(struct CA_ParametersNR),
+       offsetof(struct CA_ParametersNR, _asn_ctx),
+       asn_MAP_CA_ParametersNR_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_CA_ParametersNR_oms_1,  /* Optional members */
+       8, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CA_ParametersNR = {
+       "CA-ParametersNR",
+       "CA-ParametersNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CA_ParametersNR_tags_1,
+       sizeof(asn_DEF_CA_ParametersNR_tags_1)
+               /sizeof(asn_DEF_CA_ParametersNR_tags_1[0]), /* 1 */
+       asn_DEF_CA_ParametersNR_tags_1, /* Same as above */
+       sizeof(asn_DEF_CA_ParametersNR_tags_1)
+               /sizeof(asn_DEF_CA_ParametersNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CA_ParametersNR_1,
+       8,      /* Elements count */
+       &asn_SPC_CA_ParametersNR_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CA-ParametersNR.h b/src/codec_utils/RRC/CA-ParametersNR.h
new file mode 100644 (file)
index 0000000..14e00ec
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CA_ParametersNR_H_
+#define        _CA_ParametersNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CA_ParametersNR__multipleTimingAdvances {
+       CA_ParametersNR__multipleTimingAdvances_supported       = 0
+} e_CA_ParametersNR__multipleTimingAdvances;
+typedef enum CA_ParametersNR__parallelTxSRS_PUCCH_PUSCH {
+       CA_ParametersNR__parallelTxSRS_PUCCH_PUSCH_supported    = 0
+} e_CA_ParametersNR__parallelTxSRS_PUCCH_PUSCH;
+typedef enum CA_ParametersNR__parallelTxPRACH_SRS_PUCCH_PUSCH {
+       CA_ParametersNR__parallelTxPRACH_SRS_PUCCH_PUSCH_supported      = 0
+} e_CA_ParametersNR__parallelTxPRACH_SRS_PUCCH_PUSCH;
+typedef enum CA_ParametersNR__simultaneousRxTxInterBandCA {
+       CA_ParametersNR__simultaneousRxTxInterBandCA_supported  = 0
+} e_CA_ParametersNR__simultaneousRxTxInterBandCA;
+typedef enum CA_ParametersNR__simultaneousRxTxSUL {
+       CA_ParametersNR__simultaneousRxTxSUL_supported  = 0
+} e_CA_ParametersNR__simultaneousRxTxSUL;
+typedef enum CA_ParametersNR__diffNumerologyAcrossPUCCH_Group {
+       CA_ParametersNR__diffNumerologyAcrossPUCCH_Group_supported      = 0
+} e_CA_ParametersNR__diffNumerologyAcrossPUCCH_Group;
+typedef enum CA_ParametersNR__diffNumerologyWithinPUCCH_Group {
+       CA_ParametersNR__diffNumerologyWithinPUCCH_Group_supported      = 0
+} e_CA_ParametersNR__diffNumerologyWithinPUCCH_Group;
+typedef enum CA_ParametersNR__supportedNumberTAG {
+       CA_ParametersNR__supportedNumberTAG_n2  = 0,
+       CA_ParametersNR__supportedNumberTAG_n3  = 1,
+       CA_ParametersNR__supportedNumberTAG_n4  = 2
+} e_CA_ParametersNR__supportedNumberTAG;
+
+/* CA-ParametersNR */
+typedef struct CA_ParametersNR {
+       long    *multipleTimingAdvances;        /* OPTIONAL */
+       long    *parallelTxSRS_PUCCH_PUSCH;     /* OPTIONAL */
+       long    *parallelTxPRACH_SRS_PUCCH_PUSCH;       /* OPTIONAL */
+       long    *simultaneousRxTxInterBandCA;   /* OPTIONAL */
+       long    *simultaneousRxTxSUL;   /* OPTIONAL */
+       long    *diffNumerologyAcrossPUCCH_Group;       /* OPTIONAL */
+       long    *diffNumerologyWithinPUCCH_Group;       /* OPTIONAL */
+       long    *supportedNumberTAG;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CA_ParametersNR_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleTimingAdvances_2;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_parallelTxSRS_PUCCH_PUSCH_4;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_parallelTxPRACH_SRS_PUCCH_PUSCH_6;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousRxTxInterBandCA_8; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousRxTxSUL_10;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_diffNumerologyAcrossPUCCH_Group_12;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_diffNumerologyWithinPUCCH_Group_14;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedNumberTAG_16; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CA_ParametersNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_CA_ParametersNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_CA_ParametersNR_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CA_ParametersNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CFRA-CSIRS-Resource.c b/src/codec_utils/RRC/CFRA-CSIRS-Resource.c
new file mode 100644 (file)
index 0000000..77f454b
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CFRA-CSIRS-Resource.h"
+
+static int
+memb_NativeInteger_constraint_3(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 <= 511)) {
+               /* 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_ra_OccasionList_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 <= 64)) {
+               /* 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_ra_PreambleIndex_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 >= 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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_Member_constr_4 CC_NOTUSED = {
+       { 2, 1 }        /* (0..511) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  511 }      /* (0..511) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_ra_OccasionList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_PreambleIndex_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_PreambleIndex_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ra_OccasionList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_4, &asn_PER_memb_Member_constr_4,  memb_NativeInteger_constraint_3 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ra_OccasionList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ra_OccasionList_specs_3 = {
+       sizeof(struct CFRA_CSIRS_Resource__ra_OccasionList),
+       offsetof(struct CFRA_CSIRS_Resource__ra_OccasionList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ra_OccasionList_3 = {
+       "ra-OccasionList",
+       "ra-OccasionList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ra_OccasionList_tags_3,
+       sizeof(asn_DEF_ra_OccasionList_tags_3)
+               /sizeof(asn_DEF_ra_OccasionList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ra_OccasionList_tags_3, /* Same as above */
+       sizeof(asn_DEF_ra_OccasionList_tags_3)
+               /sizeof(asn_DEF_ra_OccasionList_tags_3[0]), /* 2 */
+       { &asn_OER_type_ra_OccasionList_constr_3, &asn_PER_type_ra_OccasionList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ra_OccasionList_3,
+       1,      /* Single element */
+       &asn_SPC_ra_OccasionList_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CFRA_CSIRS_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA_CSIRS_Resource, csi_RS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA_CSIRS_Resource, ra_OccasionList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ra_OccasionList_3,
+               0,
+               { &asn_OER_memb_ra_OccasionList_constr_3, &asn_PER_memb_ra_OccasionList_constr_3,  memb_ra_OccasionList_constraint_1 },
+               0, 0, /* No default value */
+               "ra-OccasionList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA_CSIRS_Resource, ra_PreambleIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_PreambleIndex_constr_5, &asn_PER_memb_ra_PreambleIndex_constr_5,  memb_ra_PreambleIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-PreambleIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CFRA_CSIRS_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CFRA_CSIRS_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ra-OccasionList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ra-PreambleIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CFRA_CSIRS_Resource_specs_1 = {
+       sizeof(struct CFRA_CSIRS_Resource),
+       offsetof(struct CFRA_CSIRS_Resource, _asn_ctx),
+       asn_MAP_CFRA_CSIRS_Resource_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_CFRA_CSIRS_Resource = {
+       "CFRA-CSIRS-Resource",
+       "CFRA-CSIRS-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CFRA_CSIRS_Resource_tags_1,
+       sizeof(asn_DEF_CFRA_CSIRS_Resource_tags_1)
+               /sizeof(asn_DEF_CFRA_CSIRS_Resource_tags_1[0]), /* 1 */
+       asn_DEF_CFRA_CSIRS_Resource_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CFRA_CSIRS_Resource_tags_1)
+               /sizeof(asn_DEF_CFRA_CSIRS_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CFRA_CSIRS_Resource_1,
+       3,      /* Elements count */
+       &asn_SPC_CFRA_CSIRS_Resource_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CFRA-CSIRS-Resource.h b/src/codec_utils/RRC/CFRA-CSIRS-Resource.h
new file mode 100644 (file)
index 0000000..4a03633
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CFRA_CSIRS_Resource_H_
+#define        _CFRA_CSIRS_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-RS-Index.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CFRA-CSIRS-Resource */
+typedef struct CFRA_CSIRS_Resource {
+       CSI_RS_Index_t   csi_RS;
+       struct CFRA_CSIRS_Resource__ra_OccasionList {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } ra_OccasionList;
+       long     ra_PreambleIndex;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CFRA_CSIRS_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CFRA_CSIRS_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_CFRA_CSIRS_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_CFRA_CSIRS_Resource_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CFRA_CSIRS_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CFRA-SSB-Resource.c b/src/codec_utils/RRC/CFRA-SSB-Resource.c
new file mode 100644 (file)
index 0000000..4d25196
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CFRA-SSB-Resource.h"
+
+static int
+memb_ra_PreambleIndex_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 >= 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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_ra_PreambleIndex_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_PreambleIndex_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CFRA_SSB_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA_SSB_Resource, ssb),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA_SSB_Resource, ra_PreambleIndex),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_PreambleIndex_constr_3, &asn_PER_memb_ra_PreambleIndex_constr_3,  memb_ra_PreambleIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-PreambleIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CFRA_SSB_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CFRA_SSB_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ra-PreambleIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CFRA_SSB_Resource_specs_1 = {
+       sizeof(struct CFRA_SSB_Resource),
+       offsetof(struct CFRA_SSB_Resource, _asn_ctx),
+       asn_MAP_CFRA_SSB_Resource_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_CFRA_SSB_Resource = {
+       "CFRA-SSB-Resource",
+       "CFRA-SSB-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CFRA_SSB_Resource_tags_1,
+       sizeof(asn_DEF_CFRA_SSB_Resource_tags_1)
+               /sizeof(asn_DEF_CFRA_SSB_Resource_tags_1[0]), /* 1 */
+       asn_DEF_CFRA_SSB_Resource_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CFRA_SSB_Resource_tags_1)
+               /sizeof(asn_DEF_CFRA_SSB_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CFRA_SSB_Resource_1,
+       2,      /* Elements count */
+       &asn_SPC_CFRA_SSB_Resource_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CFRA-SSB-Resource.h b/src/codec_utils/RRC/CFRA-SSB-Resource.h
new file mode 100644 (file)
index 0000000..c0b95c7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CFRA_SSB_Resource_H_
+#define        _CFRA_SSB_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SSB-Index.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CFRA-SSB-Resource */
+typedef struct CFRA_SSB_Resource {
+       SSB_Index_t      ssb;
+       long     ra_PreambleIndex;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CFRA_SSB_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CFRA_SSB_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_CFRA_SSB_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_CFRA_SSB_Resource_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CFRA_SSB_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CFRA.c b/src/codec_utils/RRC/CFRA.c
new file mode 100644 (file)
index 0000000..d09cf15
--- /dev/null
@@ -0,0 +1,622 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CFRA.h"
+
+#include "CFRA-SSB-Resource.h"
+#include "CFRA-CSIRS-Resource.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_ssb_ResourceList_constraint_14(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 <= 64)) {
+               /* 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_ra_ssb_OccasionMaskIndex_constraint_14(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 <= 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_csirs_ResourceList_constraint_18(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 <= 96)) {
+               /* 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_totalNumberOfRA_Preambles_v1530_constraint_23(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 <= 63)) {
+               /* 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_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_ResourceList_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_ssb_ResourceList_constr_15 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ssb_ResourceList_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_ssb_ResourceList_constr_15 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_17 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csirs_ResourceList_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_type_csirs_ResourceList_constr_19 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csirs_ResourceList_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_memb_csirs_ResourceList_constr_19 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resources_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resources_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_totalNumberOfRA_Preambles_v1530_constr_24 CC_NOTUSED = {
+       { 1, 1 }        /* (1..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberOfRA_Preambles_v1530_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (1..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_perRACH_Occasion_value2enum_4[] = {
+       { 0,    9,      "oneEighth" },
+       { 1,    9,      "oneFourth" },
+       { 2,    7,      "oneHalf" },
+       { 3,    3,      "one" },
+       { 4,    3,      "two" },
+       { 5,    4,      "four" },
+       { 6,    5,      "eight" },
+       { 7,    7,      "sixteen" }
+};
+static const unsigned int asn_MAP_ssb_perRACH_Occasion_enum2value_4[] = {
+       6,      /* eight(6) */
+       5,      /* four(5) */
+       3,      /* one(3) */
+       0,      /* oneEighth(0) */
+       1,      /* oneFourth(1) */
+       2,      /* oneHalf(2) */
+       7,      /* sixteen(7) */
+       4       /* two(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_perRACH_Occasion_specs_4 = {
+       asn_MAP_ssb_perRACH_Occasion_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_perRACH_Occasion_enum2value_4,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_perRACH_Occasion_tags_4[] = {
+       (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_ssb_perRACH_Occasion_4 = {
+       "ssb-perRACH-Occasion",
+       "ssb-perRACH-Occasion",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_perRACH_Occasion_tags_4,
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]) - 1, /* 1 */
+       asn_DEF_ssb_perRACH_Occasion_tags_4,    /* Same as above */
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]), /* 2 */
+       { &asn_OER_type_ssb_perRACH_Occasion_constr_4, &asn_PER_type_ssb_perRACH_Occasion_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_perRACH_Occasion_specs_4   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_occasions_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA__occasions, rach_ConfigGeneric),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigGeneric,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigGeneric"
+               },
+       { ATF_POINTER, 1, offsetof(struct CFRA__occasions, ssb_perRACH_Occasion),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_perRACH_Occasion_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-perRACH-Occasion"
+               },
+};
+static const int asn_MAP_occasions_oms_2[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_occasions_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_occasions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-ConfigGeneric */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb-perRACH-Occasion */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_occasions_specs_2 = {
+       sizeof(struct CFRA__occasions),
+       offsetof(struct CFRA__occasions, _asn_ctx),
+       asn_MAP_occasions_tag2el_2,
+       2,      /* Count of tags in the map */
+       asn_MAP_occasions_oms_2,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_occasions_2 = {
+       "occasions",
+       "occasions",
+       &asn_OP_SEQUENCE,
+       asn_DEF_occasions_tags_2,
+       sizeof(asn_DEF_occasions_tags_2)
+               /sizeof(asn_DEF_occasions_tags_2[0]) - 1, /* 1 */
+       asn_DEF_occasions_tags_2,       /* Same as above */
+       sizeof(asn_DEF_occasions_tags_2)
+               /sizeof(asn_DEF_occasions_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_occasions_2,
+       2,      /* Elements count */
+       &asn_SPC_occasions_specs_2      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ssb_ResourceList_15[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CFRA_SSB_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ssb_ResourceList_tags_15[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ssb_ResourceList_specs_15 = {
+       sizeof(struct CFRA__resources__ssb__ssb_ResourceList),
+       offsetof(struct CFRA__resources__ssb__ssb_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_ResourceList_15 = {
+       "ssb-ResourceList",
+       "ssb-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ssb_ResourceList_tags_15,
+       sizeof(asn_DEF_ssb_ResourceList_tags_15)
+               /sizeof(asn_DEF_ssb_ResourceList_tags_15[0]) - 1, /* 1 */
+       asn_DEF_ssb_ResourceList_tags_15,       /* Same as above */
+       sizeof(asn_DEF_ssb_ResourceList_tags_15)
+               /sizeof(asn_DEF_ssb_ResourceList_tags_15[0]), /* 2 */
+       { &asn_OER_type_ssb_ResourceList_constr_15, &asn_PER_type_ssb_ResourceList_constr_15, SEQUENCE_OF_constraint },
+       asn_MBR_ssb_ResourceList_15,
+       1,      /* Single element */
+       &asn_SPC_ssb_ResourceList_specs_15      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ssb_14[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA__resources__ssb, ssb_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_ssb_ResourceList_15,
+               0,
+               { &asn_OER_memb_ssb_ResourceList_constr_15, &asn_PER_memb_ssb_ResourceList_constr_15,  memb_ssb_ResourceList_constraint_14 },
+               0, 0, /* No default value */
+               "ssb-ResourceList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA__resources__ssb, ra_ssb_OccasionMaskIndex),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_17, &asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_17,  memb_ra_ssb_OccasionMaskIndex_constraint_14 },
+               0, 0, /* No default value */
+               "ra-ssb-OccasionMaskIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ssb_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ssb_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-ResourceList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ra-ssb-OccasionMaskIndex */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ssb_specs_14 = {
+       sizeof(struct CFRA__resources__ssb),
+       offsetof(struct CFRA__resources__ssb, _asn_ctx),
+       asn_MAP_ssb_tag2el_14,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_14 = {
+       "ssb",
+       "ssb",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ssb_tags_14,
+       sizeof(asn_DEF_ssb_tags_14)
+               /sizeof(asn_DEF_ssb_tags_14[0]) - 1, /* 1 */
+       asn_DEF_ssb_tags_14,    /* Same as above */
+       sizeof(asn_DEF_ssb_tags_14)
+               /sizeof(asn_DEF_ssb_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ssb_14,
+       2,      /* Elements count */
+       &asn_SPC_ssb_specs_14   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csirs_ResourceList_19[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CFRA_CSIRS_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csirs_ResourceList_tags_19[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csirs_ResourceList_specs_19 = {
+       sizeof(struct CFRA__resources__csirs__csirs_ResourceList),
+       offsetof(struct CFRA__resources__csirs__csirs_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csirs_ResourceList_19 = {
+       "csirs-ResourceList",
+       "csirs-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csirs_ResourceList_tags_19,
+       sizeof(asn_DEF_csirs_ResourceList_tags_19)
+               /sizeof(asn_DEF_csirs_ResourceList_tags_19[0]) - 1, /* 1 */
+       asn_DEF_csirs_ResourceList_tags_19,     /* Same as above */
+       sizeof(asn_DEF_csirs_ResourceList_tags_19)
+               /sizeof(asn_DEF_csirs_ResourceList_tags_19[0]), /* 2 */
+       { &asn_OER_type_csirs_ResourceList_constr_19, &asn_PER_type_csirs_ResourceList_constr_19, SEQUENCE_OF_constraint },
+       asn_MBR_csirs_ResourceList_19,
+       1,      /* Single element */
+       &asn_SPC_csirs_ResourceList_specs_19    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csirs_18[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA__resources__csirs, csirs_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_csirs_ResourceList_19,
+               0,
+               { &asn_OER_memb_csirs_ResourceList_constr_19, &asn_PER_memb_csirs_ResourceList_constr_19,  memb_csirs_ResourceList_constraint_18 },
+               0, 0, /* No default value */
+               "csirs-ResourceList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA__resources__csirs, rsrp_ThresholdCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp-ThresholdCSI-RS"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csirs_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_csirs_tag2el_18[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csirs-ResourceList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rsrp-ThresholdCSI-RS */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_csirs_specs_18 = {
+       sizeof(struct CFRA__resources__csirs),
+       offsetof(struct CFRA__resources__csirs, _asn_ctx),
+       asn_MAP_csirs_tag2el_18,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csirs_18 = {
+       "csirs",
+       "csirs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_csirs_tags_18,
+       sizeof(asn_DEF_csirs_tags_18)
+               /sizeof(asn_DEF_csirs_tags_18[0]) - 1, /* 1 */
+       asn_DEF_csirs_tags_18,  /* Same as above */
+       sizeof(asn_DEF_csirs_tags_18)
+               /sizeof(asn_DEF_csirs_tags_18[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_csirs_18,
+       2,      /* Elements count */
+       &asn_SPC_csirs_specs_18 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resources_13[] = {
+       { ATF_POINTER, 0, offsetof(struct CFRA__resources, choice.ssb),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_ssb_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb"
+               },
+       { ATF_POINTER, 0, offsetof(struct CFRA__resources, choice.csirs),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csirs_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csirs"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_resources_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csirs */
+};
+static asn_CHOICE_specifics_t asn_SPC_resources_specs_13 = {
+       sizeof(struct CFRA__resources),
+       offsetof(struct CFRA__resources, _asn_ctx),
+       offsetof(struct CFRA__resources, present),
+       sizeof(((struct CFRA__resources *)0)->present),
+       asn_MAP_resources_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resources_13 = {
+       "resources",
+       "resources",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_resources_constr_13, &asn_PER_type_resources_constr_13, CHOICE_constraint },
+       asn_MBR_resources_13,
+       2,      /* Elements count */
+       &asn_SPC_resources_specs_13     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_23[] = {
+       { ATF_POINTER, 1, offsetof(struct CFRA__ext1, totalNumberOfRA_Preambles_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberOfRA_Preambles_v1530_constr_24, &asn_PER_memb_totalNumberOfRA_Preambles_v1530_constr_24,  memb_totalNumberOfRA_Preambles_v1530_constraint_23 },
+               0, 0, /* No default value */
+               "totalNumberOfRA-Preambles-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_23[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_23[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* totalNumberOfRA-Preambles-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_23 = {
+       sizeof(struct CFRA__ext1),
+       offsetof(struct CFRA__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_23,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_23,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_23 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_23,
+       sizeof(asn_DEF_ext1_tags_23)
+               /sizeof(asn_DEF_ext1_tags_23[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_23,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_23)
+               /sizeof(asn_DEF_ext1_tags_23[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_23,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_23  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CFRA_1[] = {
+       { ATF_POINTER, 1, offsetof(struct CFRA, occasions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_occasions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "occasions"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CFRA, resources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_resources_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resources"
+               },
+       { ATF_POINTER, 1, offsetof(struct CFRA, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_CFRA_oms_1[] = { 0, 2 };
+static const ber_tlv_tag_t asn_DEF_CFRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CFRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* occasions */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CFRA_specs_1 = {
+       sizeof(struct CFRA),
+       offsetof(struct CFRA, _asn_ctx),
+       asn_MAP_CFRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CFRA_oms_1,     /* Optional members */
+       1, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CFRA = {
+       "CFRA",
+       "CFRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CFRA_tags_1,
+       sizeof(asn_DEF_CFRA_tags_1)
+               /sizeof(asn_DEF_CFRA_tags_1[0]), /* 1 */
+       asn_DEF_CFRA_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CFRA_tags_1)
+               /sizeof(asn_DEF_CFRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CFRA_1,
+       3,      /* Elements count */
+       &asn_SPC_CFRA_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CFRA.h b/src/codec_utils/RRC/CFRA.h
new file mode 100644 (file)
index 0000000..ccb6888
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CFRA_H_
+#define        _CFRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RACH-ConfigGeneric.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "RSRP-Range.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CFRA__occasions__ssb_perRACH_Occasion {
+       CFRA__occasions__ssb_perRACH_Occasion_oneEighth = 0,
+       CFRA__occasions__ssb_perRACH_Occasion_oneFourth = 1,
+       CFRA__occasions__ssb_perRACH_Occasion_oneHalf   = 2,
+       CFRA__occasions__ssb_perRACH_Occasion_one       = 3,
+       CFRA__occasions__ssb_perRACH_Occasion_two       = 4,
+       CFRA__occasions__ssb_perRACH_Occasion_four      = 5,
+       CFRA__occasions__ssb_perRACH_Occasion_eight     = 6,
+       CFRA__occasions__ssb_perRACH_Occasion_sixteen   = 7
+} e_CFRA__occasions__ssb_perRACH_Occasion;
+typedef enum CFRA__resources_PR {
+       CFRA__resources_PR_NOTHING,     /* No components present */
+       CFRA__resources_PR_ssb,
+       CFRA__resources_PR_csirs
+} CFRA__resources_PR;
+
+/* Forward declarations */
+struct CFRA_SSB_Resource;
+struct CFRA_CSIRS_Resource;
+
+/* CFRA */
+typedef struct CFRA {
+       struct CFRA__occasions {
+               RACH_ConfigGeneric_t     rach_ConfigGeneric;
+               long    *ssb_perRACH_Occasion;  /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *occasions;
+       struct CFRA__resources {
+               CFRA__resources_PR present;
+               union CFRA__resources_u {
+                       struct CFRA__resources__ssb {
+                               struct CFRA__resources__ssb__ssb_ResourceList {
+                                       A_SEQUENCE_OF(struct CFRA_SSB_Resource) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } ssb_ResourceList;
+                               long     ra_ssb_OccasionMaskIndex;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *ssb;
+                       struct CFRA__resources__csirs {
+                               struct CFRA__resources__csirs__csirs_ResourceList {
+                                       A_SEQUENCE_OF(struct CFRA_CSIRS_Resource) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } csirs_ResourceList;
+                               RSRP_Range_t     rsrp_ThresholdCSI_RS;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *csirs;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resources;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct CFRA__ext1 {
+               long    *totalNumberOfRA_Preambles_v1530;       /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CFRA_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_Occasion_4;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CFRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_CFRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_CFRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CFRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CG-Config-IEs.c b/src/codec_utils/RRC/CG-Config-IEs.c
new file mode 100644 (file)
index 0000000..a578473
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CG-Config-IEs.h"
+
+#include "ConfigRestrictModReqSCG.h"
+#include "DRX-Info.h"
+#include "MeasConfigSN.h"
+#include "BandCombinationInfoSN.h"
+#include "FR-InfoList.h"
+#include "CandidateServingFreqListNR.h"
+static int
+memb_scg_CellGroupConfig_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_scg_RB_Config_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_candidateCellInfoListSN_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_scg_CellGroupConfig_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_scg_CellGroupConfig_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scg_RB_Config_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_scg_RB_Config_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_candidateCellInfoListSN_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_candidateCellInfoListSN_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_11 = {
+       sizeof(struct CG_Config_IEs__nonCriticalExtension),
+       offsetof(struct CG_Config_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_11 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_11,
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_11,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CG_Config_IEs_1[] = {
+       { ATF_POINTER, 10, offsetof(struct CG_Config_IEs, scg_CellGroupConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_scg_CellGroupConfig_constr_2, &asn_PER_memb_scg_CellGroupConfig_constr_2,  memb_scg_CellGroupConfig_constraint_1 },
+               0, 0, /* No default value */
+               "scg-CellGroupConfig"
+               },
+       { ATF_POINTER, 9, offsetof(struct CG_Config_IEs, scg_RB_Config),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_scg_RB_Config_constr_3, &asn_PER_memb_scg_RB_Config_constr_3,  memb_scg_RB_Config_constraint_1 },
+               0, 0, /* No default value */
+               "scg-RB-Config"
+               },
+       { ATF_POINTER, 8, offsetof(struct CG_Config_IEs, configRestrictModReq),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ConfigRestrictModReqSCG,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configRestrictModReq"
+               },
+       { ATF_POINTER, 7, offsetof(struct CG_Config_IEs, drx_InfoSCG),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRX_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-InfoSCG"
+               },
+       { ATF_POINTER, 6, offsetof(struct CG_Config_IEs, candidateCellInfoListSN),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_candidateCellInfoListSN_constr_6, &asn_PER_memb_candidateCellInfoListSN_constr_6,  memb_candidateCellInfoListSN_constraint_1 },
+               0, 0, /* No default value */
+               "candidateCellInfoListSN"
+               },
+       { ATF_POINTER, 5, offsetof(struct CG_Config_IEs, measConfigSN),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasConfigSN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measConfigSN"
+               },
+       { ATF_POINTER, 4, offsetof(struct CG_Config_IEs, selectedBandCombinationNR),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationInfoSN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "selectedBandCombinationNR"
+               },
+       { ATF_POINTER, 3, offsetof(struct CG_Config_IEs, fr_InfoListSCG),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FR_InfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr-InfoListSCG"
+               },
+       { ATF_POINTER, 2, offsetof(struct CG_Config_IEs, candidateServingFreqListNR),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CandidateServingFreqListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "candidateServingFreqListNR"
+               },
+       { ATF_POINTER, 1, offsetof(struct CG_Config_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_CG_Config_IEs_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+static const ber_tlv_tag_t asn_DEF_CG_Config_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CG_Config_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scg-CellGroupConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scg-RB-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* configRestrictModReq */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* drx-InfoSCG */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* candidateCellInfoListSN */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* measConfigSN */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* selectedBandCombinationNR */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* fr-InfoListSCG */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* candidateServingFreqListNR */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CG_Config_IEs_specs_1 = {
+       sizeof(struct CG_Config_IEs),
+       offsetof(struct CG_Config_IEs, _asn_ctx),
+       asn_MAP_CG_Config_IEs_tag2el_1,
+       10,     /* Count of tags in the map */
+       asn_MAP_CG_Config_IEs_oms_1,    /* Optional members */
+       10, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CG_Config_IEs = {
+       "CG-Config-IEs",
+       "CG-Config-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CG_Config_IEs_tags_1,
+       sizeof(asn_DEF_CG_Config_IEs_tags_1)
+               /sizeof(asn_DEF_CG_Config_IEs_tags_1[0]), /* 1 */
+       asn_DEF_CG_Config_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CG_Config_IEs_tags_1)
+               /sizeof(asn_DEF_CG_Config_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CG_Config_IEs_1,
+       10,     /* Elements count */
+       &asn_SPC_CG_Config_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CG-Config-IEs.h b/src/codec_utils/RRC/CG-Config-IEs.h
new file mode 100644 (file)
index 0000000..b84be5f
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CG_Config_IEs_H_
+#define        _CG_Config_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ConfigRestrictModReqSCG;
+struct DRX_Info;
+struct MeasConfigSN;
+struct BandCombinationInfoSN;
+struct FR_InfoList;
+struct CandidateServingFreqListNR;
+
+/* CG-Config-IEs */
+typedef struct CG_Config_IEs {
+       OCTET_STRING_t  *scg_CellGroupConfig;   /* OPTIONAL */
+       OCTET_STRING_t  *scg_RB_Config; /* OPTIONAL */
+       struct ConfigRestrictModReqSCG  *configRestrictModReq;  /* OPTIONAL */
+       struct DRX_Info *drx_InfoSCG;   /* OPTIONAL */
+       OCTET_STRING_t  *candidateCellInfoListSN;       /* OPTIONAL */
+       struct MeasConfigSN     *measConfigSN;  /* OPTIONAL */
+       struct BandCombinationInfoSN    *selectedBandCombinationNR;     /* OPTIONAL */
+       struct FR_InfoList      *fr_InfoListSCG;        /* OPTIONAL */
+       struct CandidateServingFreqListNR       *candidateServingFreqListNR;    /* OPTIONAL */
+       struct CG_Config_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CG_Config_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CG_Config_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_CG_Config_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_CG_Config_IEs_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CG_Config_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CG-Config.c b/src/codec_utils/RRC/CG-Config.c
new file mode 100644 (file)
index 0000000..9f624b9
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CG-Config.h"
+
+#include "CG-Config-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CG_Config__criticalExtensions__c1, choice.cg_Config),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CG_Config_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cg-Config"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_Config__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_Config__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_Config__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cg-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct CG_Config__criticalExtensions__c1),
+       offsetof(struct CG_Config__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct CG_Config__criticalExtensions__c1, present),
+       sizeof(((struct CG_Config__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_8 = {
+       sizeof(struct CG_Config__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct CG_Config__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_8 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_8,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_8,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct CG_Config__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct CG_Config__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct CG_Config__criticalExtensions),
+       offsetof(struct CG_Config__criticalExtensions, _asn_ctx),
+       offsetof(struct CG_Config__criticalExtensions, present),
+       sizeof(((struct CG_Config__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_CG_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CG_Config, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CG_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CG_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CG_Config_specs_1 = {
+       sizeof(struct CG_Config),
+       offsetof(struct CG_Config, _asn_ctx),
+       asn_MAP_CG_Config_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_CG_Config = {
+       "CG-Config",
+       "CG-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CG_Config_tags_1,
+       sizeof(asn_DEF_CG_Config_tags_1)
+               /sizeof(asn_DEF_CG_Config_tags_1[0]), /* 1 */
+       asn_DEF_CG_Config_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CG_Config_tags_1)
+               /sizeof(asn_DEF_CG_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CG_Config_1,
+       1,      /* Elements count */
+       &asn_SPC_CG_Config_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CG-Config.h b/src/codec_utils/RRC/CG-Config.h
new file mode 100644 (file)
index 0000000..06ca59c
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CG_Config_H_
+#define        _CG_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CG_Config__criticalExtensions_PR {
+       CG_Config__criticalExtensions_PR_NOTHING,       /* No components present */
+       CG_Config__criticalExtensions_PR_c1,
+       CG_Config__criticalExtensions_PR_criticalExtensionsFuture
+} CG_Config__criticalExtensions_PR;
+typedef enum CG_Config__criticalExtensions__c1_PR {
+       CG_Config__criticalExtensions__c1_PR_NOTHING,   /* No components present */
+       CG_Config__criticalExtensions__c1_PR_cg_Config,
+       CG_Config__criticalExtensions__c1_PR_spare3,
+       CG_Config__criticalExtensions__c1_PR_spare2,
+       CG_Config__criticalExtensions__c1_PR_spare1
+} CG_Config__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct CG_Config_IEs;
+
+/* CG-Config */
+typedef struct CG_Config {
+       struct CG_Config__criticalExtensions {
+               CG_Config__criticalExtensions_PR present;
+               union CG_Config__criticalExtensions_u {
+                       struct CG_Config__criticalExtensions__c1 {
+                               CG_Config__criticalExtensions__c1_PR present;
+                               union CG_Config__criticalExtensions__c1_u {
+                                       struct CG_Config_IEs    *cg_Config;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct CG_Config__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CG_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CG_Config;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CG_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CG-ConfigInfo-IEs.c b/src/codec_utils/RRC/CG-ConfigInfo-IEs.c
new file mode 100644 (file)
index 0000000..7c9092c
--- /dev/null
@@ -0,0 +1,490 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CG-ConfigInfo-IEs.h"
+
+#include "MeasResultList2NR.h"
+#include "MeasResultCellListSFTD.h"
+#include "ConfigRestrictInfoSCG.h"
+#include "DRX-Info.h"
+#include "MeasConfigMN.h"
+#include "MRDC-AssistanceInfo.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_measResultSCG_constraint_6(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_ue_CapabilityInfo_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_candidateCellInfoListSN_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_sourceConfigSCG_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_scg_RB_Config_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_mcg_RB_Config_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_type_failureType_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_failureType_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_measResultSCG_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_measResultSCG_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ue_CapabilityInfo_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ue_CapabilityInfo_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_candidateCellInfoListSN_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_candidateCellInfoListSN_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sourceConfigSCG_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_sourceConfigSCG_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scg_RB_Config_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_scg_RB_Config_constr_19 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mcg_RB_Config_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_mcg_RB_Config_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_failureType_value2enum_7[] = {
+       { 0,    11,     "t310-Expiry" },
+       { 1,    19,     "randomAccessProblem" },
+       { 2,    14,     "rlc-MaxNumRetx" },
+       { 3,    24,     "synchReconfigFailure-SCG" },
+       { 4,    19,     "scg-reconfigFailure" },
+       { 5,    21,     "srb3-IntegrityFailure" }
+};
+static const unsigned int asn_MAP_failureType_enum2value_7[] = {
+       1,      /* randomAccessProblem(1) */
+       2,      /* rlc-MaxNumRetx(2) */
+       4,      /* scg-reconfigFailure(4) */
+       5,      /* srb3-IntegrityFailure(5) */
+       3,      /* synchReconfigFailure-SCG(3) */
+       0       /* t310-Expiry(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_failureType_specs_7 = {
+       asn_MAP_failureType_value2enum_7,       /* "tag" => N; sorted by tag */
+       asn_MAP_failureType_enum2value_7,       /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_failureType_tags_7[] = {
+       (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_failureType_7 = {
+       "failureType",
+       "failureType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_failureType_tags_7,
+       sizeof(asn_DEF_failureType_tags_7)
+               /sizeof(asn_DEF_failureType_tags_7[0]) - 1, /* 1 */
+       asn_DEF_failureType_tags_7,     /* Same as above */
+       sizeof(asn_DEF_failureType_tags_7)
+               /sizeof(asn_DEF_failureType_tags_7[0]), /* 2 */
+       { &asn_OER_type_failureType_constr_7, &asn_PER_type_failureType_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_failureType_specs_7    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_scgFailureInfo_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo_IEs__scgFailureInfo, failureType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_failureType_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "failureType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo_IEs__scgFailureInfo, measResultSCG),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_measResultSCG_constr_14, &asn_PER_memb_measResultSCG_constr_14,  memb_measResultSCG_constraint_6 },
+               0, 0, /* No default value */
+               "measResultSCG"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_scgFailureInfo_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_scgFailureInfo_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* failureType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measResultSCG */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_scgFailureInfo_specs_6 = {
+       sizeof(struct CG_ConfigInfo_IEs__scgFailureInfo),
+       offsetof(struct CG_ConfigInfo_IEs__scgFailureInfo, _asn_ctx),
+       asn_MAP_scgFailureInfo_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_scgFailureInfo_6 = {
+       "scgFailureInfo",
+       "scgFailureInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_scgFailureInfo_tags_6,
+       sizeof(asn_DEF_scgFailureInfo_tags_6)
+               /sizeof(asn_DEF_scgFailureInfo_tags_6[0]) - 1, /* 1 */
+       asn_DEF_scgFailureInfo_tags_6,  /* Same as above */
+       sizeof(asn_DEF_scgFailureInfo_tags_6)
+               /sizeof(asn_DEF_scgFailureInfo_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_scgFailureInfo_6,
+       2,      /* Elements count */
+       &asn_SPC_scgFailureInfo_specs_6 /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_22 = {
+       sizeof(struct CG_ConfigInfo_IEs__nonCriticalExtension),
+       offsetof(struct CG_ConfigInfo_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_22 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_22,
+       sizeof(asn_DEF_nonCriticalExtension_tags_22)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_22[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_22,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_22)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_22[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_22  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CG_ConfigInfo_IEs_1[] = {
+       { ATF_POINTER, 13, offsetof(struct CG_ConfigInfo_IEs, ue_CapabilityInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_ue_CapabilityInfo_constr_2, &asn_PER_memb_ue_CapabilityInfo_constr_2,  memb_ue_CapabilityInfo_constraint_1 },
+               0, 0, /* No default value */
+               "ue-CapabilityInfo"
+               },
+       { ATF_POINTER, 12, offsetof(struct CG_ConfigInfo_IEs, candidateCellInfoListMN),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultList2NR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "candidateCellInfoListMN"
+               },
+       { ATF_POINTER, 11, offsetof(struct CG_ConfigInfo_IEs, candidateCellInfoListSN),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_candidateCellInfoListSN_constr_4, &asn_PER_memb_candidateCellInfoListSN_constr_4,  memb_candidateCellInfoListSN_constraint_1 },
+               0, 0, /* No default value */
+               "candidateCellInfoListSN"
+               },
+       { ATF_POINTER, 10, offsetof(struct CG_ConfigInfo_IEs, measResultCellListSFTD),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultCellListSFTD,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultCellListSFTD"
+               },
+       { ATF_POINTER, 9, offsetof(struct CG_ConfigInfo_IEs, scgFailureInfo),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_scgFailureInfo_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scgFailureInfo"
+               },
+       { ATF_POINTER, 8, offsetof(struct CG_ConfigInfo_IEs, configRestrictInfo),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ConfigRestrictInfoSCG,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configRestrictInfo"
+               },
+       { ATF_POINTER, 7, offsetof(struct CG_ConfigInfo_IEs, drx_InfoMCG),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRX_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-InfoMCG"
+               },
+       { ATF_POINTER, 6, offsetof(struct CG_ConfigInfo_IEs, measConfigMN),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasConfigMN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measConfigMN"
+               },
+       { ATF_POINTER, 5, offsetof(struct CG_ConfigInfo_IEs, sourceConfigSCG),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_sourceConfigSCG_constr_18, &asn_PER_memb_sourceConfigSCG_constr_18,  memb_sourceConfigSCG_constraint_1 },
+               0, 0, /* No default value */
+               "sourceConfigSCG"
+               },
+       { ATF_POINTER, 4, offsetof(struct CG_ConfigInfo_IEs, scg_RB_Config),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_scg_RB_Config_constr_19, &asn_PER_memb_scg_RB_Config_constr_19,  memb_scg_RB_Config_constraint_1 },
+               0, 0, /* No default value */
+               "scg-RB-Config"
+               },
+       { ATF_POINTER, 3, offsetof(struct CG_ConfigInfo_IEs, mcg_RB_Config),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_mcg_RB_Config_constr_20, &asn_PER_memb_mcg_RB_Config_constr_20,  memb_mcg_RB_Config_constraint_1 },
+               0, 0, /* No default value */
+               "mcg-RB-Config"
+               },
+       { ATF_POINTER, 2, offsetof(struct CG_ConfigInfo_IEs, mrdc_AssistanceInfo),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MRDC_AssistanceInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mrdc-AssistanceInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct CG_ConfigInfo_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_CG_ConfigInfo_IEs_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
+static const ber_tlv_tag_t asn_DEF_CG_ConfigInfo_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CG_ConfigInfo_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-CapabilityInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* candidateCellInfoListMN */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* candidateCellInfoListSN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* measResultCellListSFTD */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* scgFailureInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* configRestrictInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* drx-InfoMCG */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* measConfigMN */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sourceConfigSCG */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* scg-RB-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* mcg-RB-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* mrdc-AssistanceInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CG_ConfigInfo_IEs_specs_1 = {
+       sizeof(struct CG_ConfigInfo_IEs),
+       offsetof(struct CG_ConfigInfo_IEs, _asn_ctx),
+       asn_MAP_CG_ConfigInfo_IEs_tag2el_1,
+       13,     /* Count of tags in the map */
+       asn_MAP_CG_ConfigInfo_IEs_oms_1,        /* Optional members */
+       13, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CG_ConfigInfo_IEs = {
+       "CG-ConfigInfo-IEs",
+       "CG-ConfigInfo-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CG_ConfigInfo_IEs_tags_1,
+       sizeof(asn_DEF_CG_ConfigInfo_IEs_tags_1)
+               /sizeof(asn_DEF_CG_ConfigInfo_IEs_tags_1[0]), /* 1 */
+       asn_DEF_CG_ConfigInfo_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CG_ConfigInfo_IEs_tags_1)
+               /sizeof(asn_DEF_CG_ConfigInfo_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CG_ConfigInfo_IEs_1,
+       13,     /* Elements count */
+       &asn_SPC_CG_ConfigInfo_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CG-ConfigInfo-IEs.h b/src/codec_utils/RRC/CG-ConfigInfo-IEs.h
new file mode 100644 (file)
index 0000000..89f8e00
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CG_ConfigInfo_IEs_H_
+#define        _CG_ConfigInfo_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CG_ConfigInfo_IEs__scgFailureInfo__failureType {
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_t310_Expiry      = 0,
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_randomAccessProblem      = 1,
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_rlc_MaxNumRetx   = 2,
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_synchReconfigFailure_SCG = 3,
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_scg_reconfigFailure      = 4,
+       CG_ConfigInfo_IEs__scgFailureInfo__failureType_srb3_IntegrityFailure    = 5
+} e_CG_ConfigInfo_IEs__scgFailureInfo__failureType;
+
+/* Forward declarations */
+struct MeasResultList2NR;
+struct MeasResultCellListSFTD;
+struct ConfigRestrictInfoSCG;
+struct DRX_Info;
+struct MeasConfigMN;
+struct MRDC_AssistanceInfo;
+
+/* CG-ConfigInfo-IEs */
+typedef struct CG_ConfigInfo_IEs {
+       OCTET_STRING_t  *ue_CapabilityInfo;     /* OPTIONAL */
+       struct MeasResultList2NR        *candidateCellInfoListMN;       /* OPTIONAL */
+       OCTET_STRING_t  *candidateCellInfoListSN;       /* OPTIONAL */
+       struct MeasResultCellListSFTD   *measResultCellListSFTD;        /* OPTIONAL */
+       struct CG_ConfigInfo_IEs__scgFailureInfo {
+               long     failureType;
+               OCTET_STRING_t   measResultSCG;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *scgFailureInfo;
+       struct ConfigRestrictInfoSCG    *configRestrictInfo;    /* OPTIONAL */
+       struct DRX_Info *drx_InfoMCG;   /* OPTIONAL */
+       struct MeasConfigMN     *measConfigMN;  /* OPTIONAL */
+       OCTET_STRING_t  *sourceConfigSCG;       /* OPTIONAL */
+       OCTET_STRING_t  *scg_RB_Config; /* OPTIONAL */
+       OCTET_STRING_t  *mcg_RB_Config; /* OPTIONAL */
+       struct MRDC_AssistanceInfo      *mrdc_AssistanceInfo;   /* OPTIONAL */
+       struct CG_ConfigInfo_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CG_ConfigInfo_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_failureType_7; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CG_ConfigInfo_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_CG_ConfigInfo_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_CG_ConfigInfo_IEs_1[13];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CG_ConfigInfo_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CG-ConfigInfo.c b/src/codec_utils/RRC/CG-ConfigInfo.c
new file mode 100644 (file)
index 0000000..f8cacdc
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CG-ConfigInfo.h"
+
+#include "CG-ConfigInfo-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CG_ConfigInfo__criticalExtensions__c1, choice.cg_ConfigInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CG_ConfigInfo_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cg-ConfigInfo"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cg-ConfigInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct CG_ConfigInfo__criticalExtensions__c1),
+       offsetof(struct CG_ConfigInfo__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct CG_ConfigInfo__criticalExtensions__c1, present),
+       sizeof(((struct CG_ConfigInfo__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_8 = {
+       sizeof(struct CG_ConfigInfo__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct CG_ConfigInfo__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_8 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_8,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_8,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct CG_ConfigInfo__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct CG_ConfigInfo__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct CG_ConfigInfo__criticalExtensions),
+       offsetof(struct CG_ConfigInfo__criticalExtensions, _asn_ctx),
+       offsetof(struct CG_ConfigInfo__criticalExtensions, present),
+       sizeof(((struct CG_ConfigInfo__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_CG_ConfigInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CG_ConfigInfo, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CG_ConfigInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CG_ConfigInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CG_ConfigInfo_specs_1 = {
+       sizeof(struct CG_ConfigInfo),
+       offsetof(struct CG_ConfigInfo, _asn_ctx),
+       asn_MAP_CG_ConfigInfo_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_CG_ConfigInfo = {
+       "CG-ConfigInfo",
+       "CG-ConfigInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CG_ConfigInfo_tags_1,
+       sizeof(asn_DEF_CG_ConfigInfo_tags_1)
+               /sizeof(asn_DEF_CG_ConfigInfo_tags_1[0]), /* 1 */
+       asn_DEF_CG_ConfigInfo_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CG_ConfigInfo_tags_1)
+               /sizeof(asn_DEF_CG_ConfigInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CG_ConfigInfo_1,
+       1,      /* Elements count */
+       &asn_SPC_CG_ConfigInfo_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CG-ConfigInfo.h b/src/codec_utils/RRC/CG-ConfigInfo.h
new file mode 100644 (file)
index 0000000..ec6662e
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CG_ConfigInfo_H_
+#define        _CG_ConfigInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CG_ConfigInfo__criticalExtensions_PR {
+       CG_ConfigInfo__criticalExtensions_PR_NOTHING,   /* No components present */
+       CG_ConfigInfo__criticalExtensions_PR_c1,
+       CG_ConfigInfo__criticalExtensions_PR_criticalExtensionsFuture
+} CG_ConfigInfo__criticalExtensions_PR;
+typedef enum CG_ConfigInfo__criticalExtensions__c1_PR {
+       CG_ConfigInfo__criticalExtensions__c1_PR_NOTHING,       /* No components present */
+       CG_ConfigInfo__criticalExtensions__c1_PR_cg_ConfigInfo,
+       CG_ConfigInfo__criticalExtensions__c1_PR_spare3,
+       CG_ConfigInfo__criticalExtensions__c1_PR_spare2,
+       CG_ConfigInfo__criticalExtensions__c1_PR_spare1
+} CG_ConfigInfo__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct CG_ConfigInfo_IEs;
+
+/* CG-ConfigInfo */
+typedef struct CG_ConfigInfo {
+       struct CG_ConfigInfo__criticalExtensions {
+               CG_ConfigInfo__criticalExtensions_PR present;
+               union CG_ConfigInfo__criticalExtensions_u {
+                       struct CG_ConfigInfo__criticalExtensions__c1 {
+                               CG_ConfigInfo__criticalExtensions__c1_PR present;
+                               union CG_ConfigInfo__criticalExtensions__c1_u {
+                                       struct CG_ConfigInfo_IEs        *cg_ConfigInfo;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct CG_ConfigInfo__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CG_ConfigInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CG_ConfigInfo;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CG_ConfigInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CG-UCI-OnPUSCH.c b/src/codec_utils/RRC/CG-UCI-OnPUSCH.c
new file mode 100644 (file)
index 0000000..e583a5b
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CG-UCI-OnPUSCH.h"
+
+#include "BetaOffsets.h"
+static int
+memb_dynamic_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 <= 4)) {
+               /* 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_dynamic_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_dynamic_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dynamic_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_dynamic_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_CG_UCI_OnPUSCH_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CG_UCI_OnPUSCH_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamic_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BetaOffsets,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_dynamic_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dynamic_specs_2 = {
+       sizeof(struct CG_UCI_OnPUSCH__dynamic),
+       offsetof(struct CG_UCI_OnPUSCH__dynamic, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamic_2 = {
+       "dynamic",
+       "dynamic",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_dynamic_tags_2,
+       sizeof(asn_DEF_dynamic_tags_2)
+               /sizeof(asn_DEF_dynamic_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dynamic_tags_2, /* Same as above */
+       sizeof(asn_DEF_dynamic_tags_2)
+               /sizeof(asn_DEF_dynamic_tags_2[0]), /* 2 */
+       { &asn_OER_type_dynamic_constr_2, &asn_PER_type_dynamic_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_dynamic_2,
+       1,      /* Single element */
+       &asn_SPC_dynamic_specs_2        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CG_UCI_OnPUSCH_1[] = {
+       { ATF_POINTER, 0, offsetof(struct CG_UCI_OnPUSCH, choice.dynamic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_dynamic_2,
+               0,
+               { &asn_OER_memb_dynamic_constr_2, &asn_PER_memb_dynamic_constr_2,  memb_dynamic_constraint_1 },
+               0, 0, /* No default value */
+               "dynamic"
+               },
+       { ATF_POINTER, 0, offsetof(struct CG_UCI_OnPUSCH, choice.semiStatic),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BetaOffsets,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiStatic"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CG_UCI_OnPUSCH_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dynamic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* semiStatic */
+};
+asn_CHOICE_specifics_t asn_SPC_CG_UCI_OnPUSCH_specs_1 = {
+       sizeof(struct CG_UCI_OnPUSCH),
+       offsetof(struct CG_UCI_OnPUSCH, _asn_ctx),
+       offsetof(struct CG_UCI_OnPUSCH, present),
+       sizeof(((struct CG_UCI_OnPUSCH *)0)->present),
+       asn_MAP_CG_UCI_OnPUSCH_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CG_UCI_OnPUSCH = {
+       "CG-UCI-OnPUSCH",
+       "CG-UCI-OnPUSCH",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_CG_UCI_OnPUSCH_constr_1, &asn_PER_type_CG_UCI_OnPUSCH_constr_1, CHOICE_constraint },
+       asn_MBR_CG_UCI_OnPUSCH_1,
+       2,      /* Elements count */
+       &asn_SPC_CG_UCI_OnPUSCH_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CG-UCI-OnPUSCH.h b/src/codec_utils/RRC/CG-UCI-OnPUSCH.h
new file mode 100644 (file)
index 0000000..6a3a909
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CG_UCI_OnPUSCH_H_
+#define        _CG_UCI_OnPUSCH_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CG_UCI_OnPUSCH_PR {
+       CG_UCI_OnPUSCH_PR_NOTHING,      /* No components present */
+       CG_UCI_OnPUSCH_PR_dynamic,
+       CG_UCI_OnPUSCH_PR_semiStatic
+} CG_UCI_OnPUSCH_PR;
+
+/* Forward declarations */
+struct BetaOffsets;
+
+/* CG-UCI-OnPUSCH */
+typedef struct CG_UCI_OnPUSCH {
+       CG_UCI_OnPUSCH_PR present;
+       union CG_UCI_OnPUSCH_u {
+               struct CG_UCI_OnPUSCH__dynamic {
+                       A_SEQUENCE_OF(struct BetaOffsets) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *dynamic;
+               struct BetaOffsets      *semiStatic;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CG_UCI_OnPUSCH_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CG_UCI_OnPUSCH;
+extern asn_CHOICE_specifics_t asn_SPC_CG_UCI_OnPUSCH_specs_1;
+extern asn_TYPE_member_t asn_MBR_CG_UCI_OnPUSCH_1[2];
+extern asn_per_constraints_t asn_PER_type_CG_UCI_OnPUSCH_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CG_UCI_OnPUSCH_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CGI-Info.c b/src/codec_utils/RRC/CGI-Info.c
new file mode 100644 (file)
index 0000000..e7d75ed
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CGI-Info.h"
+
+#include "PLMN-IdentityInfoList.h"
+#include "MultiFrequencyBandListNR.h"
+static int
+memb_ssb_SubcarrierOffset_constraint_4(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 <= 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 asn_oer_constraints_t asn_OER_memb_ssb_SubcarrierOffset_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ssb_SubcarrierOffset_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_noSIB1_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CGI_Info__noSIB1, ssb_SubcarrierOffset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ssb_SubcarrierOffset_constr_5, &asn_PER_memb_ssb_SubcarrierOffset_constr_5,  memb_ssb_SubcarrierOffset_constraint_4 },
+               0, 0, /* No default value */
+               "ssb-SubcarrierOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CGI_Info__noSIB1, pdcch_ConfigSIB1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCCH_ConfigSIB1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-ConfigSIB1"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_noSIB1_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_noSIB1_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-SubcarrierOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pdcch-ConfigSIB1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_noSIB1_specs_4 = {
+       sizeof(struct CGI_Info__noSIB1),
+       offsetof(struct CGI_Info__noSIB1, _asn_ctx),
+       asn_MAP_noSIB1_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_noSIB1_4 = {
+       "noSIB1",
+       "noSIB1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_noSIB1_tags_4,
+       sizeof(asn_DEF_noSIB1_tags_4)
+               /sizeof(asn_DEF_noSIB1_tags_4[0]) - 1, /* 1 */
+       asn_DEF_noSIB1_tags_4,  /* Same as above */
+       sizeof(asn_DEF_noSIB1_tags_4)
+               /sizeof(asn_DEF_noSIB1_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_noSIB1_4,
+       2,      /* Elements count */
+       &asn_SPC_noSIB1_specs_4 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CGI_Info_1[] = {
+       { ATF_POINTER, 3, offsetof(struct CGI_Info, plmn_IdentityInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentityInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-IdentityInfoList"
+               },
+       { ATF_POINTER, 2, offsetof(struct CGI_Info, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CGI_Info, noSIB1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_noSIB1_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "noSIB1"
+               },
+};
+static const int asn_MAP_CGI_Info_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CGI_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CGI_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* noSIB1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CGI_Info_specs_1 = {
+       sizeof(struct CGI_Info),
+       offsetof(struct CGI_Info, _asn_ctx),
+       asn_MAP_CGI_Info_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CGI_Info_oms_1, /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CGI_Info = {
+       "CGI-Info",
+       "CGI-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CGI_Info_tags_1,
+       sizeof(asn_DEF_CGI_Info_tags_1)
+               /sizeof(asn_DEF_CGI_Info_tags_1[0]), /* 1 */
+       asn_DEF_CGI_Info_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CGI_Info_tags_1)
+               /sizeof(asn_DEF_CGI_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CGI_Info_1,
+       3,      /* Elements count */
+       &asn_SPC_CGI_Info_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CGI-Info.h b/src/codec_utils/RRC/CGI-Info.h
new file mode 100644 (file)
index 0000000..f4914fc
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CGI_Info_H_
+#define        _CGI_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "PDCCH-ConfigSIB1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PLMN_IdentityInfoList;
+struct MultiFrequencyBandListNR;
+
+/* CGI-Info */
+typedef struct CGI_Info {
+       struct PLMN_IdentityInfoList    *plmn_IdentityInfoList; /* OPTIONAL */
+       struct MultiFrequencyBandListNR *frequencyBandList;     /* OPTIONAL */
+       struct CGI_Info__noSIB1 {
+               long     ssb_SubcarrierOffset;
+               PDCCH_ConfigSIB1_t       pdcch_ConfigSIB1;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *noSIB1;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CGI_Info_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CGI_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_CGI_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_CGI_Info_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CGI_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-AperiodicTriggerState.c b/src/codec_utils/RRC/CSI-AperiodicTriggerState.c
new file mode 100644 (file)
index 0000000..2e4a8c6
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-AperiodicTriggerState.h"
+
+#include "CSI-AssociatedReportConfigInfo.h"
+static int
+memb_associatedReportConfigInfoList_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 <= 16)) {
+               /* 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_associatedReportConfigInfoList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_associatedReportConfigInfoList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_associatedReportConfigInfoList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_associatedReportConfigInfoList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_associatedReportConfigInfoList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_AssociatedReportConfigInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_associatedReportConfigInfoList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_associatedReportConfigInfoList_specs_2 = {
+       sizeof(struct CSI_AperiodicTriggerState__associatedReportConfigInfoList),
+       offsetof(struct CSI_AperiodicTriggerState__associatedReportConfigInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_associatedReportConfigInfoList_2 = {
+       "associatedReportConfigInfoList",
+       "associatedReportConfigInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_associatedReportConfigInfoList_tags_2,
+       sizeof(asn_DEF_associatedReportConfigInfoList_tags_2)
+               /sizeof(asn_DEF_associatedReportConfigInfoList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_associatedReportConfigInfoList_tags_2,  /* Same as above */
+       sizeof(asn_DEF_associatedReportConfigInfoList_tags_2)
+               /sizeof(asn_DEF_associatedReportConfigInfoList_tags_2[0]), /* 2 */
+       { &asn_OER_type_associatedReportConfigInfoList_constr_2, &asn_PER_type_associatedReportConfigInfoList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_associatedReportConfigInfoList_2,
+       1,      /* Single element */
+       &asn_SPC_associatedReportConfigInfoList_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_AperiodicTriggerState_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_AperiodicTriggerState, associatedReportConfigInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_associatedReportConfigInfoList_2,
+               0,
+               { &asn_OER_memb_associatedReportConfigInfoList_constr_2, &asn_PER_memb_associatedReportConfigInfoList_constr_2,  memb_associatedReportConfigInfoList_constraint_1 },
+               0, 0, /* No default value */
+               "associatedReportConfigInfoList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_AperiodicTriggerState_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_AperiodicTriggerState_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* associatedReportConfigInfoList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_AperiodicTriggerState_specs_1 = {
+       sizeof(struct CSI_AperiodicTriggerState),
+       offsetof(struct CSI_AperiodicTriggerState, _asn_ctx),
+       asn_MAP_CSI_AperiodicTriggerState_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_CSI_AperiodicTriggerState = {
+       "CSI-AperiodicTriggerState",
+       "CSI-AperiodicTriggerState",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_AperiodicTriggerState_tags_1,
+       sizeof(asn_DEF_CSI_AperiodicTriggerState_tags_1)
+               /sizeof(asn_DEF_CSI_AperiodicTriggerState_tags_1[0]), /* 1 */
+       asn_DEF_CSI_AperiodicTriggerState_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CSI_AperiodicTriggerState_tags_1)
+               /sizeof(asn_DEF_CSI_AperiodicTriggerState_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_AperiodicTriggerState_1,
+       1,      /* Elements count */
+       &asn_SPC_CSI_AperiodicTriggerState_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-AperiodicTriggerState.h b/src/codec_utils/RRC/CSI-AperiodicTriggerState.h
new file mode 100644 (file)
index 0000000..5f1cf9a
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_AperiodicTriggerState_H_
+#define        _CSI_AperiodicTriggerState_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CSI_AssociatedReportConfigInfo;
+
+/* CSI-AperiodicTriggerState */
+typedef struct CSI_AperiodicTriggerState {
+       struct CSI_AperiodicTriggerState__associatedReportConfigInfoList {
+               A_SEQUENCE_OF(struct CSI_AssociatedReportConfigInfo) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } associatedReportConfigInfoList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_AperiodicTriggerState_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_AperiodicTriggerState;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_AperiodicTriggerState_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_AperiodicTriggerState_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_AperiodicTriggerState_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-AperiodicTriggerStateList.c b/src/codec_utils/RRC/CSI-AperiodicTriggerStateList.c
new file mode 100644 (file)
index 0000000..4cddf8b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-AperiodicTriggerStateList.h"
+
+#include "CSI-AperiodicTriggerState.h"
+static asn_oer_constraints_t asn_OER_type_CSI_AperiodicTriggerStateList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+asn_per_constraints_t asn_PER_type_CSI_AperiodicTriggerStateList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_AperiodicTriggerStateList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_AperiodicTriggerState,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_AperiodicTriggerStateList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CSI_AperiodicTriggerStateList_specs_1 = {
+       sizeof(struct CSI_AperiodicTriggerStateList),
+       offsetof(struct CSI_AperiodicTriggerStateList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_AperiodicTriggerStateList = {
+       "CSI-AperiodicTriggerStateList",
+       "CSI-AperiodicTriggerStateList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CSI_AperiodicTriggerStateList_tags_1,
+       sizeof(asn_DEF_CSI_AperiodicTriggerStateList_tags_1)
+               /sizeof(asn_DEF_CSI_AperiodicTriggerStateList_tags_1[0]), /* 1 */
+       asn_DEF_CSI_AperiodicTriggerStateList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CSI_AperiodicTriggerStateList_tags_1)
+               /sizeof(asn_DEF_CSI_AperiodicTriggerStateList_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_AperiodicTriggerStateList_constr_1, &asn_PER_type_CSI_AperiodicTriggerStateList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CSI_AperiodicTriggerStateList_1,
+       1,      /* Single element */
+       &asn_SPC_CSI_AperiodicTriggerStateList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-AperiodicTriggerStateList.h b/src/codec_utils/RRC/CSI-AperiodicTriggerStateList.h
new file mode 100644 (file)
index 0000000..5c61953
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_AperiodicTriggerStateList_H_
+#define        _CSI_AperiodicTriggerStateList_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 CSI_AperiodicTriggerState;
+
+/* CSI-AperiodicTriggerStateList */
+typedef struct CSI_AperiodicTriggerStateList {
+       A_SEQUENCE_OF(struct CSI_AperiodicTriggerState) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_AperiodicTriggerStateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_AperiodicTriggerStateList;
+extern asn_SET_OF_specifics_t asn_SPC_CSI_AperiodicTriggerStateList_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_AperiodicTriggerStateList_1[1];
+extern asn_per_constraints_t asn_PER_type_CSI_AperiodicTriggerStateList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_AperiodicTriggerStateList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.c b/src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.c
new file mode 100644 (file)
index 0000000..8f7de80
--- /dev/null
@@ -0,0 +1,405 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-AssociatedReportConfigInfo.h"
+
+static int
+memb_resourceSet_constraint_4(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 <= 16)) {
+               /* 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_qcl_info_constraint_4(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 <= 16)) {
+               /* 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_csi_SSB_ResourceSet_constraint_3(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)) {
+               /* 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_csi_IM_ResourcesForInterference_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 <= 16)) {
+               /* 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_nzp_CSI_RS_ResourcesForInterference_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 <= 16)) {
+               /* 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_qcl_info_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_qcl_info_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceSet_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_resourceSet_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_qcl_info_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_qcl_info_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_SSB_ResourceSet_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (1..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_csi_SSB_ResourceSet_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (1..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourcesForChannel_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourcesForChannel_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_csi_IM_ResourcesForInterference_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourcesForInterference_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nzp_CSI_RS_ResourcesForInterference_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourcesForInterference_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_qcl_info_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_qcl_info_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_qcl_info_specs_6 = {
+       sizeof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS__qcl_info),
+       offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS__qcl_info, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_qcl_info_6 = {
+       "qcl-info",
+       "qcl-info",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_qcl_info_tags_6,
+       sizeof(asn_DEF_qcl_info_tags_6)
+               /sizeof(asn_DEF_qcl_info_tags_6[0]) - 1, /* 1 */
+       asn_DEF_qcl_info_tags_6,        /* Same as above */
+       sizeof(asn_DEF_qcl_info_tags_6)
+               /sizeof(asn_DEF_qcl_info_tags_6[0]), /* 2 */
+       { &asn_OER_type_qcl_info_constr_6, &asn_PER_type_qcl_info_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_qcl_info_6,
+       1,      /* Single element */
+       &asn_SPC_qcl_info_specs_6       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS, resourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_resourceSet_constr_5, &asn_PER_memb_resourceSet_constr_5,  memb_resourceSet_constraint_4 },
+               0, 0, /* No default value */
+               "resourceSet"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS, qcl_info),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_qcl_info_6,
+               0,
+               { &asn_OER_memb_qcl_info_constr_6, &asn_PER_memb_qcl_info_constr_6,  memb_qcl_info_constraint_4 },
+               0, 0, /* No default value */
+               "qcl-info"
+               },
+};
+static const int asn_MAP_nzp_CSI_RS_oms_4[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nzp_CSI_RS_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceSet */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* qcl-info */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nzp_CSI_RS_specs_4 = {
+       sizeof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS),
+       offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS, _asn_ctx),
+       asn_MAP_nzp_CSI_RS_tag2el_4,
+       2,      /* Count of tags in the map */
+       asn_MAP_nzp_CSI_RS_oms_4,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_4 = {
+       "nzp-CSI-RS",
+       "nzp-CSI-RS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nzp_CSI_RS_tags_4,
+       sizeof(asn_DEF_nzp_CSI_RS_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_tags_4,      /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nzp_CSI_RS_4,
+       2,      /* Elements count */
+       &asn_SPC_nzp_CSI_RS_specs_4     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourcesForChannel_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel, choice.nzp_CSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel, choice.csi_SSB_ResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_csi_SSB_ResourceSet_constr_8, &asn_PER_memb_csi_SSB_ResourceSet_constr_8,  memb_csi_SSB_ResourceSet_constraint_3 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceSet"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_resourcesForChannel_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-SSB-ResourceSet */
+};
+static asn_CHOICE_specifics_t asn_SPC_resourcesForChannel_specs_3 = {
+       sizeof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel),
+       offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel, _asn_ctx),
+       offsetof(struct CSI_AssociatedReportConfigInfo__resourcesForChannel, present),
+       sizeof(((struct CSI_AssociatedReportConfigInfo__resourcesForChannel *)0)->present),
+       asn_MAP_resourcesForChannel_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourcesForChannel_3 = {
+       "resourcesForChannel",
+       "resourcesForChannel",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_resourcesForChannel_constr_3, &asn_PER_type_resourcesForChannel_constr_3, CHOICE_constraint },
+       asn_MBR_resourcesForChannel_3,
+       2,      /* Elements count */
+       &asn_SPC_resourcesForChannel_specs_3    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_AssociatedReportConfigInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_AssociatedReportConfigInfo, reportConfigId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_AssociatedReportConfigInfo, resourcesForChannel),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_resourcesForChannel_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourcesForChannel"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_AssociatedReportConfigInfo, csi_IM_ResourcesForInterference),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_csi_IM_ResourcesForInterference_constr_9, &asn_PER_memb_csi_IM_ResourcesForInterference_constr_9,  memb_csi_IM_ResourcesForInterference_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-ResourcesForInterference"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_AssociatedReportConfigInfo, nzp_CSI_RS_ResourcesForInterference),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourcesForInterference_constr_10, &asn_PER_memb_nzp_CSI_RS_ResourcesForInterference_constr_10,  memb_nzp_CSI_RS_ResourcesForInterference_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourcesForInterference"
+               },
+};
+static const int asn_MAP_CSI_AssociatedReportConfigInfo_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_CSI_AssociatedReportConfigInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_AssociatedReportConfigInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportConfigId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resourcesForChannel */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* csi-IM-ResourcesForInterference */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nzp-CSI-RS-ResourcesForInterference */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_AssociatedReportConfigInfo_specs_1 = {
+       sizeof(struct CSI_AssociatedReportConfigInfo),
+       offsetof(struct CSI_AssociatedReportConfigInfo, _asn_ctx),
+       asn_MAP_CSI_AssociatedReportConfigInfo_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_CSI_AssociatedReportConfigInfo_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_AssociatedReportConfigInfo = {
+       "CSI-AssociatedReportConfigInfo",
+       "CSI-AssociatedReportConfigInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_AssociatedReportConfigInfo_tags_1,
+       sizeof(asn_DEF_CSI_AssociatedReportConfigInfo_tags_1)
+               /sizeof(asn_DEF_CSI_AssociatedReportConfigInfo_tags_1[0]), /* 1 */
+       asn_DEF_CSI_AssociatedReportConfigInfo_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CSI_AssociatedReportConfigInfo_tags_1)
+               /sizeof(asn_DEF_CSI_AssociatedReportConfigInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_AssociatedReportConfigInfo_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_AssociatedReportConfigInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.h b/src/codec_utils/RRC/CSI-AssociatedReportConfigInfo.h
new file mode 100644 (file)
index 0000000..1e05f28
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_AssociatedReportConfigInfo_H_
+#define        _CSI_AssociatedReportConfigInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-ReportConfigId.h"
+#include <NativeInteger.h>
+#include "TCI-StateId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_AssociatedReportConfigInfo__resourcesForChannel_PR {
+       CSI_AssociatedReportConfigInfo__resourcesForChannel_PR_NOTHING, /* No components present */
+       CSI_AssociatedReportConfigInfo__resourcesForChannel_PR_nzp_CSI_RS,
+       CSI_AssociatedReportConfigInfo__resourcesForChannel_PR_csi_SSB_ResourceSet
+} CSI_AssociatedReportConfigInfo__resourcesForChannel_PR;
+
+/* CSI-AssociatedReportConfigInfo */
+typedef struct CSI_AssociatedReportConfigInfo {
+       CSI_ReportConfigId_t     reportConfigId;
+       struct CSI_AssociatedReportConfigInfo__resourcesForChannel {
+               CSI_AssociatedReportConfigInfo__resourcesForChannel_PR present;
+               union CSI_AssociatedReportConfigInfo__resourcesForChannel_u {
+                       struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS {
+                               long     resourceSet;
+                               struct CSI_AssociatedReportConfigInfo__resourcesForChannel__nzp_CSI_RS__qcl_info {
+                                       A_SEQUENCE_OF(TCI_StateId_t) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *qcl_info;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *nzp_CSI_RS;
+                       long     csi_SSB_ResourceSet;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resourcesForChannel;
+       long    *csi_IM_ResourcesForInterference;       /* OPTIONAL */
+       long    *nzp_CSI_RS_ResourcesForInterference;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_AssociatedReportConfigInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_AssociatedReportConfigInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_AssociatedReportConfigInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_AssociatedReportConfigInfo_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_AssociatedReportConfigInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-FrequencyOccupation.c b/src/codec_utils/RRC/CSI-FrequencyOccupation.c
new file mode 100644 (file)
index 0000000..f70ee0b
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-FrequencyOccupation.h"
+
+static int
+memb_startingRB_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 >= 0 && value <= 274)) {
+               /* 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_nrofRBs_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 >= 24 && value <= 276)) {
+               /* 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_startingRB_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..274) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingRB_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofRBs_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (24..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofRBs_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  24,  276 }     /* (24..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_FrequencyOccupation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_FrequencyOccupation, startingRB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingRB_constr_2, &asn_PER_memb_startingRB_constr_2,  memb_startingRB_constraint_1 },
+               0, 0, /* No default value */
+               "startingRB"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_FrequencyOccupation, nrofRBs),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofRBs_constr_3, &asn_PER_memb_nrofRBs_constr_3,  memb_nrofRBs_constraint_1 },
+               0, 0, /* No default value */
+               "nrofRBs"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_FrequencyOccupation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_FrequencyOccupation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startingRB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrofRBs */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_FrequencyOccupation_specs_1 = {
+       sizeof(struct CSI_FrequencyOccupation),
+       offsetof(struct CSI_FrequencyOccupation, _asn_ctx),
+       asn_MAP_CSI_FrequencyOccupation_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_CSI_FrequencyOccupation = {
+       "CSI-FrequencyOccupation",
+       "CSI-FrequencyOccupation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_FrequencyOccupation_tags_1,
+       sizeof(asn_DEF_CSI_FrequencyOccupation_tags_1)
+               /sizeof(asn_DEF_CSI_FrequencyOccupation_tags_1[0]), /* 1 */
+       asn_DEF_CSI_FrequencyOccupation_tags_1, /* Same as above */
+       sizeof(asn_DEF_CSI_FrequencyOccupation_tags_1)
+               /sizeof(asn_DEF_CSI_FrequencyOccupation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_FrequencyOccupation_1,
+       2,      /* Elements count */
+       &asn_SPC_CSI_FrequencyOccupation_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-FrequencyOccupation.h b/src/codec_utils/RRC/CSI-FrequencyOccupation.h
new file mode 100644 (file)
index 0000000..ce191ff
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_FrequencyOccupation_H_
+#define        _CSI_FrequencyOccupation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-FrequencyOccupation */
+typedef struct CSI_FrequencyOccupation {
+       long     startingRB;
+       long     nrofRBs;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_FrequencyOccupation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_FrequencyOccupation;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_FrequencyOccupation_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_FrequencyOccupation_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_FrequencyOccupation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-IM-Resource.c b/src/codec_utils/RRC/CSI-IM-Resource.c
new file mode 100644 (file)
index 0000000..2b16009
--- /dev/null
@@ -0,0 +1,421 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-IM-Resource.h"
+
+#include "CSI-FrequencyOccupation.h"
+#include "CSI-ResourcePeriodicityAndOffset.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_symbolLocation_p0_constraint_4(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 <= 12)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_symbolLocation_p1_constraint_13(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 <= 13)) {
+               /* 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_subcarrierLocation_p0_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subcarrierLocation_p0_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_symbolLocation_p0_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_symbolLocation_p0_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  12 }       /* (0..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subcarrierLocation_p1_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subcarrierLocation_p1_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_symbolLocation_p1_constr_18 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_symbolLocation_p1_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceElementPattern_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceElementPattern_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_subcarrierLocation_p0_value2enum_5[] = {
+       { 0,    2,      "s0" },
+       { 1,    2,      "s2" },
+       { 2,    2,      "s4" },
+       { 3,    2,      "s6" },
+       { 4,    2,      "s8" },
+       { 5,    3,      "s10" }
+};
+static const unsigned int asn_MAP_subcarrierLocation_p0_enum2value_5[] = {
+       0,      /* s0(0) */
+       5,      /* s10(5) */
+       1,      /* s2(1) */
+       2,      /* s4(2) */
+       3,      /* s6(3) */
+       4       /* s8(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_subcarrierLocation_p0_specs_5 = {
+       asn_MAP_subcarrierLocation_p0_value2enum_5,     /* "tag" => N; sorted by tag */
+       asn_MAP_subcarrierLocation_p0_enum2value_5,     /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_subcarrierLocation_p0_tags_5[] = {
+       (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_subcarrierLocation_p0_5 = {
+       "subcarrierLocation-p0",
+       "subcarrierLocation-p0",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_subcarrierLocation_p0_tags_5,
+       sizeof(asn_DEF_subcarrierLocation_p0_tags_5)
+               /sizeof(asn_DEF_subcarrierLocation_p0_tags_5[0]) - 1, /* 1 */
+       asn_DEF_subcarrierLocation_p0_tags_5,   /* Same as above */
+       sizeof(asn_DEF_subcarrierLocation_p0_tags_5)
+               /sizeof(asn_DEF_subcarrierLocation_p0_tags_5[0]), /* 2 */
+       { &asn_OER_type_subcarrierLocation_p0_constr_5, &asn_PER_type_subcarrierLocation_p0_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_subcarrierLocation_p0_specs_5  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pattern0_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0, subcarrierLocation_p0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_subcarrierLocation_p0_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierLocation-p0"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0, symbolLocation_p0),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_symbolLocation_p0_constr_12, &asn_PER_memb_symbolLocation_p0_constr_12,  memb_symbolLocation_p0_constraint_4 },
+               0, 0, /* No default value */
+               "symbolLocation-p0"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pattern0_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_pattern0_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subcarrierLocation-p0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* symbolLocation-p0 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_pattern0_specs_4 = {
+       sizeof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0),
+       offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0, _asn_ctx),
+       asn_MAP_pattern0_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pattern0_4 = {
+       "pattern0",
+       "pattern0",
+       &asn_OP_SEQUENCE,
+       asn_DEF_pattern0_tags_4,
+       sizeof(asn_DEF_pattern0_tags_4)
+               /sizeof(asn_DEF_pattern0_tags_4[0]) - 1, /* 1 */
+       asn_DEF_pattern0_tags_4,        /* Same as above */
+       sizeof(asn_DEF_pattern0_tags_4)
+               /sizeof(asn_DEF_pattern0_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_pattern0_4,
+       2,      /* Elements count */
+       &asn_SPC_pattern0_specs_4       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_subcarrierLocation_p1_value2enum_14[] = {
+       { 0,    2,      "s0" },
+       { 1,    2,      "s4" },
+       { 2,    2,      "s8" }
+};
+static const unsigned int asn_MAP_subcarrierLocation_p1_enum2value_14[] = {
+       0,      /* s0(0) */
+       1,      /* s4(1) */
+       2       /* s8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_subcarrierLocation_p1_specs_14 = {
+       asn_MAP_subcarrierLocation_p1_value2enum_14,    /* "tag" => N; sorted by tag */
+       asn_MAP_subcarrierLocation_p1_enum2value_14,    /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_subcarrierLocation_p1_tags_14[] = {
+       (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_subcarrierLocation_p1_14 = {
+       "subcarrierLocation-p1",
+       "subcarrierLocation-p1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_subcarrierLocation_p1_tags_14,
+       sizeof(asn_DEF_subcarrierLocation_p1_tags_14)
+               /sizeof(asn_DEF_subcarrierLocation_p1_tags_14[0]) - 1, /* 1 */
+       asn_DEF_subcarrierLocation_p1_tags_14,  /* Same as above */
+       sizeof(asn_DEF_subcarrierLocation_p1_tags_14)
+               /sizeof(asn_DEF_subcarrierLocation_p1_tags_14[0]), /* 2 */
+       { &asn_OER_type_subcarrierLocation_p1_constr_14, &asn_PER_type_subcarrierLocation_p1_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_subcarrierLocation_p1_specs_14 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pattern1_13[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1, subcarrierLocation_p1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_subcarrierLocation_p1_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierLocation-p1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1, symbolLocation_p1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_symbolLocation_p1_constr_18, &asn_PER_memb_symbolLocation_p1_constr_18,  memb_symbolLocation_p1_constraint_13 },
+               0, 0, /* No default value */
+               "symbolLocation-p1"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pattern1_tags_13[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_pattern1_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subcarrierLocation-p1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* symbolLocation-p1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_pattern1_specs_13 = {
+       sizeof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1),
+       offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1, _asn_ctx),
+       asn_MAP_pattern1_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pattern1_13 = {
+       "pattern1",
+       "pattern1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_pattern1_tags_13,
+       sizeof(asn_DEF_pattern1_tags_13)
+               /sizeof(asn_DEF_pattern1_tags_13[0]) - 1, /* 1 */
+       asn_DEF_pattern1_tags_13,       /* Same as above */
+       sizeof(asn_DEF_pattern1_tags_13)
+               /sizeof(asn_DEF_pattern1_tags_13[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_pattern1_13,
+       2,      /* Elements count */
+       &asn_SPC_pattern1_specs_13      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceElementPattern_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern, choice.pattern0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_pattern0_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pattern0"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern, choice.pattern1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_pattern1_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pattern1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_IM_ResourceElementPattern_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pattern0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pattern1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_csi_IM_ResourceElementPattern_specs_3 = {
+       sizeof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern),
+       offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern, _asn_ctx),
+       offsetof(struct CSI_IM_Resource__csi_IM_ResourceElementPattern, present),
+       sizeof(((struct CSI_IM_Resource__csi_IM_ResourceElementPattern *)0)->present),
+       asn_MAP_csi_IM_ResourceElementPattern_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceElementPattern_3 = {
+       "csi-IM-ResourceElementPattern",
+       "csi-IM-ResourceElementPattern",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_csi_IM_ResourceElementPattern_constr_3, &asn_PER_type_csi_IM_ResourceElementPattern_constr_3, CHOICE_constraint },
+       asn_MBR_csi_IM_ResourceElementPattern_3,
+       2,      /* Elements count */
+       &asn_SPC_csi_IM_ResourceElementPattern_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_IM_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_Resource, csi_IM_ResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_IM_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceId"
+               },
+       { ATF_POINTER, 3, offsetof(struct CSI_IM_Resource, csi_IM_ResourceElementPattern),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_csi_IM_ResourceElementPattern_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceElementPattern"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_IM_Resource, freqBand),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_FrequencyOccupation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBand"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_IM_Resource, periodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CSI_ResourcePeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset"
+               },
+};
+static const int asn_MAP_CSI_IM_Resource_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_CSI_IM_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_IM_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-IM-ResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-IM-ResourceElementPattern */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* freqBand */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* periodicityAndOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_IM_Resource_specs_1 = {
+       sizeof(struct CSI_IM_Resource),
+       offsetof(struct CSI_IM_Resource, _asn_ctx),
+       asn_MAP_CSI_IM_Resource_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_CSI_IM_Resource_oms_1,  /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_IM_Resource = {
+       "CSI-IM-Resource",
+       "CSI-IM-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_IM_Resource_tags_1,
+       sizeof(asn_DEF_CSI_IM_Resource_tags_1)
+               /sizeof(asn_DEF_CSI_IM_Resource_tags_1[0]), /* 1 */
+       asn_DEF_CSI_IM_Resource_tags_1, /* Same as above */
+       sizeof(asn_DEF_CSI_IM_Resource_tags_1)
+               /sizeof(asn_DEF_CSI_IM_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_IM_Resource_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_IM_Resource_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-IM-Resource.h b/src/codec_utils/RRC/CSI-IM-Resource.h
new file mode 100644 (file)
index 0000000..bebacd2
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_IM_Resource_H_
+#define        _CSI_IM_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-IM-ResourceId.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_IM_Resource__csi_IM_ResourceElementPattern_PR {
+       CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_NOTHING,      /* No components present */
+       CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern0,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern_PR_pattern1
+} CSI_IM_Resource__csi_IM_ResourceElementPattern_PR;
+typedef enum CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0 {
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s0      = 0,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s2      = 1,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s4      = 2,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s6      = 3,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s8      = 4,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0_s10     = 5
+} e_CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0__subcarrierLocation_p0;
+typedef enum CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1 {
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1_s0      = 0,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1_s4      = 1,
+       CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1_s8      = 2
+} e_CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1__subcarrierLocation_p1;
+
+/* Forward declarations */
+struct CSI_FrequencyOccupation;
+struct CSI_ResourcePeriodicityAndOffset;
+
+/* CSI-IM-Resource */
+typedef struct CSI_IM_Resource {
+       CSI_IM_ResourceId_t      csi_IM_ResourceId;
+       struct CSI_IM_Resource__csi_IM_ResourceElementPattern {
+               CSI_IM_Resource__csi_IM_ResourceElementPattern_PR present;
+               union CSI_IM_Resource__csi_IM_ResourceElementPattern_u {
+                       struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern0 {
+                               long     subcarrierLocation_p0;
+                               long     symbolLocation_p0;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *pattern0;
+                       struct CSI_IM_Resource__csi_IM_ResourceElementPattern__pattern1 {
+                               long     subcarrierLocation_p1;
+                               long     symbolLocation_p1;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *pattern1;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_IM_ResourceElementPattern;
+       struct CSI_FrequencyOccupation  *freqBand;      /* OPTIONAL */
+       struct CSI_ResourcePeriodicityAndOffset *periodicityAndOffset;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_IM_Resource_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_subcarrierLocation_p0_5;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_subcarrierLocation_p1_14;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_IM_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_IM_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_IM_Resource_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_IM_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceId.c b/src/codec_utils/RRC/CSI-IM-ResourceId.c
new file mode 100644 (file)
index 0000000..cc1ed5f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-IM-ResourceId.h"
+
+int
+CSI_IM_ResourceId_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 <= 31)) {
+               /* 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_CSI_IM_ResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_IM_ResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CSI_IM_ResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_IM_ResourceId = {
+       "CSI-IM-ResourceId",
+       "CSI-IM-ResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_IM_ResourceId_tags_1,
+       sizeof(asn_DEF_CSI_IM_ResourceId_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceId_tags_1[0]), /* 1 */
+       asn_DEF_CSI_IM_ResourceId_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CSI_IM_ResourceId_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_IM_ResourceId_constr_1, &asn_PER_type_CSI_IM_ResourceId_constr_1, CSI_IM_ResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceId.h b/src/codec_utils/RRC/CSI-IM-ResourceId.h
new file mode 100644 (file)
index 0000000..67a178e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_IM_ResourceId_H_
+#define        _CSI_IM_ResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-IM-ResourceId */
+typedef long    CSI_IM_ResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_IM_ResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_IM_ResourceId;
+asn_struct_free_f CSI_IM_ResourceId_free;
+asn_struct_print_f CSI_IM_ResourceId_print;
+asn_constr_check_f CSI_IM_ResourceId_constraint;
+ber_type_decoder_f CSI_IM_ResourceId_decode_ber;
+der_type_encoder_f CSI_IM_ResourceId_encode_der;
+xer_type_decoder_f CSI_IM_ResourceId_decode_xer;
+xer_type_encoder_f CSI_IM_ResourceId_encode_xer;
+oer_type_decoder_f CSI_IM_ResourceId_decode_oer;
+oer_type_encoder_f CSI_IM_ResourceId_encode_oer;
+per_type_decoder_f CSI_IM_ResourceId_decode_uper;
+per_type_encoder_f CSI_IM_ResourceId_encode_uper;
+per_type_decoder_f CSI_IM_ResourceId_decode_aper;
+per_type_encoder_f CSI_IM_ResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_IM_ResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceSet.c b/src/codec_utils/RRC/CSI-IM-ResourceSet.c
new file mode 100644 (file)
index 0000000..02efa8d
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-IM-ResourceSet.h"
+
+static int
+memb_csi_IM_Resources_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 <= 8)) {
+               /* 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_csi_IM_Resources_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_Resources_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_Resources_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_Resources_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_csi_IM_Resources_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_IM_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_Resources_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_Resources_specs_3 = {
+       sizeof(struct CSI_IM_ResourceSet__csi_IM_Resources),
+       offsetof(struct CSI_IM_ResourceSet__csi_IM_Resources, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_Resources_3 = {
+       "csi-IM-Resources",
+       "csi-IM-Resources",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_Resources_tags_3,
+       sizeof(asn_DEF_csi_IM_Resources_tags_3)
+               /sizeof(asn_DEF_csi_IM_Resources_tags_3[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_Resources_tags_3,        /* Same as above */
+       sizeof(asn_DEF_csi_IM_Resources_tags_3)
+               /sizeof(asn_DEF_csi_IM_Resources_tags_3[0]), /* 2 */
+       { &asn_OER_type_csi_IM_Resources_constr_3, &asn_PER_type_csi_IM_Resources_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_Resources_3,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_Resources_specs_3       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_IM_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_ResourceSet, csi_IM_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_IM_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_IM_ResourceSet, csi_IM_Resources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_IM_Resources_3,
+               0,
+               { &asn_OER_memb_csi_IM_Resources_constr_3, &asn_PER_memb_csi_IM_Resources_constr_3,  memb_csi_IM_Resources_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-Resources"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_IM_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_IM_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-IM-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-IM-Resources */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_IM_ResourceSet_specs_1 = {
+       sizeof(struct CSI_IM_ResourceSet),
+       offsetof(struct CSI_IM_ResourceSet, _asn_ctx),
+       asn_MAP_CSI_IM_ResourceSet_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_CSI_IM_ResourceSet = {
+       "CSI-IM-ResourceSet",
+       "CSI-IM-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_IM_ResourceSet_tags_1,
+       sizeof(asn_DEF_CSI_IM_ResourceSet_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_CSI_IM_ResourceSet_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CSI_IM_ResourceSet_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_IM_ResourceSet_1,
+       2,      /* Elements count */
+       &asn_SPC_CSI_IM_ResourceSet_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceSet.h b/src/codec_utils/RRC/CSI-IM-ResourceSet.h
new file mode 100644 (file)
index 0000000..550e59b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_IM_ResourceSet_H_
+#define        _CSI_IM_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-IM-ResourceSetId.h"
+#include "CSI-IM-ResourceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-IM-ResourceSet */
+typedef struct CSI_IM_ResourceSet {
+       CSI_IM_ResourceSetId_t   csi_IM_ResourceSetId;
+       struct CSI_IM_ResourceSet__csi_IM_Resources {
+               A_SEQUENCE_OF(CSI_IM_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_IM_Resources;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_IM_ResourceSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_IM_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_IM_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_IM_ResourceSet_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_IM_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceSetId.c b/src/codec_utils/RRC/CSI-IM-ResourceSetId.c
new file mode 100644 (file)
index 0000000..0ee3b03
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-IM-ResourceSetId.h"
+
+int
+CSI_IM_ResourceSetId_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_CSI_IM_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_IM_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_CSI_IM_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_IM_ResourceSetId = {
+       "CSI-IM-ResourceSetId",
+       "CSI-IM-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_IM_ResourceSetId_tags_1,
+       sizeof(asn_DEF_CSI_IM_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_CSI_IM_ResourceSetId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CSI_IM_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_CSI_IM_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_IM_ResourceSetId_constr_1, &asn_PER_type_CSI_IM_ResourceSetId_constr_1, CSI_IM_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-IM-ResourceSetId.h b/src/codec_utils/RRC/CSI-IM-ResourceSetId.h
new file mode 100644 (file)
index 0000000..c93189e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_IM_ResourceSetId_H_
+#define        _CSI_IM_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-IM-ResourceSetId */
+typedef long    CSI_IM_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_IM_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_IM_ResourceSetId;
+asn_struct_free_f CSI_IM_ResourceSetId_free;
+asn_struct_print_f CSI_IM_ResourceSetId_print;
+asn_constr_check_f CSI_IM_ResourceSetId_constraint;
+ber_type_decoder_f CSI_IM_ResourceSetId_decode_ber;
+der_type_encoder_f CSI_IM_ResourceSetId_encode_der;
+xer_type_decoder_f CSI_IM_ResourceSetId_decode_xer;
+xer_type_encoder_f CSI_IM_ResourceSetId_encode_xer;
+oer_type_decoder_f CSI_IM_ResourceSetId_decode_oer;
+oer_type_encoder_f CSI_IM_ResourceSetId_encode_oer;
+per_type_decoder_f CSI_IM_ResourceSetId_decode_uper;
+per_type_encoder_f CSI_IM_ResourceSetId_encode_uper;
+per_type_decoder_f CSI_IM_ResourceSetId_decode_aper;
+per_type_encoder_f CSI_IM_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_IM_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-MeasConfig.c b/src/codec_utils/RRC/CSI-MeasConfig.c
new file mode 100644 (file)
index 0000000..ea78d82
--- /dev/null
@@ -0,0 +1,1474 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-MeasConfig.h"
+
+#include "NZP-CSI-RS-Resource.h"
+#include "NZP-CSI-RS-ResourceSet.h"
+#include "CSI-IM-Resource.h"
+#include "CSI-IM-ResourceSet.h"
+#include "CSI-SSB-ResourceSet.h"
+#include "CSI-ResourceConfig.h"
+#include "CSI-ReportConfig.h"
+#include "CSI-AperiodicTriggerStateList.h"
+#include "CSI-SemiPersistentOnPUSCH-TriggerStateList.h"
+static int
+memb_nzp_CSI_RS_ResourceToAddModList_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 <= 192)) {
+               /* 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_nzp_CSI_RS_ResourceToReleaseList_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 <= 192)) {
+               /* 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_nzp_CSI_RS_ResourceSetToAddModList_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 <= 64)) {
+               /* 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_nzp_CSI_RS_ResourceSetToReleaseList_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 <= 64)) {
+               /* 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_csi_IM_ResourceToAddModList_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 <= 32)) {
+               /* 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_csi_IM_ResourceToReleaseList_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 <= 32)) {
+               /* 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_csi_IM_ResourceSetToAddModList_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 <= 64)) {
+               /* 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_csi_IM_ResourceSetToReleaseList_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 <= 64)) {
+               /* 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_csi_SSB_ResourceSetToAddModList_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 <= 64)) {
+               /* 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_csi_SSB_ResourceSetToAddReleaseList_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 <= 64)) {
+               /* 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_csi_ResourceConfigToAddModList_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 <= 112)) {
+               /* 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_csi_ResourceConfigToReleaseList_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 <= 112)) {
+               /* 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_csi_ReportConfigToAddModList_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 <= 48)) {
+               /* 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_csi_ReportConfigToReleaseList_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 <= 48)) {
+               /* 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_reportTriggerSize_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 >= 0 && value <= 6)) {
+               /* 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_nzp_CSI_RS_ResourceToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..192)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_ResourceToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  192 }      /* (SIZE(1..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nzp_CSI_RS_ResourceToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..192)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_ResourceToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  192 }      /* (SIZE(1..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nzp_CSI_RS_ResourceSetToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_ResourceSetToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nzp_CSI_RS_ResourceSetToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_ResourceSetToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceToAddModList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceToAddModList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceToReleaseList_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceToReleaseList_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceSetToAddModList_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceSetToAddModList_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceSetToReleaseList_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceSetToReleaseList_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_SSB_ResourceSetToAddModList_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_csi_SSB_ResourceSetToAddModList_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_SSB_ResourceSetToAddReleaseList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_csi_SSB_ResourceSetToAddReleaseList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_ResourceConfigToAddModList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..112)) */};
+static asn_per_constraints_t asn_PER_type_csi_ResourceConfigToAddModList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  112 }      /* (SIZE(1..112)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_ResourceConfigToReleaseList_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..112)) */};
+static asn_per_constraints_t asn_PER_type_csi_ResourceConfigToReleaseList_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  112 }      /* (SIZE(1..112)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_ReportConfigToAddModList_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..48)) */};
+static asn_per_constraints_t asn_PER_type_csi_ReportConfigToAddModList_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  48 }       /* (SIZE(1..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_ReportConfigToReleaseList_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..48)) */};
+static asn_per_constraints_t asn_PER_type_csi_ReportConfigToReleaseList_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  48 }       /* (SIZE(1..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aperiodicTriggerStateList_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aperiodicTriggerStateList_constr_31 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_semiPersistentOnPUSCH_TriggerStateList_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_semiPersistentOnPUSCH_TriggerStateList_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_nzp_CSI_RS_ResourceToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..192)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourceToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  192 }      /* (SIZE(1..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nzp_CSI_RS_ResourceToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..192)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourceToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  192 }      /* (SIZE(1..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nzp_CSI_RS_ResourceSetToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourceSetToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nzp_CSI_RS_ResourceSetToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourceSetToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_ResourceToAddModList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourceToAddModList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_ResourceToReleaseList_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourceToReleaseList_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_ResourceSetToAddModList_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourceSetToAddModList_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_ResourceSetToReleaseList_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourceSetToReleaseList_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_SSB_ResourceSetToAddModList_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_csi_SSB_ResourceSetToAddModList_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_SSB_ResourceSetToAddReleaseList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_csi_SSB_ResourceSetToAddReleaseList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_ResourceConfigToAddModList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..112)) */};
+static asn_per_constraints_t asn_PER_memb_csi_ResourceConfigToAddModList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  112 }      /* (SIZE(1..112)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_ResourceConfigToReleaseList_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..112)) */};
+static asn_per_constraints_t asn_PER_memb_csi_ResourceConfigToReleaseList_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  112 }      /* (SIZE(1..112)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_ReportConfigToAddModList_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..48)) */};
+static asn_per_constraints_t asn_PER_memb_csi_ReportConfigToAddModList_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  48 }       /* (SIZE(1..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_ReportConfigToReleaseList_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..48)) */};
+static asn_per_constraints_t asn_PER_memb_csi_ReportConfigToReleaseList_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  48 }       /* (SIZE(1..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reportTriggerSize_constr_30 CC_NOTUSED = {
+       { 1, 1 }        /* (0..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_reportTriggerSize_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_ResourceToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_ResourceToAddModList_specs_2 = {
+       sizeof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceToAddModList),
+       offsetof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_ResourceToAddModList_2 = {
+       "nzp-CSI-RS-ResourceToAddModList",
+       "nzp-CSI-RS-ResourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2,
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2, /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_ResourceToAddModList_constr_2, &asn_PER_type_nzp_CSI_RS_ResourceToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_ResourceToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_ResourceToAddModList_specs_2        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_ResourceToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_ResourceToReleaseList_specs_4 = {
+       sizeof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceToReleaseList),
+       offsetof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_ResourceToReleaseList_4 = {
+       "nzp-CSI-RS-ResourceToReleaseList",
+       "nzp-CSI-RS-ResourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4,
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4,        /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_ResourceToReleaseList_constr_4, &asn_PER_type_nzp_CSI_RS_ResourceToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_ResourceToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_ResourceToReleaseList_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_ResourceSetToAddModList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_ResourceSetToAddModList_specs_6 = {
+       sizeof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToAddModList),
+       offsetof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_6 = {
+       "nzp-CSI-RS-ResourceSetToAddModList",
+       "nzp-CSI-RS-ResourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6,
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6,      /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_tags_6[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_ResourceSetToAddModList_constr_6, &asn_PER_type_nzp_CSI_RS_ResourceSetToAddModList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_ResourceSetToAddModList_6,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_ResourceSetToAddModList_specs_6     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_ResourceSetToReleaseList_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_ResourceSetToReleaseList_specs_8 = {
+       sizeof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToReleaseList),
+       offsetof(struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_8 = {
+       "nzp-CSI-RS-ResourceSetToReleaseList",
+       "nzp-CSI-RS-ResourceSetToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8,
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8,     /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_tags_8[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_ResourceSetToReleaseList_constr_8, &asn_PER_type_nzp_CSI_RS_ResourceSetToReleaseList_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_ResourceSetToReleaseList_8,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_ResourceSetToReleaseList_specs_8    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceToAddModList_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_IM_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_ResourceToAddModList_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_ResourceToAddModList_specs_10 = {
+       sizeof(struct CSI_MeasConfig__csi_IM_ResourceToAddModList),
+       offsetof(struct CSI_MeasConfig__csi_IM_ResourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceToAddModList_10 = {
+       "csi-IM-ResourceToAddModList",
+       "csi-IM-ResourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_ResourceToAddModList_tags_10,
+       sizeof(asn_DEF_csi_IM_ResourceToAddModList_tags_10)
+               /sizeof(asn_DEF_csi_IM_ResourceToAddModList_tags_10[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_ResourceToAddModList_tags_10,    /* Same as above */
+       sizeof(asn_DEF_csi_IM_ResourceToAddModList_tags_10)
+               /sizeof(asn_DEF_csi_IM_ResourceToAddModList_tags_10[0]), /* 2 */
+       { &asn_OER_type_csi_IM_ResourceToAddModList_constr_10, &asn_PER_type_csi_IM_ResourceToAddModList_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_ResourceToAddModList_10,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_ResourceToAddModList_specs_10   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceToReleaseList_12[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_IM_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_ResourceToReleaseList_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_ResourceToReleaseList_specs_12 = {
+       sizeof(struct CSI_MeasConfig__csi_IM_ResourceToReleaseList),
+       offsetof(struct CSI_MeasConfig__csi_IM_ResourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceToReleaseList_12 = {
+       "csi-IM-ResourceToReleaseList",
+       "csi-IM-ResourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_ResourceToReleaseList_tags_12,
+       sizeof(asn_DEF_csi_IM_ResourceToReleaseList_tags_12)
+               /sizeof(asn_DEF_csi_IM_ResourceToReleaseList_tags_12[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_ResourceToReleaseList_tags_12,   /* Same as above */
+       sizeof(asn_DEF_csi_IM_ResourceToReleaseList_tags_12)
+               /sizeof(asn_DEF_csi_IM_ResourceToReleaseList_tags_12[0]), /* 2 */
+       { &asn_OER_type_csi_IM_ResourceToReleaseList_constr_12, &asn_PER_type_csi_IM_ResourceToReleaseList_constr_12, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_ResourceToReleaseList_12,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_ResourceToReleaseList_specs_12  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceSetToAddModList_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_IM_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_ResourceSetToAddModList_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_ResourceSetToAddModList_specs_14 = {
+       sizeof(struct CSI_MeasConfig__csi_IM_ResourceSetToAddModList),
+       offsetof(struct CSI_MeasConfig__csi_IM_ResourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceSetToAddModList_14 = {
+       "csi-IM-ResourceSetToAddModList",
+       "csi-IM-ResourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_ResourceSetToAddModList_tags_14,
+       sizeof(asn_DEF_csi_IM_ResourceSetToAddModList_tags_14)
+               /sizeof(asn_DEF_csi_IM_ResourceSetToAddModList_tags_14[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_ResourceSetToAddModList_tags_14, /* Same as above */
+       sizeof(asn_DEF_csi_IM_ResourceSetToAddModList_tags_14)
+               /sizeof(asn_DEF_csi_IM_ResourceSetToAddModList_tags_14[0]), /* 2 */
+       { &asn_OER_type_csi_IM_ResourceSetToAddModList_constr_14, &asn_PER_type_csi_IM_ResourceSetToAddModList_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_ResourceSetToAddModList_14,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_ResourceSetToAddModList_specs_14        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceSetToReleaseList_16[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_IM_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_ResourceSetToReleaseList_specs_16 = {
+       sizeof(struct CSI_MeasConfig__csi_IM_ResourceSetToReleaseList),
+       offsetof(struct CSI_MeasConfig__csi_IM_ResourceSetToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceSetToReleaseList_16 = {
+       "csi-IM-ResourceSetToReleaseList",
+       "csi-IM-ResourceSetToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16,
+       sizeof(asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16)
+               /sizeof(asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16,        /* Same as above */
+       sizeof(asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16)
+               /sizeof(asn_DEF_csi_IM_ResourceSetToReleaseList_tags_16[0]), /* 2 */
+       { &asn_OER_type_csi_IM_ResourceSetToReleaseList_constr_16, &asn_PER_type_csi_IM_ResourceSetToReleaseList_constr_16, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_ResourceSetToReleaseList_16,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_ResourceSetToReleaseList_specs_16       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_SSB_ResourceSetToAddModList_18[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_SSB_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_SSB_ResourceSetToAddModList_specs_18 = {
+       sizeof(struct CSI_MeasConfig__csi_SSB_ResourceSetToAddModList),
+       offsetof(struct CSI_MeasConfig__csi_SSB_ResourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_SSB_ResourceSetToAddModList_18 = {
+       "csi-SSB-ResourceSetToAddModList",
+       "csi-SSB-ResourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18,
+       sizeof(asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18[0]) - 1, /* 1 */
+       asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18,        /* Same as above */
+       sizeof(asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetToAddModList_tags_18[0]), /* 2 */
+       { &asn_OER_type_csi_SSB_ResourceSetToAddModList_constr_18, &asn_PER_type_csi_SSB_ResourceSetToAddModList_constr_18, SEQUENCE_OF_constraint },
+       asn_MBR_csi_SSB_ResourceSetToAddModList_18,
+       1,      /* Single element */
+       &asn_SPC_csi_SSB_ResourceSetToAddModList_specs_18       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_SSB_ResourceSetToAddReleaseList_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_SSB_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_SSB_ResourceSetToAddReleaseList_specs_20 = {
+       sizeof(struct CSI_MeasConfig__csi_SSB_ResourceSetToAddReleaseList),
+       offsetof(struct CSI_MeasConfig__csi_SSB_ResourceSetToAddReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_SSB_ResourceSetToAddReleaseList_20 = {
+       "csi-SSB-ResourceSetToAddReleaseList",
+       "csi-SSB-ResourceSetToAddReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20,
+       sizeof(asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20[0]) - 1, /* 1 */
+       asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20,    /* Same as above */
+       sizeof(asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetToAddReleaseList_tags_20[0]), /* 2 */
+       { &asn_OER_type_csi_SSB_ResourceSetToAddReleaseList_constr_20, &asn_PER_type_csi_SSB_ResourceSetToAddReleaseList_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_csi_SSB_ResourceSetToAddReleaseList_20,
+       1,      /* Single element */
+       &asn_SPC_csi_SSB_ResourceSetToAddReleaseList_specs_20   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_ResourceConfigToAddModList_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_ResourceConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_ResourceConfigToAddModList_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_ResourceConfigToAddModList_specs_22 = {
+       sizeof(struct CSI_MeasConfig__csi_ResourceConfigToAddModList),
+       offsetof(struct CSI_MeasConfig__csi_ResourceConfigToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_ResourceConfigToAddModList_22 = {
+       "csi-ResourceConfigToAddModList",
+       "csi-ResourceConfigToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_ResourceConfigToAddModList_tags_22,
+       sizeof(asn_DEF_csi_ResourceConfigToAddModList_tags_22)
+               /sizeof(asn_DEF_csi_ResourceConfigToAddModList_tags_22[0]) - 1, /* 1 */
+       asn_DEF_csi_ResourceConfigToAddModList_tags_22, /* Same as above */
+       sizeof(asn_DEF_csi_ResourceConfigToAddModList_tags_22)
+               /sizeof(asn_DEF_csi_ResourceConfigToAddModList_tags_22[0]), /* 2 */
+       { &asn_OER_type_csi_ResourceConfigToAddModList_constr_22, &asn_PER_type_csi_ResourceConfigToAddModList_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_csi_ResourceConfigToAddModList_22,
+       1,      /* Single element */
+       &asn_SPC_csi_ResourceConfigToAddModList_specs_22        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_ResourceConfigToReleaseList_24[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_ResourceConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_ResourceConfigToReleaseList_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_ResourceConfigToReleaseList_specs_24 = {
+       sizeof(struct CSI_MeasConfig__csi_ResourceConfigToReleaseList),
+       offsetof(struct CSI_MeasConfig__csi_ResourceConfigToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_ResourceConfigToReleaseList_24 = {
+       "csi-ResourceConfigToReleaseList",
+       "csi-ResourceConfigToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_ResourceConfigToReleaseList_tags_24,
+       sizeof(asn_DEF_csi_ResourceConfigToReleaseList_tags_24)
+               /sizeof(asn_DEF_csi_ResourceConfigToReleaseList_tags_24[0]) - 1, /* 1 */
+       asn_DEF_csi_ResourceConfigToReleaseList_tags_24,        /* Same as above */
+       sizeof(asn_DEF_csi_ResourceConfigToReleaseList_tags_24)
+               /sizeof(asn_DEF_csi_ResourceConfigToReleaseList_tags_24[0]), /* 2 */
+       { &asn_OER_type_csi_ResourceConfigToReleaseList_constr_24, &asn_PER_type_csi_ResourceConfigToReleaseList_constr_24, SEQUENCE_OF_constraint },
+       asn_MBR_csi_ResourceConfigToReleaseList_24,
+       1,      /* Single element */
+       &asn_SPC_csi_ResourceConfigToReleaseList_specs_24       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_ReportConfigToAddModList_26[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_ReportConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_ReportConfigToAddModList_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_ReportConfigToAddModList_specs_26 = {
+       sizeof(struct CSI_MeasConfig__csi_ReportConfigToAddModList),
+       offsetof(struct CSI_MeasConfig__csi_ReportConfigToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_ReportConfigToAddModList_26 = {
+       "csi-ReportConfigToAddModList",
+       "csi-ReportConfigToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_ReportConfigToAddModList_tags_26,
+       sizeof(asn_DEF_csi_ReportConfigToAddModList_tags_26)
+               /sizeof(asn_DEF_csi_ReportConfigToAddModList_tags_26[0]) - 1, /* 1 */
+       asn_DEF_csi_ReportConfigToAddModList_tags_26,   /* Same as above */
+       sizeof(asn_DEF_csi_ReportConfigToAddModList_tags_26)
+               /sizeof(asn_DEF_csi_ReportConfigToAddModList_tags_26[0]), /* 2 */
+       { &asn_OER_type_csi_ReportConfigToAddModList_constr_26, &asn_PER_type_csi_ReportConfigToAddModList_constr_26, SEQUENCE_OF_constraint },
+       asn_MBR_csi_ReportConfigToAddModList_26,
+       1,      /* Single element */
+       &asn_SPC_csi_ReportConfigToAddModList_specs_26  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_ReportConfigToReleaseList_28[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_ReportConfigToReleaseList_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_ReportConfigToReleaseList_specs_28 = {
+       sizeof(struct CSI_MeasConfig__csi_ReportConfigToReleaseList),
+       offsetof(struct CSI_MeasConfig__csi_ReportConfigToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_ReportConfigToReleaseList_28 = {
+       "csi-ReportConfigToReleaseList",
+       "csi-ReportConfigToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_ReportConfigToReleaseList_tags_28,
+       sizeof(asn_DEF_csi_ReportConfigToReleaseList_tags_28)
+               /sizeof(asn_DEF_csi_ReportConfigToReleaseList_tags_28[0]) - 1, /* 1 */
+       asn_DEF_csi_ReportConfigToReleaseList_tags_28,  /* Same as above */
+       sizeof(asn_DEF_csi_ReportConfigToReleaseList_tags_28)
+               /sizeof(asn_DEF_csi_ReportConfigToReleaseList_tags_28[0]), /* 2 */
+       { &asn_OER_type_csi_ReportConfigToReleaseList_constr_28, &asn_PER_type_csi_ReportConfigToReleaseList_constr_28, SEQUENCE_OF_constraint },
+       asn_MBR_csi_ReportConfigToReleaseList_28,
+       1,      /* Single element */
+       &asn_SPC_csi_ReportConfigToReleaseList_specs_28 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodicTriggerStateList_31[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_MeasConfig__aperiodicTriggerStateList, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_MeasConfig__aperiodicTriggerStateList, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_AperiodicTriggerStateList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_aperiodicTriggerStateList_tag2el_31[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_aperiodicTriggerStateList_specs_31 = {
+       sizeof(struct CSI_MeasConfig__aperiodicTriggerStateList),
+       offsetof(struct CSI_MeasConfig__aperiodicTriggerStateList, _asn_ctx),
+       offsetof(struct CSI_MeasConfig__aperiodicTriggerStateList, present),
+       sizeof(((struct CSI_MeasConfig__aperiodicTriggerStateList *)0)->present),
+       asn_MAP_aperiodicTriggerStateList_tag2el_31,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodicTriggerStateList_31 = {
+       "aperiodicTriggerStateList",
+       "aperiodicTriggerStateList",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_aperiodicTriggerStateList_constr_31, &asn_PER_type_aperiodicTriggerStateList_constr_31, CHOICE_constraint },
+       asn_MBR_aperiodicTriggerStateList_31,
+       2,      /* Elements count */
+       &asn_SPC_aperiodicTriggerStateList_specs_31     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semiPersistentOnPUSCH_TriggerStateList_34[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_semiPersistentOnPUSCH_TriggerStateList_tag2el_34[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_semiPersistentOnPUSCH_TriggerStateList_specs_34 = {
+       sizeof(struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList),
+       offsetof(struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList, _asn_ctx),
+       offsetof(struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList, present),
+       sizeof(((struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList *)0)->present),
+       asn_MAP_semiPersistentOnPUSCH_TriggerStateList_tag2el_34,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semiPersistentOnPUSCH_TriggerStateList_34 = {
+       "semiPersistentOnPUSCH-TriggerStateList",
+       "semiPersistentOnPUSCH-TriggerStateList",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_semiPersistentOnPUSCH_TriggerStateList_constr_34, &asn_PER_type_semiPersistentOnPUSCH_TriggerStateList_constr_34, CHOICE_constraint },
+       asn_MBR_semiPersistentOnPUSCH_TriggerStateList_34,
+       2,      /* Elements count */
+       &asn_SPC_semiPersistentOnPUSCH_TriggerStateList_specs_34        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_MeasConfig_1[] = {
+       { ATF_POINTER, 17, offsetof(struct CSI_MeasConfig, nzp_CSI_RS_ResourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_ResourceToAddModList_2,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourceToAddModList_constr_2, &asn_PER_memb_nzp_CSI_RS_ResourceToAddModList_constr_2,  memb_nzp_CSI_RS_ResourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceToAddModList"
+               },
+       { ATF_POINTER, 16, offsetof(struct CSI_MeasConfig, nzp_CSI_RS_ResourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_ResourceToReleaseList_4,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourceToReleaseList_constr_4, &asn_PER_memb_nzp_CSI_RS_ResourceToReleaseList_constr_4,  memb_nzp_CSI_RS_ResourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceToReleaseList"
+               },
+       { ATF_POINTER, 15, offsetof(struct CSI_MeasConfig, nzp_CSI_RS_ResourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_ResourceSetToAddModList_6,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourceSetToAddModList_constr_6, &asn_PER_memb_nzp_CSI_RS_ResourceSetToAddModList_constr_6,  memb_nzp_CSI_RS_ResourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceSetToAddModList"
+               },
+       { ATF_POINTER, 14, offsetof(struct CSI_MeasConfig, nzp_CSI_RS_ResourceSetToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_ResourceSetToReleaseList_8,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourceSetToReleaseList_constr_8, &asn_PER_memb_nzp_CSI_RS_ResourceSetToReleaseList_constr_8,  memb_nzp_CSI_RS_ResourceSetToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceSetToReleaseList"
+               },
+       { ATF_POINTER, 13, offsetof(struct CSI_MeasConfig, csi_IM_ResourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_csi_IM_ResourceToAddModList_10,
+               0,
+               { &asn_OER_memb_csi_IM_ResourceToAddModList_constr_10, &asn_PER_memb_csi_IM_ResourceToAddModList_constr_10,  memb_csi_IM_ResourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceToAddModList"
+               },
+       { ATF_POINTER, 12, offsetof(struct CSI_MeasConfig, csi_IM_ResourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_csi_IM_ResourceToReleaseList_12,
+               0,
+               { &asn_OER_memb_csi_IM_ResourceToReleaseList_constr_12, &asn_PER_memb_csi_IM_ResourceToReleaseList_constr_12,  memb_csi_IM_ResourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceToReleaseList"
+               },
+       { ATF_POINTER, 11, offsetof(struct CSI_MeasConfig, csi_IM_ResourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_csi_IM_ResourceSetToAddModList_14,
+               0,
+               { &asn_OER_memb_csi_IM_ResourceSetToAddModList_constr_14, &asn_PER_memb_csi_IM_ResourceSetToAddModList_constr_14,  memb_csi_IM_ResourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceSetToAddModList"
+               },
+       { ATF_POINTER, 10, offsetof(struct CSI_MeasConfig, csi_IM_ResourceSetToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_csi_IM_ResourceSetToReleaseList_16,
+               0,
+               { &asn_OER_memb_csi_IM_ResourceSetToReleaseList_constr_16, &asn_PER_memb_csi_IM_ResourceSetToReleaseList_constr_16,  memb_csi_IM_ResourceSetToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceSetToReleaseList"
+               },
+       { ATF_POINTER, 9, offsetof(struct CSI_MeasConfig, csi_SSB_ResourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_csi_SSB_ResourceSetToAddModList_18,
+               0,
+               { &asn_OER_memb_csi_SSB_ResourceSetToAddModList_constr_18, &asn_PER_memb_csi_SSB_ResourceSetToAddModList_constr_18,  memb_csi_SSB_ResourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceSetToAddModList"
+               },
+       { ATF_POINTER, 8, offsetof(struct CSI_MeasConfig, csi_SSB_ResourceSetToAddReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_csi_SSB_ResourceSetToAddReleaseList_20,
+               0,
+               { &asn_OER_memb_csi_SSB_ResourceSetToAddReleaseList_constr_20, &asn_PER_memb_csi_SSB_ResourceSetToAddReleaseList_constr_20,  memb_csi_SSB_ResourceSetToAddReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceSetToAddReleaseList"
+               },
+       { ATF_POINTER, 7, offsetof(struct CSI_MeasConfig, csi_ResourceConfigToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_csi_ResourceConfigToAddModList_22,
+               0,
+               { &asn_OER_memb_csi_ResourceConfigToAddModList_constr_22, &asn_PER_memb_csi_ResourceConfigToAddModList_constr_22,  memb_csi_ResourceConfigToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-ResourceConfigToAddModList"
+               },
+       { ATF_POINTER, 6, offsetof(struct CSI_MeasConfig, csi_ResourceConfigToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               0,
+               &asn_DEF_csi_ResourceConfigToReleaseList_24,
+               0,
+               { &asn_OER_memb_csi_ResourceConfigToReleaseList_constr_24, &asn_PER_memb_csi_ResourceConfigToReleaseList_constr_24,  memb_csi_ResourceConfigToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-ResourceConfigToReleaseList"
+               },
+       { ATF_POINTER, 5, offsetof(struct CSI_MeasConfig, csi_ReportConfigToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               0,
+               &asn_DEF_csi_ReportConfigToAddModList_26,
+               0,
+               { &asn_OER_memb_csi_ReportConfigToAddModList_constr_26, &asn_PER_memb_csi_ReportConfigToAddModList_constr_26,  memb_csi_ReportConfigToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-ReportConfigToAddModList"
+               },
+       { ATF_POINTER, 4, offsetof(struct CSI_MeasConfig, csi_ReportConfigToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_csi_ReportConfigToReleaseList_28,
+               0,
+               { &asn_OER_memb_csi_ReportConfigToReleaseList_constr_28, &asn_PER_memb_csi_ReportConfigToReleaseList_constr_28,  memb_csi_ReportConfigToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-ReportConfigToReleaseList"
+               },
+       { ATF_POINTER, 3, offsetof(struct CSI_MeasConfig, reportTriggerSize),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_reportTriggerSize_constr_30, &asn_PER_memb_reportTriggerSize_constr_30,  memb_reportTriggerSize_constraint_1 },
+               0, 0, /* No default value */
+               "reportTriggerSize"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_MeasConfig, aperiodicTriggerStateList),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_aperiodicTriggerStateList_31,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodicTriggerStateList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_MeasConfig, semiPersistentOnPUSCH_TriggerStateList),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_semiPersistentOnPUSCH_TriggerStateList_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiPersistentOnPUSCH-TriggerStateList"
+               },
+};
+static const int asn_MAP_CSI_MeasConfig_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 };
+static const ber_tlv_tag_t asn_DEF_CSI_MeasConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_MeasConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-RS-ResourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nzp-CSI-RS-ResourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nzp-CSI-RS-ResourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nzp-CSI-RS-ResourceSetToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* csi-IM-ResourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* csi-IM-ResourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* csi-IM-ResourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* csi-IM-ResourceSetToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* csi-SSB-ResourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* csi-SSB-ResourceSetToAddReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* csi-ResourceConfigToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* csi-ResourceConfigToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* csi-ReportConfigToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* csi-ReportConfigToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* reportTriggerSize */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* aperiodicTriggerStateList */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 } /* semiPersistentOnPUSCH-TriggerStateList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_MeasConfig_specs_1 = {
+       sizeof(struct CSI_MeasConfig),
+       offsetof(struct CSI_MeasConfig, _asn_ctx),
+       asn_MAP_CSI_MeasConfig_tag2el_1,
+       17,     /* Count of tags in the map */
+       asn_MAP_CSI_MeasConfig_oms_1,   /* Optional members */
+       17, 0,  /* Root/Additions */
+       17,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_MeasConfig = {
+       "CSI-MeasConfig",
+       "CSI-MeasConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_MeasConfig_tags_1,
+       sizeof(asn_DEF_CSI_MeasConfig_tags_1)
+               /sizeof(asn_DEF_CSI_MeasConfig_tags_1[0]), /* 1 */
+       asn_DEF_CSI_MeasConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CSI_MeasConfig_tags_1)
+               /sizeof(asn_DEF_CSI_MeasConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_MeasConfig_1,
+       17,     /* Elements count */
+       &asn_SPC_CSI_MeasConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-MeasConfig.h b/src/codec_utils/RRC/CSI-MeasConfig.h
new file mode 100644 (file)
index 0000000..19abb78
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_MeasConfig_H_
+#define        _CSI_MeasConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "NZP-CSI-RS-ResourceId.h"
+#include "NZP-CSI-RS-ResourceSetId.h"
+#include "CSI-IM-ResourceId.h"
+#include "CSI-IM-ResourceSetId.h"
+#include "CSI-SSB-ResourceSetId.h"
+#include "CSI-ResourceConfigId.h"
+#include "CSI-ReportConfigId.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_MeasConfig__aperiodicTriggerStateList_PR {
+       CSI_MeasConfig__aperiodicTriggerStateList_PR_NOTHING,   /* No components present */
+       CSI_MeasConfig__aperiodicTriggerStateList_PR_release,
+       CSI_MeasConfig__aperiodicTriggerStateList_PR_setup
+} CSI_MeasConfig__aperiodicTriggerStateList_PR;
+typedef enum CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR {
+       CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR_NOTHING,      /* No components present */
+       CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR_release,
+       CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR_setup
+} CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR;
+
+/* Forward declarations */
+struct NZP_CSI_RS_Resource;
+struct NZP_CSI_RS_ResourceSet;
+struct CSI_IM_Resource;
+struct CSI_IM_ResourceSet;
+struct CSI_SSB_ResourceSet;
+struct CSI_ResourceConfig;
+struct CSI_ReportConfig;
+struct CSI_AperiodicTriggerStateList;
+struct CSI_SemiPersistentOnPUSCH_TriggerStateList;
+
+/* CSI-MeasConfig */
+typedef struct CSI_MeasConfig {
+       struct CSI_MeasConfig__nzp_CSI_RS_ResourceToAddModList {
+               A_SEQUENCE_OF(struct NZP_CSI_RS_Resource) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nzp_CSI_RS_ResourceToAddModList;
+       struct CSI_MeasConfig__nzp_CSI_RS_ResourceToReleaseList {
+               A_SEQUENCE_OF(NZP_CSI_RS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nzp_CSI_RS_ResourceToReleaseList;
+       struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToAddModList {
+               A_SEQUENCE_OF(struct NZP_CSI_RS_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nzp_CSI_RS_ResourceSetToAddModList;
+       struct CSI_MeasConfig__nzp_CSI_RS_ResourceSetToReleaseList {
+               A_SEQUENCE_OF(NZP_CSI_RS_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nzp_CSI_RS_ResourceSetToReleaseList;
+       struct CSI_MeasConfig__csi_IM_ResourceToAddModList {
+               A_SEQUENCE_OF(struct CSI_IM_Resource) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_IM_ResourceToAddModList;
+       struct CSI_MeasConfig__csi_IM_ResourceToReleaseList {
+               A_SEQUENCE_OF(CSI_IM_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_IM_ResourceToReleaseList;
+       struct CSI_MeasConfig__csi_IM_ResourceSetToAddModList {
+               A_SEQUENCE_OF(struct CSI_IM_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_IM_ResourceSetToAddModList;
+       struct CSI_MeasConfig__csi_IM_ResourceSetToReleaseList {
+               A_SEQUENCE_OF(CSI_IM_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_IM_ResourceSetToReleaseList;
+       struct CSI_MeasConfig__csi_SSB_ResourceSetToAddModList {
+               A_SEQUENCE_OF(struct CSI_SSB_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_SSB_ResourceSetToAddModList;
+       struct CSI_MeasConfig__csi_SSB_ResourceSetToAddReleaseList {
+               A_SEQUENCE_OF(CSI_SSB_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_SSB_ResourceSetToAddReleaseList;
+       struct CSI_MeasConfig__csi_ResourceConfigToAddModList {
+               A_SEQUENCE_OF(struct CSI_ResourceConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_ResourceConfigToAddModList;
+       struct CSI_MeasConfig__csi_ResourceConfigToReleaseList {
+               A_SEQUENCE_OF(CSI_ResourceConfigId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_ResourceConfigToReleaseList;
+       struct CSI_MeasConfig__csi_ReportConfigToAddModList {
+               A_SEQUENCE_OF(struct CSI_ReportConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_ReportConfigToAddModList;
+       struct CSI_MeasConfig__csi_ReportConfigToReleaseList {
+               A_SEQUENCE_OF(CSI_ReportConfigId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_ReportConfigToReleaseList;
+       long    *reportTriggerSize;     /* OPTIONAL */
+       struct CSI_MeasConfig__aperiodicTriggerStateList {
+               CSI_MeasConfig__aperiodicTriggerStateList_PR present;
+               union CSI_MeasConfig__aperiodicTriggerStateList_u {
+                       NULL_t   release;
+                       struct CSI_AperiodicTriggerStateList    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *aperiodicTriggerStateList;
+       struct CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList {
+               CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_PR present;
+               union CSI_MeasConfig__semiPersistentOnPUSCH_TriggerStateList_u {
+                       NULL_t   release;
+                       struct CSI_SemiPersistentOnPUSCH_TriggerStateList       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *semiPersistentOnPUSCH_TriggerStateList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_MeasConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_MeasConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_MeasConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_MeasConfig_1[17];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_MeasConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-CellMobility.c b/src/codec_utils/RRC/CSI-RS-CellMobility.c
new file mode 100644 (file)
index 0000000..1b32ac2
--- /dev/null
@@ -0,0 +1,352 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-CellMobility.h"
+
+#include "CSI-RS-Resource-Mobility.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_startPRB_constraint_3(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 <= 2169)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_csi_rs_ResourceList_Mobility_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 <= 96)) {
+               /* 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_nrofPRBs_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofPRBs_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startPRB_constr_10 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2169) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startPRB_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2169 }   /* (0..2169) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_density_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_density_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_rs_ResourceList_Mobility_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_type_csi_rs_ResourceList_Mobility_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_rs_ResourceList_Mobility_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_memb_csi_rs_ResourceList_Mobility_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_nrofPRBs_value2enum_4[] = {
+       { 0,    6,      "size24" },
+       { 1,    6,      "size48" },
+       { 2,    6,      "size96" },
+       { 3,    7,      "size192" },
+       { 4,    7,      "size264" }
+};
+static const unsigned int asn_MAP_nrofPRBs_enum2value_4[] = {
+       3,      /* size192(3) */
+       0,      /* size24(0) */
+       4,      /* size264(4) */
+       1,      /* size48(1) */
+       2       /* size96(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofPRBs_specs_4 = {
+       asn_MAP_nrofPRBs_value2enum_4,  /* "tag" => N; sorted by tag */
+       asn_MAP_nrofPRBs_enum2value_4,  /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofPRBs_tags_4[] = {
+       (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_nrofPRBs_4 = {
+       "nrofPRBs",
+       "nrofPRBs",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofPRBs_tags_4,
+       sizeof(asn_DEF_nrofPRBs_tags_4)
+               /sizeof(asn_DEF_nrofPRBs_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nrofPRBs_tags_4,        /* Same as above */
+       sizeof(asn_DEF_nrofPRBs_tags_4)
+               /sizeof(asn_DEF_nrofPRBs_tags_4[0]), /* 2 */
+       { &asn_OER_type_nrofPRBs_constr_4, &asn_PER_type_nrofPRBs_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofPRBs_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_rs_MeasurementBW_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_CellMobility__csi_rs_MeasurementBW, nrofPRBs),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofPRBs_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofPRBs"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_CellMobility__csi_rs_MeasurementBW, startPRB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startPRB_constr_10, &asn_PER_memb_startPRB_constr_10,  memb_startPRB_constraint_3 },
+               0, 0, /* No default value */
+               "startPRB"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_rs_MeasurementBW_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_rs_MeasurementBW_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofPRBs */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* startPRB */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_csi_rs_MeasurementBW_specs_3 = {
+       sizeof(struct CSI_RS_CellMobility__csi_rs_MeasurementBW),
+       offsetof(struct CSI_RS_CellMobility__csi_rs_MeasurementBW, _asn_ctx),
+       asn_MAP_csi_rs_MeasurementBW_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_rs_MeasurementBW_3 = {
+       "csi-rs-MeasurementBW",
+       "csi-rs-MeasurementBW",
+       &asn_OP_SEQUENCE,
+       asn_DEF_csi_rs_MeasurementBW_tags_3,
+       sizeof(asn_DEF_csi_rs_MeasurementBW_tags_3)
+               /sizeof(asn_DEF_csi_rs_MeasurementBW_tags_3[0]) - 1, /* 1 */
+       asn_DEF_csi_rs_MeasurementBW_tags_3,    /* Same as above */
+       sizeof(asn_DEF_csi_rs_MeasurementBW_tags_3)
+               /sizeof(asn_DEF_csi_rs_MeasurementBW_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_csi_rs_MeasurementBW_3,
+       2,      /* Elements count */
+       &asn_SPC_csi_rs_MeasurementBW_specs_3   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_density_value2enum_11[] = {
+       { 0,    2,      "d1" },
+       { 1,    2,      "d3" }
+};
+static const unsigned int asn_MAP_density_enum2value_11[] = {
+       0,      /* d1(0) */
+       1       /* d3(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_density_specs_11 = {
+       asn_MAP_density_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_density_enum2value_11,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_density_tags_11[] = {
+       (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_density_11 = {
+       "density",
+       "density",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_density_tags_11,
+       sizeof(asn_DEF_density_tags_11)
+               /sizeof(asn_DEF_density_tags_11[0]) - 1, /* 1 */
+       asn_DEF_density_tags_11,        /* Same as above */
+       sizeof(asn_DEF_density_tags_11)
+               /sizeof(asn_DEF_density_tags_11[0]), /* 2 */
+       { &asn_OER_type_density_constr_11, &asn_PER_type_density_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_density_specs_11       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_rs_ResourceList_Mobility_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_RS_Resource_Mobility,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_rs_ResourceList_Mobility_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_rs_ResourceList_Mobility_specs_14 = {
+       sizeof(struct CSI_RS_CellMobility__csi_rs_ResourceList_Mobility),
+       offsetof(struct CSI_RS_CellMobility__csi_rs_ResourceList_Mobility, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_rs_ResourceList_Mobility_14 = {
+       "csi-rs-ResourceList-Mobility",
+       "csi-rs-ResourceList-Mobility",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_rs_ResourceList_Mobility_tags_14,
+       sizeof(asn_DEF_csi_rs_ResourceList_Mobility_tags_14)
+               /sizeof(asn_DEF_csi_rs_ResourceList_Mobility_tags_14[0]) - 1, /* 1 */
+       asn_DEF_csi_rs_ResourceList_Mobility_tags_14,   /* Same as above */
+       sizeof(asn_DEF_csi_rs_ResourceList_Mobility_tags_14)
+               /sizeof(asn_DEF_csi_rs_ResourceList_Mobility_tags_14[0]), /* 2 */
+       { &asn_OER_type_csi_rs_ResourceList_Mobility_constr_14, &asn_PER_type_csi_rs_ResourceList_Mobility_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_csi_rs_ResourceList_Mobility_14,
+       1,      /* Single element */
+       &asn_SPC_csi_rs_ResourceList_Mobility_specs_14  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_RS_CellMobility_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_CellMobility, cellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_CellMobility, csi_rs_MeasurementBW),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_rs_MeasurementBW_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-rs-MeasurementBW"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_RS_CellMobility, density),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_density_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "density"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_CellMobility, csi_rs_ResourceList_Mobility),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_csi_rs_ResourceList_Mobility_14,
+               0,
+               { &asn_OER_memb_csi_rs_ResourceList_Mobility_constr_14, &asn_PER_memb_csi_rs_ResourceList_Mobility_constr_14,  memb_csi_rs_ResourceList_Mobility_constraint_1 },
+               0, 0, /* No default value */
+               "csi-rs-ResourceList-Mobility"
+               },
+};
+static const int asn_MAP_CSI_RS_CellMobility_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CSI_RS_CellMobility_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_CellMobility_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-rs-MeasurementBW */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* density */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* csi-rs-ResourceList-Mobility */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_CellMobility_specs_1 = {
+       sizeof(struct CSI_RS_CellMobility),
+       offsetof(struct CSI_RS_CellMobility, _asn_ctx),
+       asn_MAP_CSI_RS_CellMobility_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_CSI_RS_CellMobility_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_CellMobility = {
+       "CSI-RS-CellMobility",
+       "CSI-RS-CellMobility",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_CellMobility_tags_1,
+       sizeof(asn_DEF_CSI_RS_CellMobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_CellMobility_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_CellMobility_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CSI_RS_CellMobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_CellMobility_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_CellMobility_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_RS_CellMobility_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-CellMobility.h b/src/codec_utils/RRC/CSI-RS-CellMobility.h
new file mode 100644 (file)
index 0000000..3b20651
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_CellMobility_H_
+#define        _CSI_RS_CellMobility_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs {
+       CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs_size24      = 0,
+       CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs_size48      = 1,
+       CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs_size96      = 2,
+       CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs_size192     = 3,
+       CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs_size264     = 4
+} e_CSI_RS_CellMobility__csi_rs_MeasurementBW__nrofPRBs;
+typedef enum CSI_RS_CellMobility__density {
+       CSI_RS_CellMobility__density_d1 = 0,
+       CSI_RS_CellMobility__density_d3 = 1
+} e_CSI_RS_CellMobility__density;
+
+/* Forward declarations */
+struct CSI_RS_Resource_Mobility;
+
+/* CSI-RS-CellMobility */
+typedef struct CSI_RS_CellMobility {
+       PhysCellId_t     cellId;
+       struct CSI_RS_CellMobility__csi_rs_MeasurementBW {
+               long     nrofPRBs;
+               long     startPRB;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_rs_MeasurementBW;
+       long    *density;       /* OPTIONAL */
+       struct CSI_RS_CellMobility__csi_rs_ResourceList_Mobility {
+               A_SEQUENCE_OF(struct CSI_RS_Resource_Mobility) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_rs_ResourceList_Mobility;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_CellMobility_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofPRBs_4;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_density_11;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_CellMobility;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_CellMobility_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_CellMobility_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_CellMobility_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-ForTracking.c b/src/codec_utils/RRC/CSI-RS-ForTracking.c
new file mode 100644 (file)
index 0000000..68ee3d8
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-ForTracking.h"
+
+static int
+memb_burstLength_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 int
+memb_maxSimultaneousResourceSetsPerCC_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 <= 8)) {
+               /* 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_maxConfiguredResourceSetsPerCC_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 <= 64)) {
+               /* 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_maxConfiguredResourceSetsAllCC_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 <= 128)) {
+               /* 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_burstLength_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_burstLength_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (1..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxSimultaneousResourceSetsPerCC_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxSimultaneousResourceSetsPerCC_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxConfiguredResourceSetsPerCC_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxConfiguredResourceSetsPerCC_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxConfiguredResourceSetsAllCC_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..128) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxConfiguredResourceSetsAllCC_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (1..128) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_RS_ForTracking_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ForTracking, burstLength),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_burstLength_constr_2, &asn_PER_memb_burstLength_constr_2,  memb_burstLength_constraint_1 },
+               0, 0, /* No default value */
+               "burstLength"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ForTracking, maxSimultaneousResourceSetsPerCC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxSimultaneousResourceSetsPerCC_constr_3, &asn_PER_memb_maxSimultaneousResourceSetsPerCC_constr_3,  memb_maxSimultaneousResourceSetsPerCC_constraint_1 },
+               0, 0, /* No default value */
+               "maxSimultaneousResourceSetsPerCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ForTracking, maxConfiguredResourceSetsPerCC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxConfiguredResourceSetsPerCC_constr_4, &asn_PER_memb_maxConfiguredResourceSetsPerCC_constr_4,  memb_maxConfiguredResourceSetsPerCC_constraint_1 },
+               0, 0, /* No default value */
+               "maxConfiguredResourceSetsPerCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ForTracking, maxConfiguredResourceSetsAllCC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxConfiguredResourceSetsAllCC_constr_5, &asn_PER_memb_maxConfiguredResourceSetsAllCC_constr_5,  memb_maxConfiguredResourceSetsAllCC_constraint_1 },
+               0, 0, /* No default value */
+               "maxConfiguredResourceSetsAllCC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_RS_ForTracking_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_ForTracking_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* burstLength */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxSimultaneousResourceSetsPerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxConfiguredResourceSetsPerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* maxConfiguredResourceSetsAllCC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ForTracking_specs_1 = {
+       sizeof(struct CSI_RS_ForTracking),
+       offsetof(struct CSI_RS_ForTracking, _asn_ctx),
+       asn_MAP_CSI_RS_ForTracking_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_ForTracking = {
+       "CSI-RS-ForTracking",
+       "CSI-RS-ForTracking",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_ForTracking_tags_1,
+       sizeof(asn_DEF_CSI_RS_ForTracking_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ForTracking_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_ForTracking_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CSI_RS_ForTracking_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ForTracking_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_ForTracking_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_RS_ForTracking_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-ForTracking.h b/src/codec_utils/RRC/CSI-RS-ForTracking.h
new file mode 100644 (file)
index 0000000..b0a4196
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_ForTracking_H_
+#define        _CSI_RS_ForTracking_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-RS-ForTracking */
+typedef struct CSI_RS_ForTracking {
+       long     burstLength;
+       long     maxSimultaneousResourceSetsPerCC;
+       long     maxConfiguredResourceSetsPerCC;
+       long     maxConfiguredResourceSetsAllCC;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_ForTracking_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_ForTracking;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ForTracking_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_ForTracking_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_ForTracking_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.c b/src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.c
new file mode 100644 (file)
index 0000000..ae2f564
--- /dev/null
@@ -0,0 +1,517 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-IM-ReceptionForFeedback.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.
+ */
+static int
+memb_maxNumberNZP_CSI_RS_PerCC_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 <= 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_type_maxNumberPortsAcrossNZP_CSI_RS_PerCC_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberPortsAcrossNZP_CSI_RS_PerCC_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  34 }       /* (0..34) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberCS_IM_PerCC_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberCS_IM_PerCC_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_constr_80 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_constr_80 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberNZP_CSI_RS_PerCC_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberNZP_CSI_RS_PerCC_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberPortsAcrossNZP_CSI_RS_PerCC_value2enum_3[] = {
+       { 0,    2,      "p2" },
+       { 1,    2,      "p4" },
+       { 2,    2,      "p8" },
+       { 3,    3,      "p12" },
+       { 4,    3,      "p16" },
+       { 5,    3,      "p24" },
+       { 6,    3,      "p32" },
+       { 7,    3,      "p40" },
+       { 8,    3,      "p48" },
+       { 9,    3,      "p56" },
+       { 10,   3,      "p64" },
+       { 11,   3,      "p72" },
+       { 12,   3,      "p80" },
+       { 13,   3,      "p88" },
+       { 14,   3,      "p96" },
+       { 15,   4,      "p104" },
+       { 16,   4,      "p112" },
+       { 17,   4,      "p120" },
+       { 18,   4,      "p128" },
+       { 19,   4,      "p136" },
+       { 20,   4,      "p144" },
+       { 21,   4,      "p152" },
+       { 22,   4,      "p160" },
+       { 23,   4,      "p168" },
+       { 24,   4,      "p176" },
+       { 25,   4,      "p184" },
+       { 26,   4,      "p192" },
+       { 27,   4,      "p200" },
+       { 28,   4,      "p208" },
+       { 29,   4,      "p216" },
+       { 30,   4,      "p224" },
+       { 31,   4,      "p232" },
+       { 32,   4,      "p240" },
+       { 33,   4,      "p248" },
+       { 34,   4,      "p256" }
+};
+static const unsigned int asn_MAP_maxNumberPortsAcrossNZP_CSI_RS_PerCC_enum2value_3[] = {
+       15,     /* p104(15) */
+       16,     /* p112(16) */
+       3,      /* p12(3) */
+       17,     /* p120(17) */
+       18,     /* p128(18) */
+       19,     /* p136(19) */
+       20,     /* p144(20) */
+       21,     /* p152(21) */
+       4,      /* p16(4) */
+       22,     /* p160(22) */
+       23,     /* p168(23) */
+       24,     /* p176(24) */
+       25,     /* p184(25) */
+       26,     /* p192(26) */
+       0,      /* p2(0) */
+       27,     /* p200(27) */
+       28,     /* p208(28) */
+       29,     /* p216(29) */
+       30,     /* p224(30) */
+       31,     /* p232(31) */
+       5,      /* p24(5) */
+       32,     /* p240(32) */
+       33,     /* p248(33) */
+       34,     /* p256(34) */
+       6,      /* p32(6) */
+       1,      /* p4(1) */
+       7,      /* p40(7) */
+       8,      /* p48(8) */
+       9,      /* p56(9) */
+       10,     /* p64(10) */
+       11,     /* p72(11) */
+       2,      /* p8(2) */
+       12,     /* p80(12) */
+       13,     /* p88(13) */
+       14      /* p96(14) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberPortsAcrossNZP_CSI_RS_PerCC_specs_3 = {
+       asn_MAP_maxNumberPortsAcrossNZP_CSI_RS_PerCC_value2enum_3,      /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberPortsAcrossNZP_CSI_RS_PerCC_enum2value_3,      /* N => "tag"; sorted by N */
+       35,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_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_maxNumberPortsAcrossNZP_CSI_RS_PerCC_3 = {
+       "maxNumberPortsAcrossNZP-CSI-RS-PerCC",
+       "maxNumberPortsAcrossNZP-CSI-RS-PerCC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3,
+       sizeof(asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3)
+               /sizeof(asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3[0]) - 1, /* 1 */
+       asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3,    /* Same as above */
+       sizeof(asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3)
+               /sizeof(asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_tags_3[0]), /* 2 */
+       { &asn_OER_type_maxNumberPortsAcrossNZP_CSI_RS_PerCC_constr_3, &asn_PER_type_maxNumberPortsAcrossNZP_CSI_RS_PerCC_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberPortsAcrossNZP_CSI_RS_PerCC_specs_3   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberCS_IM_PerCC_value2enum_39[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" },
+       { 4,    3,      "n16" },
+       { 5,    3,      "n32" }
+};
+static const unsigned int asn_MAP_maxNumberCS_IM_PerCC_enum2value_39[] = {
+       0,      /* n1(0) */
+       4,      /* n16(4) */
+       1,      /* n2(1) */
+       5,      /* n32(5) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberCS_IM_PerCC_specs_39 = {
+       asn_MAP_maxNumberCS_IM_PerCC_value2enum_39,     /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberCS_IM_PerCC_enum2value_39,     /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberCS_IM_PerCC_tags_39[] = {
+       (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_maxNumberCS_IM_PerCC_39 = {
+       "maxNumberCS-IM-PerCC",
+       "maxNumberCS-IM-PerCC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberCS_IM_PerCC_tags_39,
+       sizeof(asn_DEF_maxNumberCS_IM_PerCC_tags_39)
+               /sizeof(asn_DEF_maxNumberCS_IM_PerCC_tags_39[0]) - 1, /* 1 */
+       asn_DEF_maxNumberCS_IM_PerCC_tags_39,   /* Same as above */
+       sizeof(asn_DEF_maxNumberCS_IM_PerCC_tags_39)
+               /sizeof(asn_DEF_maxNumberCS_IM_PerCC_tags_39[0]), /* 2 */
+       { &asn_OER_type_maxNumberCS_IM_PerCC_constr_39, &asn_PER_type_maxNumberCS_IM_PerCC_constr_39, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberCS_IM_PerCC_specs_39  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_value2enum_46[] = {
+       { 0,    2,      "n5" },
+       { 1,    2,      "n6" },
+       { 2,    2,      "n7" },
+       { 3,    2,      "n8" },
+       { 4,    2,      "n9" },
+       { 5,    3,      "n10" },
+       { 6,    3,      "n12" },
+       { 7,    3,      "n14" },
+       { 8,    3,      "n16" },
+       { 9,    3,      "n18" },
+       { 10,   3,      "n20" },
+       { 11,   3,      "n22" },
+       { 12,   3,      "n24" },
+       { 13,   3,      "n26" },
+       { 14,   3,      "n28" },
+       { 15,   3,      "n30" },
+       { 16,   3,      "n32" },
+       { 17,   3,      "n34" },
+       { 18,   3,      "n36" },
+       { 19,   3,      "n38" },
+       { 20,   3,      "n40" },
+       { 21,   3,      "n42" },
+       { 22,   3,      "n44" },
+       { 23,   3,      "n46" },
+       { 24,   3,      "n48" },
+       { 25,   3,      "n50" },
+       { 26,   3,      "n52" },
+       { 27,   3,      "n54" },
+       { 28,   3,      "n56" },
+       { 29,   3,      "n58" },
+       { 30,   3,      "n60" },
+       { 31,   3,      "n62" },
+       { 32,   3,      "n64" }
+};
+static const unsigned int asn_MAP_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_enum2value_46[] = {
+       5,      /* n10(5) */
+       6,      /* n12(6) */
+       7,      /* n14(7) */
+       8,      /* n16(8) */
+       9,      /* n18(9) */
+       10,     /* n20(10) */
+       11,     /* n22(11) */
+       12,     /* n24(12) */
+       13,     /* n26(13) */
+       14,     /* n28(14) */
+       15,     /* n30(15) */
+       16,     /* n32(16) */
+       17,     /* n34(17) */
+       18,     /* n36(18) */
+       19,     /* n38(19) */
+       20,     /* n40(20) */
+       21,     /* n42(21) */
+       22,     /* n44(22) */
+       23,     /* n46(23) */
+       24,     /* n48(24) */
+       0,      /* n5(0) */
+       25,     /* n50(25) */
+       26,     /* n52(26) */
+       27,     /* n54(27) */
+       28,     /* n56(28) */
+       29,     /* n58(29) */
+       1,      /* n6(1) */
+       30,     /* n60(30) */
+       31,     /* n62(31) */
+       32,     /* n64(32) */
+       2,      /* n7(2) */
+       3,      /* n8(3) */
+       4       /* n9(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_specs_46 = {
+       asn_MAP_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_value2enum_46, /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_enum2value_46, /* N => "tag"; sorted by N */
+       33,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46[] = {
+       (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_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_46 = {
+       "maxNumberSimultaneousCSI-RS-ActBWP-AllCC",
+       "maxNumberSimultaneousCSI-RS-ActBWP-AllCC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46,
+       sizeof(asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46)
+               /sizeof(asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46[0]) - 1, /* 1 */
+       asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46,       /* Same as above */
+       sizeof(asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46)
+               /sizeof(asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_tags_46[0]), /* 2 */
+       { &asn_OER_type_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_constr_46, &asn_PER_type_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_constr_46, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_specs_46      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_value2enum_80[] = {
+       { 0,    2,      "p8" },
+       { 1,    3,      "p12" },
+       { 2,    3,      "p16" },
+       { 3,    3,      "p24" },
+       { 4,    3,      "p32" },
+       { 5,    3,      "p40" },
+       { 6,    3,      "p48" },
+       { 7,    3,      "p56" },
+       { 8,    3,      "p64" },
+       { 9,    3,      "p72" },
+       { 10,   3,      "p80" },
+       { 11,   3,      "p88" },
+       { 12,   3,      "p96" },
+       { 13,   4,      "p104" },
+       { 14,   4,      "p112" },
+       { 15,   4,      "p120" },
+       { 16,   4,      "p128" },
+       { 17,   4,      "p136" },
+       { 18,   4,      "p144" },
+       { 19,   4,      "p152" },
+       { 20,   4,      "p160" },
+       { 21,   4,      "p168" },
+       { 22,   4,      "p176" },
+       { 23,   4,      "p184" },
+       { 24,   4,      "p192" },
+       { 25,   4,      "p200" },
+       { 26,   4,      "p208" },
+       { 27,   4,      "p216" },
+       { 28,   4,      "p224" },
+       { 29,   4,      "p232" },
+       { 30,   4,      "p240" },
+       { 31,   4,      "p248" },
+       { 32,   4,      "p256" }
+};
+static const unsigned int asn_MAP_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_enum2value_80[] = {
+       13,     /* p104(13) */
+       14,     /* p112(14) */
+       1,      /* p12(1) */
+       15,     /* p120(15) */
+       16,     /* p128(16) */
+       17,     /* p136(17) */
+       18,     /* p144(18) */
+       19,     /* p152(19) */
+       2,      /* p16(2) */
+       20,     /* p160(20) */
+       21,     /* p168(21) */
+       22,     /* p176(22) */
+       23,     /* p184(23) */
+       24,     /* p192(24) */
+       25,     /* p200(25) */
+       26,     /* p208(26) */
+       27,     /* p216(27) */
+       28,     /* p224(28) */
+       29,     /* p232(29) */
+       3,      /* p24(3) */
+       30,     /* p240(30) */
+       31,     /* p248(31) */
+       32,     /* p256(32) */
+       4,      /* p32(4) */
+       5,      /* p40(5) */
+       6,      /* p48(6) */
+       7,      /* p56(7) */
+       8,      /* p64(8) */
+       9,      /* p72(9) */
+       0,      /* p8(0) */
+       10,     /* p80(10) */
+       11,     /* p88(11) */
+       12      /* p96(12) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_specs_80 = {
+       asn_MAP_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_value2enum_80,  /* "tag" => N; sorted by tag */
+       asn_MAP_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_enum2value_80,  /* N => "tag"; sorted by N */
+       33,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80[] = {
+       (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_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_80 = {
+       "totalNumberPortsSimultaneousCSI-RS-ActBWP-AllCC",
+       "totalNumberPortsSimultaneousCSI-RS-ActBWP-AllCC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80,
+       sizeof(asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80)
+               /sizeof(asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80[0]) - 1, /* 1 */
+       asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80,        /* Same as above */
+       sizeof(asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80)
+               /sizeof(asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_tags_80[0]), /* 2 */
+       { &asn_OER_type_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_constr_80, &asn_PER_type_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_constr_80, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_specs_80       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_RS_IM_ReceptionForFeedback_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_IM_ReceptionForFeedback, maxNumberNZP_CSI_RS_PerCC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberNZP_CSI_RS_PerCC_constr_2, &asn_PER_memb_maxNumberNZP_CSI_RS_PerCC_constr_2,  memb_maxNumberNZP_CSI_RS_PerCC_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberNZP-CSI-RS-PerCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_IM_ReceptionForFeedback, maxNumberPortsAcrossNZP_CSI_RS_PerCC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberPortsAcrossNZP-CSI-RS-PerCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_IM_ReceptionForFeedback, maxNumberCS_IM_PerCC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberCS_IM_PerCC_39,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberCS-IM-PerCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_IM_ReceptionForFeedback, maxNumberSimultaneousCSI_RS_ActBWP_AllCC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberSimultaneousCSI-RS-ActBWP-AllCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_IM_ReceptionForFeedback, totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_80,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "totalNumberPortsSimultaneousCSI-RS-ActBWP-AllCC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_IM_ReceptionForFeedback_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberNZP-CSI-RS-PerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberPortsAcrossNZP-CSI-RS-PerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxNumberCS-IM-PerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxNumberSimultaneousCSI-RS-ActBWP-AllCC */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* totalNumberPortsSimultaneousCSI-RS-ActBWP-AllCC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_IM_ReceptionForFeedback_specs_1 = {
+       sizeof(struct CSI_RS_IM_ReceptionForFeedback),
+       offsetof(struct CSI_RS_IM_ReceptionForFeedback, _asn_ctx),
+       asn_MAP_CSI_RS_IM_ReceptionForFeedback_tag2el_1,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_IM_ReceptionForFeedback = {
+       "CSI-RS-IM-ReceptionForFeedback",
+       "CSI-RS-IM-ReceptionForFeedback",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1,
+       sizeof(asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1)
+               /sizeof(asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1)
+               /sizeof(asn_DEF_CSI_RS_IM_ReceptionForFeedback_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_IM_ReceptionForFeedback_1,
+       5,      /* Elements count */
+       &asn_SPC_CSI_RS_IM_ReceptionForFeedback_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.h b/src/codec_utils/RRC/CSI-RS-IM-ReceptionForFeedback.h
new file mode 100644 (file)
index 0000000..59f2da3
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_IM_ReceptionForFeedback_H_
+#define        _CSI_RS_IM_ReceptionForFeedback_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC {
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p2 = 0,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p4 = 1,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p8 = 2,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p12        = 3,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p16        = 4,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p24        = 5,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p32        = 6,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p40        = 7,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p48        = 8,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p56        = 9,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p64        = 10,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p72        = 11,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p80        = 12,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p88        = 13,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p96        = 14,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p104       = 15,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p112       = 16,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p120       = 17,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p128       = 18,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p136       = 19,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p144       = 20,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p152       = 21,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p160       = 22,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p168       = 23,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p176       = 24,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p184       = 25,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p192       = 26,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p200       = 27,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p208       = 28,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p216       = 29,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p224       = 30,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p232       = 31,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p240       = 32,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p248       = 33,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC_p256       = 34
+} e_CSI_RS_IM_ReceptionForFeedback__maxNumberPortsAcrossNZP_CSI_RS_PerCC;
+typedef enum CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC {
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n1 = 0,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n2 = 1,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n4 = 2,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n8 = 3,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n16        = 4,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC_n32        = 5
+} e_CSI_RS_IM_ReceptionForFeedback__maxNumberCS_IM_PerCC;
+typedef enum CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC {
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n5     = 0,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n6     = 1,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n7     = 2,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n8     = 3,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n9     = 4,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n10    = 5,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n12    = 6,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n14    = 7,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n16    = 8,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n18    = 9,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n20    = 10,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n22    = 11,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n24    = 12,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n26    = 13,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n28    = 14,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n30    = 15,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n32    = 16,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n34    = 17,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n36    = 18,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n38    = 19,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n40    = 20,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n42    = 21,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n44    = 22,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n46    = 23,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n48    = 24,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n50    = 25,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n52    = 26,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n54    = 27,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n56    = 28,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n58    = 29,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n60    = 30,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n62    = 31,
+       CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC_n64    = 32
+} e_CSI_RS_IM_ReceptionForFeedback__maxNumberSimultaneousCSI_RS_ActBWP_AllCC;
+typedef enum CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC {
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p8      = 0,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p12     = 1,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p16     = 2,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p24     = 3,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p32     = 4,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p40     = 5,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p48     = 6,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p56     = 7,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p64     = 8,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p72     = 9,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p80     = 10,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p88     = 11,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p96     = 12,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p104    = 13,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p112    = 14,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p120    = 15,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p128    = 16,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p136    = 17,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p144    = 18,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p152    = 19,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p160    = 20,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p168    = 21,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p176    = 22,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p184    = 23,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p192    = 24,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p200    = 25,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p208    = 26,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p216    = 27,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p224    = 28,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p232    = 29,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p240    = 30,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p248    = 31,
+       CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_p256    = 32
+} e_CSI_RS_IM_ReceptionForFeedback__totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC;
+
+/* CSI-RS-IM-ReceptionForFeedback */
+typedef struct CSI_RS_IM_ReceptionForFeedback {
+       long     maxNumberNZP_CSI_RS_PerCC;
+       long     maxNumberPortsAcrossNZP_CSI_RS_PerCC;
+       long     maxNumberCS_IM_PerCC;
+       long     maxNumberSimultaneousCSI_RS_ActBWP_AllCC;
+       long     totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_IM_ReceptionForFeedback_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberPortsAcrossNZP_CSI_RS_PerCC_3;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberCS_IM_PerCC_39;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberSimultaneousCSI_RS_ActBWP_AllCC_46;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_totalNumberPortsSimultaneousCSI_RS_ActBWP_AllCC_80;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_IM_ReceptionForFeedback;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_IM_ReceptionForFeedback_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_IM_ReceptionForFeedback_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_IM_ReceptionForFeedback_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-Index.c b/src/codec_utils/RRC/CSI-RS-Index.c
new file mode 100644 (file)
index 0000000..3febf08
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-Index.h"
+
+int
+CSI_RS_Index_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 <= 95)) {
+               /* 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_CSI_RS_Index_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..95) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_RS_Index_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  95 }       /* (0..95) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CSI_RS_Index_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_Index = {
+       "CSI-RS-Index",
+       "CSI-RS-Index",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_RS_Index_tags_1,
+       sizeof(asn_DEF_CSI_RS_Index_tags_1)
+               /sizeof(asn_DEF_CSI_RS_Index_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_Index_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CSI_RS_Index_tags_1)
+               /sizeof(asn_DEF_CSI_RS_Index_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_RS_Index_constr_1, &asn_PER_type_CSI_RS_Index_constr_1, CSI_RS_Index_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-Index.h b/src/codec_utils/RRC/CSI-RS-Index.h
new file mode 100644 (file)
index 0000000..614da84
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_Index_H_
+#define        _CSI_RS_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-RS-Index */
+typedef long    CSI_RS_Index_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_RS_Index_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_Index;
+asn_struct_free_f CSI_RS_Index_free;
+asn_struct_print_f CSI_RS_Index_print;
+asn_constr_check_f CSI_RS_Index_constraint;
+ber_type_decoder_f CSI_RS_Index_decode_ber;
+der_type_encoder_f CSI_RS_Index_encode_der;
+xer_type_decoder_f CSI_RS_Index_decode_xer;
+xer_type_encoder_f CSI_RS_Index_encode_xer;
+oer_type_decoder_f CSI_RS_Index_decode_oer;
+oer_type_encoder_f CSI_RS_Index_encode_oer;
+per_type_decoder_f CSI_RS_Index_decode_uper;
+per_type_encoder_f CSI_RS_Index_encode_uper;
+per_type_decoder_f CSI_RS_Index_decode_aper;
+per_type_encoder_f CSI_RS_Index_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_Index_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-Resource-Mobility.c b/src/codec_utils/RRC/CSI-RS-Resource-Mobility.c
new file mode 100644 (file)
index 0000000..6a7ee81
--- /dev/null
@@ -0,0 +1,608 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-Resource-Mobility.h"
+
+static int
+memb_ms4_constraint_3(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 <= 31)) {
+               /* 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_ms5_constraint_3(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 <= 39)) {
+               /* 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_ms10_constraint_3(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 <= 79)) {
+               /* 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_ms20_constraint_3(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 <= 159)) {
+               /* 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_ms40_constraint_3(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 <= 319)) {
+               /* 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_row1_constraint_12(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 == 4)) {
+               /* 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_row2_constraint_12(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 == 12)) {
+               /* 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_firstOFDMSymbolInTimeDomain_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 >= 0 && value <= 13)) {
+               /* 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_sequenceGenerationConfig_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 >= 0 && value <= 1023)) {
+               /* 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_ms4_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms4_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms5_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms5_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms10_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms10_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms20_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms20_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms40_constr_8 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms40_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_slotConfig_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_slotConfig_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_row1_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_row1_constr_13 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_row2_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       12      /* (SIZE(12..12)) */};
+static asn_per_constraints_t asn_PER_memb_row2_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  12,  12 }      /* (SIZE(12..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyDomainAllocation_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyDomainAllocation_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_firstOFDMSymbolInTimeDomain_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_firstOFDMSymbolInTimeDomain_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sequenceGenerationConfig_constr_16 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sequenceGenerationConfig_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_slotConfig_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__slotConfig, choice.ms4),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms4_constr_4, &asn_PER_memb_ms4_constr_4,  memb_ms4_constraint_3 },
+               0, 0, /* No default value */
+               "ms4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__slotConfig, choice.ms5),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms5_constr_5, &asn_PER_memb_ms5_constr_5,  memb_ms5_constraint_3 },
+               0, 0, /* No default value */
+               "ms5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__slotConfig, choice.ms10),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms10_constr_6, &asn_PER_memb_ms10_constr_6,  memb_ms10_constraint_3 },
+               0, 0, /* No default value */
+               "ms10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__slotConfig, choice.ms20),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms20_constr_7, &asn_PER_memb_ms20_constr_7,  memb_ms20_constraint_3 },
+               0, 0, /* No default value */
+               "ms20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__slotConfig, choice.ms40),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms40_constr_8, &asn_PER_memb_ms40_constr_8,  memb_ms40_constraint_3 },
+               0, 0, /* No default value */
+               "ms40"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_slotConfig_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ms4 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ms5 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ms10 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ms20 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ms40 */
+};
+static asn_CHOICE_specifics_t asn_SPC_slotConfig_specs_3 = {
+       sizeof(struct CSI_RS_Resource_Mobility__slotConfig),
+       offsetof(struct CSI_RS_Resource_Mobility__slotConfig, _asn_ctx),
+       offsetof(struct CSI_RS_Resource_Mobility__slotConfig, present),
+       sizeof(((struct CSI_RS_Resource_Mobility__slotConfig *)0)->present),
+       asn_MAP_slotConfig_tag2el_3,
+       5,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotConfig_3 = {
+       "slotConfig",
+       "slotConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_slotConfig_constr_3, &asn_PER_type_slotConfig_constr_3, CHOICE_constraint },
+       asn_MBR_slotConfig_3,
+       5,      /* Elements count */
+       &asn_SPC_slotConfig_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_associatedSSB_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__associatedSSB, ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__associatedSSB, isQuasiColocated),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "isQuasiColocated"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_associatedSSB_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_associatedSSB_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* isQuasiColocated */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_associatedSSB_specs_9 = {
+       sizeof(struct CSI_RS_Resource_Mobility__associatedSSB),
+       offsetof(struct CSI_RS_Resource_Mobility__associatedSSB, _asn_ctx),
+       asn_MAP_associatedSSB_tag2el_9,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_associatedSSB_9 = {
+       "associatedSSB",
+       "associatedSSB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_associatedSSB_tags_9,
+       sizeof(asn_DEF_associatedSSB_tags_9)
+               /sizeof(asn_DEF_associatedSSB_tags_9[0]) - 1, /* 1 */
+       asn_DEF_associatedSSB_tags_9,   /* Same as above */
+       sizeof(asn_DEF_associatedSSB_tags_9)
+               /sizeof(asn_DEF_associatedSSB_tags_9[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_associatedSSB_9,
+       2,      /* Elements count */
+       &asn_SPC_associatedSSB_specs_9  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_frequencyDomainAllocation_12[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__frequencyDomainAllocation, choice.row1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_row1_constr_13, &asn_PER_memb_row1_constr_13,  memb_row1_constraint_12 },
+               0, 0, /* No default value */
+               "row1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility__frequencyDomainAllocation, choice.row2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_row2_constr_14, &asn_PER_memb_row2_constr_14,  memb_row2_constraint_12 },
+               0, 0, /* No default value */
+               "row2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_frequencyDomainAllocation_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* row1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* row2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_frequencyDomainAllocation_specs_12 = {
+       sizeof(struct CSI_RS_Resource_Mobility__frequencyDomainAllocation),
+       offsetof(struct CSI_RS_Resource_Mobility__frequencyDomainAllocation, _asn_ctx),
+       offsetof(struct CSI_RS_Resource_Mobility__frequencyDomainAllocation, present),
+       sizeof(((struct CSI_RS_Resource_Mobility__frequencyDomainAllocation *)0)->present),
+       asn_MAP_frequencyDomainAllocation_tag2el_12,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyDomainAllocation_12 = {
+       "frequencyDomainAllocation",
+       "frequencyDomainAllocation",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_frequencyDomainAllocation_constr_12, &asn_PER_type_frequencyDomainAllocation_constr_12, CHOICE_constraint },
+       asn_MBR_frequencyDomainAllocation_12,
+       2,      /* Elements count */
+       &asn_SPC_frequencyDomainAllocation_specs_12     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_RS_Resource_Mobility_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility, csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility, slotConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_slotConfig_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "slotConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_RS_Resource_Mobility, associatedSSB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_associatedSSB_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "associatedSSB"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility, frequencyDomainAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_frequencyDomainAllocation_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyDomainAllocation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility, firstOFDMSymbolInTimeDomain),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_firstOFDMSymbolInTimeDomain_constr_15, &asn_PER_memb_firstOFDMSymbolInTimeDomain_constr_15,  memb_firstOFDMSymbolInTimeDomain_constraint_1 },
+               0, 0, /* No default value */
+               "firstOFDMSymbolInTimeDomain"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_Resource_Mobility, sequenceGenerationConfig),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sequenceGenerationConfig_constr_16, &asn_PER_memb_sequenceGenerationConfig_constr_16,  memb_sequenceGenerationConfig_constraint_1 },
+               0, 0, /* No default value */
+               "sequenceGenerationConfig"
+               },
+};
+static const int asn_MAP_CSI_RS_Resource_Mobility_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CSI_RS_Resource_Mobility_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_Resource_Mobility_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* slotConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* associatedSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* frequencyDomainAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* firstOFDMSymbolInTimeDomain */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* sequenceGenerationConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_Resource_Mobility_specs_1 = {
+       sizeof(struct CSI_RS_Resource_Mobility),
+       offsetof(struct CSI_RS_Resource_Mobility, _asn_ctx),
+       asn_MAP_CSI_RS_Resource_Mobility_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_CSI_RS_Resource_Mobility_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_Resource_Mobility = {
+       "CSI-RS-Resource-Mobility",
+       "CSI-RS-Resource-Mobility",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_Resource_Mobility_tags_1,
+       sizeof(asn_DEF_CSI_RS_Resource_Mobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_Resource_Mobility_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_Resource_Mobility_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CSI_RS_Resource_Mobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_Resource_Mobility_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_Resource_Mobility_1,
+       6,      /* Elements count */
+       &asn_SPC_CSI_RS_Resource_Mobility_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-Resource-Mobility.h b/src/codec_utils/RRC/CSI-RS-Resource-Mobility.h
new file mode 100644 (file)
index 0000000..777e24e
--- /dev/null
@@ -0,0 +1,96 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_Resource_Mobility_H_
+#define        _CSI_RS_Resource_Mobility_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-RS-Index.h"
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include "SSB-Index.h"
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_RS_Resource_Mobility__slotConfig_PR {
+       CSI_RS_Resource_Mobility__slotConfig_PR_NOTHING,        /* No components present */
+       CSI_RS_Resource_Mobility__slotConfig_PR_ms4,
+       CSI_RS_Resource_Mobility__slotConfig_PR_ms5,
+       CSI_RS_Resource_Mobility__slotConfig_PR_ms10,
+       CSI_RS_Resource_Mobility__slotConfig_PR_ms20,
+       CSI_RS_Resource_Mobility__slotConfig_PR_ms40
+} CSI_RS_Resource_Mobility__slotConfig_PR;
+typedef enum CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR {
+       CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR_NOTHING, /* No components present */
+       CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR_row1,
+       CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR_row2
+} CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR;
+
+/* CSI-RS-Resource-Mobility */
+typedef struct CSI_RS_Resource_Mobility {
+       CSI_RS_Index_t   csi_RS_Index;
+       struct CSI_RS_Resource_Mobility__slotConfig {
+               CSI_RS_Resource_Mobility__slotConfig_PR present;
+               union CSI_RS_Resource_Mobility__slotConfig_u {
+                       long     ms4;
+                       long     ms5;
+                       long     ms10;
+                       long     ms20;
+                       long     ms40;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } slotConfig;
+       struct CSI_RS_Resource_Mobility__associatedSSB {
+               SSB_Index_t      ssb_Index;
+               BOOLEAN_t        isQuasiColocated;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *associatedSSB;
+       struct CSI_RS_Resource_Mobility__frequencyDomainAllocation {
+               CSI_RS_Resource_Mobility__frequencyDomainAllocation_PR present;
+               union CSI_RS_Resource_Mobility__frequencyDomainAllocation_u {
+                       BIT_STRING_t     row1;
+                       BIT_STRING_t     row2;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } frequencyDomainAllocation;
+       long     firstOFDMSymbolInTimeDomain;
+       long     sequenceGenerationConfig;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_Resource_Mobility_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_Resource_Mobility;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_Resource_Mobility_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_Resource_Mobility_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_Resource_Mobility_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.c b/src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.c
new file mode 100644 (file)
index 0000000..dd0c8f3
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-ResourceConfigMobility.h"
+
+#include "CSI-RS-CellMobility.h"
+static int
+memb_csi_RS_CellList_Mobility_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 <= 96)) {
+               /* 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_csi_RS_CellList_Mobility_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_type_csi_RS_CellList_Mobility_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_RS_CellList_Mobility_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..96)) */};
+static asn_per_constraints_t asn_PER_memb_csi_RS_CellList_Mobility_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  96 }       /* (SIZE(1..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_csi_RS_CellList_Mobility_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_RS_CellMobility,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_RS_CellList_Mobility_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_RS_CellList_Mobility_specs_3 = {
+       sizeof(struct CSI_RS_ResourceConfigMobility__csi_RS_CellList_Mobility),
+       offsetof(struct CSI_RS_ResourceConfigMobility__csi_RS_CellList_Mobility, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_RS_CellList_Mobility_3 = {
+       "csi-RS-CellList-Mobility",
+       "csi-RS-CellList-Mobility",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_RS_CellList_Mobility_tags_3,
+       sizeof(asn_DEF_csi_RS_CellList_Mobility_tags_3)
+               /sizeof(asn_DEF_csi_RS_CellList_Mobility_tags_3[0]) - 1, /* 1 */
+       asn_DEF_csi_RS_CellList_Mobility_tags_3,        /* Same as above */
+       sizeof(asn_DEF_csi_RS_CellList_Mobility_tags_3)
+               /sizeof(asn_DEF_csi_RS_CellList_Mobility_tags_3[0]), /* 2 */
+       { &asn_OER_type_csi_RS_CellList_Mobility_constr_3, &asn_PER_type_csi_RS_CellList_Mobility_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_csi_RS_CellList_Mobility_3,
+       1,      /* Single element */
+       &asn_SPC_csi_RS_CellList_Mobility_specs_3       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_6[] = {
+       { ATF_POINTER, 1, offsetof(struct CSI_RS_ResourceConfigMobility__ext1, refServCellIndex_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "refServCellIndex-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_6[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* refServCellIndex-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
+       sizeof(struct CSI_RS_ResourceConfigMobility__ext1),
+       offsetof(struct CSI_RS_ResourceConfigMobility__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_6,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_6,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_6,
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_6,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_6,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_RS_ResourceConfigMobility_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceConfigMobility, subcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceConfigMobility, csi_RS_CellList_Mobility),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_RS_CellList_Mobility_3,
+               0,
+               { &asn_OER_memb_csi_RS_CellList_Mobility_constr_3, &asn_PER_memb_csi_RS_CellList_Mobility_constr_3,  memb_csi_RS_CellList_Mobility_constraint_1 },
+               0, 0, /* No default value */
+               "csi-RS-CellList-Mobility"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_RS_ResourceConfigMobility, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_CSI_RS_ResourceConfigMobility_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CSI_RS_ResourceConfigMobility_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_ResourceConfigMobility_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RS-CellList-Mobility */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ResourceConfigMobility_specs_1 = {
+       sizeof(struct CSI_RS_ResourceConfigMobility),
+       offsetof(struct CSI_RS_ResourceConfigMobility, _asn_ctx),
+       asn_MAP_CSI_RS_ResourceConfigMobility_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CSI_RS_ResourceConfigMobility_oms_1,    /* Optional members */
+       0, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_ResourceConfigMobility = {
+       "CSI-RS-ResourceConfigMobility",
+       "CSI-RS-ResourceConfigMobility",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_ResourceConfigMobility_tags_1,
+       sizeof(asn_DEF_CSI_RS_ResourceConfigMobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ResourceConfigMobility_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_ResourceConfigMobility_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CSI_RS_ResourceConfigMobility_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ResourceConfigMobility_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_ResourceConfigMobility_1,
+       3,      /* Elements count */
+       &asn_SPC_CSI_RS_ResourceConfigMobility_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.h b/src/codec_utils/RRC/CSI-RS-ResourceConfigMobility.h
new file mode 100644 (file)
index 0000000..8ee80be
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_ResourceConfigMobility_H_
+#define        _CSI_RS_ResourceConfigMobility_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SubcarrierSpacing.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "ServCellIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CSI_RS_CellMobility;
+
+/* CSI-RS-ResourceConfigMobility */
+typedef struct CSI_RS_ResourceConfigMobility {
+       SubcarrierSpacing_t      subcarrierSpacing;
+       struct CSI_RS_ResourceConfigMobility__csi_RS_CellList_Mobility {
+               A_SEQUENCE_OF(struct CSI_RS_CellMobility) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_RS_CellList_Mobility;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct CSI_RS_ResourceConfigMobility__ext1 {
+               ServCellIndex_t *refServCellIndex_v1530;        /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_ResourceConfigMobility_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_ResourceConfigMobility;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ResourceConfigMobility_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_ResourceConfigMobility_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_ResourceConfigMobility_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-RS-ResourceMapping.c b/src/codec_utils/RRC/CSI-RS-ResourceMapping.c
new file mode 100644 (file)
index 0000000..5590364
--- /dev/null
@@ -0,0 +1,651 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-RS-ResourceMapping.h"
+
+static int
+memb_row1_constraint_2(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 == 4)) {
+               /* 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_row2_constraint_2(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 == 12)) {
+               /* 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_row4_constraint_2(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 == 3)) {
+               /* 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_other_constraint_2(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 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_firstOFDMSymbolInTimeDomain_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 >= 0 && value <= 13)) {
+               /* 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_firstOFDMSymbolInTimeDomain2_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 >= 2 && value <= 12)) {
+               /* 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_row1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_row1_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_row2_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       12      /* (SIZE(12..12)) */};
+static asn_per_constraints_t asn_PER_memb_row2_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  12,  12 }      /* (SIZE(12..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_row4_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_row4_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_other_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_other_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyDomainAllocation_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyDomainAllocation_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nrofPorts_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofPorts_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cdm_Type_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cdm_Type_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dot5_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dot5_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_density_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_density_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_firstOFDMSymbolInTimeDomain_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_firstOFDMSymbolInTimeDomain_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_firstOFDMSymbolInTimeDomain2_constr_17 CC_NOTUSED = {
+       { 1, 1 }        /* (2..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_firstOFDMSymbolInTimeDomain2_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  2,  12 }       /* (2..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_frequencyDomainAllocation_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, choice.row1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_row1_constr_3, &asn_PER_memb_row1_constr_3,  memb_row1_constraint_2 },
+               0, 0, /* No default value */
+               "row1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, choice.row2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_row2_constr_4, &asn_PER_memb_row2_constr_4,  memb_row2_constraint_2 },
+               0, 0, /* No default value */
+               "row2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, choice.row4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_row4_constr_5, &asn_PER_memb_row4_constr_5,  memb_row4_constraint_2 },
+               0, 0, /* No default value */
+               "row4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, choice.other),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_other_constr_6, &asn_PER_memb_other_constr_6,  memb_other_constraint_2 },
+               0, 0, /* No default value */
+               "other"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_frequencyDomainAllocation_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* row1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* row2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* row4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* other */
+};
+static asn_CHOICE_specifics_t asn_SPC_frequencyDomainAllocation_specs_2 = {
+       sizeof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation),
+       offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, _asn_ctx),
+       offsetof(struct CSI_RS_ResourceMapping__frequencyDomainAllocation, present),
+       sizeof(((struct CSI_RS_ResourceMapping__frequencyDomainAllocation *)0)->present),
+       asn_MAP_frequencyDomainAllocation_tag2el_2,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyDomainAllocation_2 = {
+       "frequencyDomainAllocation",
+       "frequencyDomainAllocation",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_frequencyDomainAllocation_constr_2, &asn_PER_type_frequencyDomainAllocation_constr_2, CHOICE_constraint },
+       asn_MBR_frequencyDomainAllocation_2,
+       4,      /* Elements count */
+       &asn_SPC_frequencyDomainAllocation_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofPorts_value2enum_7[] = {
+       { 0,    2,      "p1" },
+       { 1,    2,      "p2" },
+       { 2,    2,      "p4" },
+       { 3,    2,      "p8" },
+       { 4,    3,      "p12" },
+       { 5,    3,      "p16" },
+       { 6,    3,      "p24" },
+       { 7,    3,      "p32" }
+};
+static const unsigned int asn_MAP_nrofPorts_enum2value_7[] = {
+       0,      /* p1(0) */
+       4,      /* p12(4) */
+       5,      /* p16(5) */
+       1,      /* p2(1) */
+       6,      /* p24(6) */
+       7,      /* p32(7) */
+       2,      /* p4(2) */
+       3       /* p8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofPorts_specs_7 = {
+       asn_MAP_nrofPorts_value2enum_7, /* "tag" => N; sorted by tag */
+       asn_MAP_nrofPorts_enum2value_7, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofPorts_tags_7[] = {
+       (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_nrofPorts_7 = {
+       "nrofPorts",
+       "nrofPorts",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofPorts_tags_7,
+       sizeof(asn_DEF_nrofPorts_tags_7)
+               /sizeof(asn_DEF_nrofPorts_tags_7[0]) - 1, /* 1 */
+       asn_DEF_nrofPorts_tags_7,       /* Same as above */
+       sizeof(asn_DEF_nrofPorts_tags_7)
+               /sizeof(asn_DEF_nrofPorts_tags_7[0]), /* 2 */
+       { &asn_OER_type_nrofPorts_constr_7, &asn_PER_type_nrofPorts_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofPorts_specs_7      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cdm_Type_value2enum_18[] = {
+       { 0,    5,      "noCDM" },
+       { 1,    7,      "fd-CDM2" },
+       { 2,    12,     "cdm4-FD2-TD2" },
+       { 3,    12,     "cdm8-FD2-TD4" }
+};
+static const unsigned int asn_MAP_cdm_Type_enum2value_18[] = {
+       2,      /* cdm4-FD2-TD2(2) */
+       3,      /* cdm8-FD2-TD4(3) */
+       1,      /* fd-CDM2(1) */
+       0       /* noCDM(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cdm_Type_specs_18 = {
+       asn_MAP_cdm_Type_value2enum_18, /* "tag" => N; sorted by tag */
+       asn_MAP_cdm_Type_enum2value_18, /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cdm_Type_tags_18[] = {
+       (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_cdm_Type_18 = {
+       "cdm-Type",
+       "cdm-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cdm_Type_tags_18,
+       sizeof(asn_DEF_cdm_Type_tags_18)
+               /sizeof(asn_DEF_cdm_Type_tags_18[0]) - 1, /* 1 */
+       asn_DEF_cdm_Type_tags_18,       /* Same as above */
+       sizeof(asn_DEF_cdm_Type_tags_18)
+               /sizeof(asn_DEF_cdm_Type_tags_18[0]), /* 2 */
+       { &asn_OER_type_cdm_Type_constr_18, &asn_PER_type_cdm_Type_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cdm_Type_specs_18      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dot5_value2enum_24[] = {
+       { 0,    8,      "evenPRBs" },
+       { 1,    7,      "oddPRBs" }
+};
+static const unsigned int asn_MAP_dot5_enum2value_24[] = {
+       0,      /* evenPRBs(0) */
+       1       /* oddPRBs(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dot5_specs_24 = {
+       asn_MAP_dot5_value2enum_24,     /* "tag" => N; sorted by tag */
+       asn_MAP_dot5_enum2value_24,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dot5_tags_24[] = {
+       (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_dot5_24 = {
+       "dot5",
+       "dot5",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dot5_tags_24,
+       sizeof(asn_DEF_dot5_tags_24)
+               /sizeof(asn_DEF_dot5_tags_24[0]) - 1, /* 1 */
+       asn_DEF_dot5_tags_24,   /* Same as above */
+       sizeof(asn_DEF_dot5_tags_24)
+               /sizeof(asn_DEF_dot5_tags_24[0]), /* 2 */
+       { &asn_OER_type_dot5_constr_24, &asn_PER_type_dot5_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dot5_specs_24  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_density_23[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__density, choice.dot5),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dot5_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dot5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__density, choice.one),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__density, choice.three),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "three"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping__density, choice.spare),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_density_tag2el_23[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dot5 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* one */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* three */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare */
+};
+static asn_CHOICE_specifics_t asn_SPC_density_specs_23 = {
+       sizeof(struct CSI_RS_ResourceMapping__density),
+       offsetof(struct CSI_RS_ResourceMapping__density, _asn_ctx),
+       offsetof(struct CSI_RS_ResourceMapping__density, present),
+       sizeof(((struct CSI_RS_ResourceMapping__density *)0)->present),
+       asn_MAP_density_tag2el_23,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_density_23 = {
+       "density",
+       "density",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_density_constr_23, &asn_PER_type_density_constr_23, CHOICE_constraint },
+       asn_MBR_density_23,
+       4,      /* Elements count */
+       &asn_SPC_density_specs_23       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_RS_ResourceMapping_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, frequencyDomainAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_frequencyDomainAllocation_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyDomainAllocation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, nrofPorts),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofPorts_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, firstOFDMSymbolInTimeDomain),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_firstOFDMSymbolInTimeDomain_constr_16, &asn_PER_memb_firstOFDMSymbolInTimeDomain_constr_16,  memb_firstOFDMSymbolInTimeDomain_constraint_1 },
+               0, 0, /* No default value */
+               "firstOFDMSymbolInTimeDomain"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_RS_ResourceMapping, firstOFDMSymbolInTimeDomain2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_firstOFDMSymbolInTimeDomain2_constr_17, &asn_PER_memb_firstOFDMSymbolInTimeDomain2_constr_17,  memb_firstOFDMSymbolInTimeDomain2_constraint_1 },
+               0, 0, /* No default value */
+               "firstOFDMSymbolInTimeDomain2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, cdm_Type),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cdm_Type_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cdm-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, density),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_density_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "density"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_RS_ResourceMapping, freqBand),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_FrequencyOccupation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBand"
+               },
+};
+static const int asn_MAP_CSI_RS_ResourceMapping_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_CSI_RS_ResourceMapping_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_RS_ResourceMapping_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyDomainAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* firstOFDMSymbolInTimeDomain */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* firstOFDMSymbolInTimeDomain2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* cdm-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* density */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* freqBand */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ResourceMapping_specs_1 = {
+       sizeof(struct CSI_RS_ResourceMapping),
+       offsetof(struct CSI_RS_ResourceMapping, _asn_ctx),
+       asn_MAP_CSI_RS_ResourceMapping_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_CSI_RS_ResourceMapping_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_RS_ResourceMapping = {
+       "CSI-RS-ResourceMapping",
+       "CSI-RS-ResourceMapping",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_RS_ResourceMapping_tags_1,
+       sizeof(asn_DEF_CSI_RS_ResourceMapping_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ResourceMapping_tags_1[0]), /* 1 */
+       asn_DEF_CSI_RS_ResourceMapping_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CSI_RS_ResourceMapping_tags_1)
+               /sizeof(asn_DEF_CSI_RS_ResourceMapping_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_RS_ResourceMapping_1,
+       7,      /* Elements count */
+       &asn_SPC_CSI_RS_ResourceMapping_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-RS-ResourceMapping.h b/src/codec_utils/RRC/CSI-RS-ResourceMapping.h
new file mode 100644 (file)
index 0000000..8b937fb
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_RS_ResourceMapping_H_
+#define        _CSI_RS_ResourceMapping_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include "CSI-FrequencyOccupation.h"
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+#include <NULL.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_RS_ResourceMapping__frequencyDomainAllocation_PR {
+       CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_NOTHING,   /* No components present */
+       CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row1,
+       CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row2,
+       CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_row4,
+       CSI_RS_ResourceMapping__frequencyDomainAllocation_PR_other
+} CSI_RS_ResourceMapping__frequencyDomainAllocation_PR;
+typedef enum CSI_RS_ResourceMapping__nrofPorts {
+       CSI_RS_ResourceMapping__nrofPorts_p1    = 0,
+       CSI_RS_ResourceMapping__nrofPorts_p2    = 1,
+       CSI_RS_ResourceMapping__nrofPorts_p4    = 2,
+       CSI_RS_ResourceMapping__nrofPorts_p8    = 3,
+       CSI_RS_ResourceMapping__nrofPorts_p12   = 4,
+       CSI_RS_ResourceMapping__nrofPorts_p16   = 5,
+       CSI_RS_ResourceMapping__nrofPorts_p24   = 6,
+       CSI_RS_ResourceMapping__nrofPorts_p32   = 7
+} e_CSI_RS_ResourceMapping__nrofPorts;
+typedef enum CSI_RS_ResourceMapping__cdm_Type {
+       CSI_RS_ResourceMapping__cdm_Type_noCDM  = 0,
+       CSI_RS_ResourceMapping__cdm_Type_fd_CDM2        = 1,
+       CSI_RS_ResourceMapping__cdm_Type_cdm4_FD2_TD2   = 2,
+       CSI_RS_ResourceMapping__cdm_Type_cdm8_FD2_TD4   = 3
+} e_CSI_RS_ResourceMapping__cdm_Type;
+typedef enum CSI_RS_ResourceMapping__density_PR {
+       CSI_RS_ResourceMapping__density_PR_NOTHING,     /* No components present */
+       CSI_RS_ResourceMapping__density_PR_dot5,
+       CSI_RS_ResourceMapping__density_PR_one,
+       CSI_RS_ResourceMapping__density_PR_three,
+       CSI_RS_ResourceMapping__density_PR_spare
+} CSI_RS_ResourceMapping__density_PR;
+typedef enum CSI_RS_ResourceMapping__density__dot5 {
+       CSI_RS_ResourceMapping__density__dot5_evenPRBs  = 0,
+       CSI_RS_ResourceMapping__density__dot5_oddPRBs   = 1
+} e_CSI_RS_ResourceMapping__density__dot5;
+
+/* CSI-RS-ResourceMapping */
+typedef struct CSI_RS_ResourceMapping {
+       struct CSI_RS_ResourceMapping__frequencyDomainAllocation {
+               CSI_RS_ResourceMapping__frequencyDomainAllocation_PR present;
+               union CSI_RS_ResourceMapping__frequencyDomainAllocation_u {
+                       BIT_STRING_t     row1;
+                       BIT_STRING_t     row2;
+                       BIT_STRING_t     row4;
+                       BIT_STRING_t     other;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } frequencyDomainAllocation;
+       long     nrofPorts;
+       long     firstOFDMSymbolInTimeDomain;
+       long    *firstOFDMSymbolInTimeDomain2;  /* OPTIONAL */
+       long     cdm_Type;
+       struct CSI_RS_ResourceMapping__density {
+               CSI_RS_ResourceMapping__density_PR present;
+               union CSI_RS_ResourceMapping__density_u {
+                       long     dot5;
+                       NULL_t   one;
+                       NULL_t   three;
+                       NULL_t   spare;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } density;
+       CSI_FrequencyOccupation_t        freqBand;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_RS_ResourceMapping_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofPorts_7;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cdm_Type_18;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dot5_24;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_RS_ResourceMapping;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_RS_ResourceMapping_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_RS_ResourceMapping_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_RS_ResourceMapping_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ReportConfig.c b/src/codec_utils/RRC/CSI-ReportConfig.c
new file mode 100644 (file)
index 0000000..29f741a
--- /dev/null
@@ -0,0 +1,2811 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ReportConfig.h"
+
+#include "CodebookConfig.h"
+#include "PUCCH-CSI-Resource.h"
+#include "PortIndexFor8Ranks.h"
+static int
+memb_pucch_CSI_ResourceList_constraint_8(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 <= 4)) {
+               /* 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_pucch_CSI_ResourceList_constraint_12(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 <= 4)) {
+               /* 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;
+       }
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_NativeInteger_constraint_25(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 <= 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 int
+memb_reportSlotOffsetList_constraint_16(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 <= 16)) {
+               /* 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_NativeInteger_constraint_29(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 <= 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 int
+memb_reportSlotOffsetList_constraint_28(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 <= 16)) {
+               /* 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;
+       }
+}
+
+/*
+ * 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_subbands3_constraint_50(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 == 3)) {
+               /* 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_subbands4_constraint_50(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 == 4)) {
+               /* 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_subbands5_constraint_50(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 == 5)) {
+               /* 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_subbands6_constraint_50(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;
+       }
+}
+
+static int
+memb_subbands7_constraint_50(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 == 7)) {
+               /* 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_subbands8_constraint_50(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;
+       }
+}
+
+static int
+memb_subbands9_constraint_50(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 == 9)) {
+               /* 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_subbands10_constraint_50(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;
+       }
+}
+
+static int
+memb_subbands11_constraint_50(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 == 11)) {
+               /* 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_subbands12_constraint_50(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 == 12)) {
+               /* 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_subbands13_constraint_50(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 == 13)) {
+               /* 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_subbands14_constraint_50(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 == 14)) {
+               /* 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_subbands15_constraint_50(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 == 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_subbands16_constraint_50(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 == 16)) {
+               /* 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_subbands17_constraint_50(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 == 17)) {
+               /* 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_subbands18_constraint_50(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_subbands19_v1530_constraint_50(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 == 19)) {
+               /* 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 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_non_PMI_PortIndication_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 <= 128)) {
+               /* 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_pucch_CSI_ResourceList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_pucch_CSI_ResourceList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pucch_CSI_ResourceList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_pucch_CSI_ResourceList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pucch_CSI_ResourceList_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_pucch_CSI_ResourceList_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pucch_CSI_ResourceList_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_pucch_CSI_ResourceList_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportSlotConfig_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportSlotConfig_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_26 CC_NOTUSED = {
+       { 1, 1 }        /* (0..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportSlotOffsetList_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_reportSlotOffsetList_constr_25 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reportSlotOffsetList_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_reportSlotOffsetList_constr_25 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_30 CC_NOTUSED = {
+       { 1, 1 }        /* (0..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportSlotOffsetList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_reportSlotOffsetList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reportSlotOffsetList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_reportSlotOffsetList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportConfigType_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportConfigType_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pdsch_BundleSizeForCSI_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_BundleSizeForCSI_constr_36 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_reportQuantity_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportQuantity_constr_31 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cqi_FormatIndicator_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cqi_FormatIndicator_constr_44 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pmi_FormatIndicator_constr_47 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pmi_FormatIndicator_constr_47 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_subbands3_constr_51 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_subbands3_constr_51 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands4_constr_52 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_subbands4_constr_52 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands5_constr_53 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_memb_subbands5_constr_53 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands6_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_subbands6_constr_54 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands7_constr_55 CC_NOTUSED = {
+       { 0, 0 },
+       7       /* (SIZE(7..7)) */};
+static asn_per_constraints_t asn_PER_memb_subbands7_constr_55 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  7,  7 }        /* (SIZE(7..7)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands8_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_subbands8_constr_56 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands9_constr_57 CC_NOTUSED = {
+       { 0, 0 },
+       9       /* (SIZE(9..9)) */};
+static asn_per_constraints_t asn_PER_memb_subbands9_constr_57 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  9,  9 }        /* (SIZE(9..9)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands10_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_subbands10_constr_58 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands11_constr_59 CC_NOTUSED = {
+       { 0, 0 },
+       11      /* (SIZE(11..11)) */};
+static asn_per_constraints_t asn_PER_memb_subbands11_constr_59 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  11,  11 }      /* (SIZE(11..11)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands12_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       12      /* (SIZE(12..12)) */};
+static asn_per_constraints_t asn_PER_memb_subbands12_constr_60 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  12,  12 }      /* (SIZE(12..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands13_constr_61 CC_NOTUSED = {
+       { 0, 0 },
+       13      /* (SIZE(13..13)) */};
+static asn_per_constraints_t asn_PER_memb_subbands13_constr_61 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  13,  13 }      /* (SIZE(13..13)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands14_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       14      /* (SIZE(14..14)) */};
+static asn_per_constraints_t asn_PER_memb_subbands14_constr_62 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  14,  14 }      /* (SIZE(14..14)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands15_constr_63 CC_NOTUSED = {
+       { 0, 0 },
+       15      /* (SIZE(15..15)) */};
+static asn_per_constraints_t asn_PER_memb_subbands15_constr_63 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  15,  15 }      /* (SIZE(15..15)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands16_constr_64 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_subbands16_constr_64 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands17_constr_65 CC_NOTUSED = {
+       { 0, 0 },
+       17      /* (SIZE(17..17)) */};
+static asn_per_constraints_t asn_PER_memb_subbands17_constr_65 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  17,  17 }      /* (SIZE(17..17)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subbands18_constr_66 CC_NOTUSED = {
+       { 0, 0 },
+       18      /* (SIZE(18..18)) */};
+static asn_per_constraints_t asn_PER_memb_subbands18_constr_66 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_subbands19_v1530_constr_68 CC_NOTUSED = {
+       { 0, 0 },
+       19      /* (SIZE(19..19)) */};
+static asn_per_constraints_t asn_PER_memb_subbands19_v1530_constr_68 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  19,  19 }      /* (SIZE(19..19)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_ReportingBand_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_ReportingBand_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  15 }   /* (0..15,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_timeRestrictionForChannelMeasurements_constr_69 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_timeRestrictionForChannelMeasurements_constr_69 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_timeRestrictionForInterferenceMeasurements_constr_72 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_timeRestrictionForInterferenceMeasurements_constr_72 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dummy_constr_76 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dummy_constr_76 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nrofReportedRS_constr_82 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofReportedRS_constr_82 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_groupBasedBeamReporting_constr_79 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_groupBasedBeamReporting_constr_79 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cqi_Table_constr_87 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cqi_Table_constr_87 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subbandSize_constr_92 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subbandSize_constr_92 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_non_PMI_PortIndication_constr_95 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_non_PMI_PortIndication_constr_95 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportSlotConfig_v1530_constr_100 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportSlotConfig_v1530_constr_100 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_non_PMI_PortIndication_constr_95 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_non_PMI_PortIndication_constr_95 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_pucch_CSI_ResourceList_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_CSI_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pucch_CSI_ResourceList_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pucch_CSI_ResourceList_specs_10 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__periodic__pucch_CSI_ResourceList),
+       offsetof(struct CSI_ReportConfig__reportConfigType__periodic__pucch_CSI_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_CSI_ResourceList_10 = {
+       "pucch-CSI-ResourceList",
+       "pucch-CSI-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pucch_CSI_ResourceList_tags_10,
+       sizeof(asn_DEF_pucch_CSI_ResourceList_tags_10)
+               /sizeof(asn_DEF_pucch_CSI_ResourceList_tags_10[0]) - 1, /* 1 */
+       asn_DEF_pucch_CSI_ResourceList_tags_10, /* Same as above */
+       sizeof(asn_DEF_pucch_CSI_ResourceList_tags_10)
+               /sizeof(asn_DEF_pucch_CSI_ResourceList_tags_10[0]), /* 2 */
+       { &asn_OER_type_pucch_CSI_ResourceList_constr_10, &asn_PER_type_pucch_CSI_ResourceList_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_pucch_CSI_ResourceList_10,
+       1,      /* Single element */
+       &asn_SPC_pucch_CSI_ResourceList_specs_10        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_periodic_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__periodic, reportSlotConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CSI_ReportPeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportSlotConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__periodic, pucch_CSI_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_pucch_CSI_ResourceList_10,
+               0,
+               { &asn_OER_memb_pucch_CSI_ResourceList_constr_10, &asn_PER_memb_pucch_CSI_ResourceList_constr_10,  memb_pucch_CSI_ResourceList_constraint_8 },
+               0, 0, /* No default value */
+               "pucch-CSI-ResourceList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_periodic_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodic_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportSlotConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pucch-CSI-ResourceList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_periodic_specs_8 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__periodic),
+       offsetof(struct CSI_ReportConfig__reportConfigType__periodic, _asn_ctx),
+       asn_MAP_periodic_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodic_8 = {
+       "periodic",
+       "periodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_periodic_tags_8,
+       sizeof(asn_DEF_periodic_tags_8)
+               /sizeof(asn_DEF_periodic_tags_8[0]) - 1, /* 1 */
+       asn_DEF_periodic_tags_8,        /* Same as above */
+       sizeof(asn_DEF_periodic_tags_8)
+               /sizeof(asn_DEF_periodic_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_periodic_8,
+       2,      /* Elements count */
+       &asn_SPC_periodic_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pucch_CSI_ResourceList_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_CSI_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pucch_CSI_ResourceList_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pucch_CSI_ResourceList_specs_14 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH__pucch_CSI_ResourceList),
+       offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH__pucch_CSI_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_CSI_ResourceList_14 = {
+       "pucch-CSI-ResourceList",
+       "pucch-CSI-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pucch_CSI_ResourceList_tags_14,
+       sizeof(asn_DEF_pucch_CSI_ResourceList_tags_14)
+               /sizeof(asn_DEF_pucch_CSI_ResourceList_tags_14[0]) - 1, /* 1 */
+       asn_DEF_pucch_CSI_ResourceList_tags_14, /* Same as above */
+       sizeof(asn_DEF_pucch_CSI_ResourceList_tags_14)
+               /sizeof(asn_DEF_pucch_CSI_ResourceList_tags_14[0]), /* 2 */
+       { &asn_OER_type_pucch_CSI_ResourceList_constr_14, &asn_PER_type_pucch_CSI_ResourceList_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_pucch_CSI_ResourceList_14,
+       1,      /* Single element */
+       &asn_SPC_pucch_CSI_ResourceList_specs_14        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semiPersistentOnPUCCH_12[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH, reportSlotConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CSI_ReportPeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportSlotConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH, pucch_CSI_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_pucch_CSI_ResourceList_14,
+               0,
+               { &asn_OER_memb_pucch_CSI_ResourceList_constr_14, &asn_PER_memb_pucch_CSI_ResourceList_constr_14,  memb_pucch_CSI_ResourceList_constraint_12 },
+               0, 0, /* No default value */
+               "pucch-CSI-ResourceList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_semiPersistentOnPUCCH_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_semiPersistentOnPUCCH_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportSlotConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pucch-CSI-ResourceList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_semiPersistentOnPUCCH_specs_12 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH),
+       offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH, _asn_ctx),
+       asn_MAP_semiPersistentOnPUCCH_tag2el_12,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semiPersistentOnPUCCH_12 = {
+       "semiPersistentOnPUCCH",
+       "semiPersistentOnPUCCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_semiPersistentOnPUCCH_tags_12,
+       sizeof(asn_DEF_semiPersistentOnPUCCH_tags_12)
+               /sizeof(asn_DEF_semiPersistentOnPUCCH_tags_12[0]) - 1, /* 1 */
+       asn_DEF_semiPersistentOnPUCCH_tags_12,  /* Same as above */
+       sizeof(asn_DEF_semiPersistentOnPUCCH_tags_12)
+               /sizeof(asn_DEF_semiPersistentOnPUCCH_tags_12[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_semiPersistentOnPUCCH_12,
+       2,      /* Elements count */
+       &asn_SPC_semiPersistentOnPUCCH_specs_12 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportSlotConfig_value2enum_17[] = {
+       { 0,    3,      "sl5" },
+       { 1,    4,      "sl10" },
+       { 2,    4,      "sl20" },
+       { 3,    4,      "sl40" },
+       { 4,    4,      "sl80" },
+       { 5,    5,      "sl160" },
+       { 6,    5,      "sl320" }
+};
+static const unsigned int asn_MAP_reportSlotConfig_enum2value_17[] = {
+       1,      /* sl10(1) */
+       5,      /* sl160(5) */
+       2,      /* sl20(2) */
+       6,      /* sl320(6) */
+       3,      /* sl40(3) */
+       0,      /* sl5(0) */
+       4       /* sl80(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportSlotConfig_specs_17 = {
+       asn_MAP_reportSlotConfig_value2enum_17, /* "tag" => N; sorted by tag */
+       asn_MAP_reportSlotConfig_enum2value_17, /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportSlotConfig_tags_17[] = {
+       (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_reportSlotConfig_17 = {
+       "reportSlotConfig",
+       "reportSlotConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportSlotConfig_tags_17,
+       sizeof(asn_DEF_reportSlotConfig_tags_17)
+               /sizeof(asn_DEF_reportSlotConfig_tags_17[0]) - 1, /* 1 */
+       asn_DEF_reportSlotConfig_tags_17,       /* Same as above */
+       sizeof(asn_DEF_reportSlotConfig_tags_17)
+               /sizeof(asn_DEF_reportSlotConfig_tags_17[0]), /* 2 */
+       { &asn_OER_type_reportSlotConfig_constr_17, &asn_PER_type_reportSlotConfig_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportSlotConfig_specs_17      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reportSlotOffsetList_25[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_26, &asn_PER_memb_Member_constr_26,  memb_NativeInteger_constraint_25 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reportSlotOffsetList_tags_25[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_reportSlotOffsetList_specs_25 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotOffsetList),
+       offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotOffsetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportSlotOffsetList_25 = {
+       "reportSlotOffsetList",
+       "reportSlotOffsetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_reportSlotOffsetList_tags_25,
+       sizeof(asn_DEF_reportSlotOffsetList_tags_25)
+               /sizeof(asn_DEF_reportSlotOffsetList_tags_25[0]) - 1, /* 1 */
+       asn_DEF_reportSlotOffsetList_tags_25,   /* Same as above */
+       sizeof(asn_DEF_reportSlotOffsetList_tags_25)
+               /sizeof(asn_DEF_reportSlotOffsetList_tags_25[0]), /* 2 */
+       { &asn_OER_type_reportSlotOffsetList_constr_25, &asn_PER_type_reportSlotOffsetList_constr_25, SEQUENCE_OF_constraint },
+       asn_MBR_reportSlotOffsetList_25,
+       1,      /* Single element */
+       &asn_SPC_reportSlotOffsetList_specs_25  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semiPersistentOnPUSCH_16[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH, reportSlotConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportSlotConfig_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportSlotConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH, reportSlotOffsetList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_reportSlotOffsetList_25,
+               0,
+               { &asn_OER_memb_reportSlotOffsetList_constr_25, &asn_PER_memb_reportSlotOffsetList_constr_25,  memb_reportSlotOffsetList_constraint_16 },
+               0, 0, /* No default value */
+               "reportSlotOffsetList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH, p0alpha),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUSCH_AlphaSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p0alpha"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_semiPersistentOnPUSCH_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_semiPersistentOnPUSCH_tag2el_16[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportSlotConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportSlotOffsetList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* p0alpha */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_semiPersistentOnPUSCH_specs_16 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH),
+       offsetof(struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH, _asn_ctx),
+       asn_MAP_semiPersistentOnPUSCH_tag2el_16,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semiPersistentOnPUSCH_16 = {
+       "semiPersistentOnPUSCH",
+       "semiPersistentOnPUSCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_semiPersistentOnPUSCH_tags_16,
+       sizeof(asn_DEF_semiPersistentOnPUSCH_tags_16)
+               /sizeof(asn_DEF_semiPersistentOnPUSCH_tags_16[0]) - 1, /* 1 */
+       asn_DEF_semiPersistentOnPUSCH_tags_16,  /* Same as above */
+       sizeof(asn_DEF_semiPersistentOnPUSCH_tags_16)
+               /sizeof(asn_DEF_semiPersistentOnPUSCH_tags_16[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_semiPersistentOnPUSCH_16,
+       3,      /* Elements count */
+       &asn_SPC_semiPersistentOnPUSCH_specs_16 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reportSlotOffsetList_29[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_30, &asn_PER_memb_Member_constr_30,  memb_NativeInteger_constraint_29 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reportSlotOffsetList_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_reportSlotOffsetList_specs_29 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__aperiodic__reportSlotOffsetList),
+       offsetof(struct CSI_ReportConfig__reportConfigType__aperiodic__reportSlotOffsetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportSlotOffsetList_29 = {
+       "reportSlotOffsetList",
+       "reportSlotOffsetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_reportSlotOffsetList_tags_29,
+       sizeof(asn_DEF_reportSlotOffsetList_tags_29)
+               /sizeof(asn_DEF_reportSlotOffsetList_tags_29[0]) - 1, /* 1 */
+       asn_DEF_reportSlotOffsetList_tags_29,   /* Same as above */
+       sizeof(asn_DEF_reportSlotOffsetList_tags_29)
+               /sizeof(asn_DEF_reportSlotOffsetList_tags_29[0]), /* 2 */
+       { &asn_OER_type_reportSlotOffsetList_constr_29, &asn_PER_type_reportSlotOffsetList_constr_29, SEQUENCE_OF_constraint },
+       asn_MBR_reportSlotOffsetList_29,
+       1,      /* Single element */
+       &asn_SPC_reportSlotOffsetList_specs_29  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodic_28[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportConfigType__aperiodic, reportSlotOffsetList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_reportSlotOffsetList_29,
+               0,
+               { &asn_OER_memb_reportSlotOffsetList_constr_29, &asn_PER_memb_reportSlotOffsetList_constr_29,  memb_reportSlotOffsetList_constraint_28 },
+               0, 0, /* No default value */
+               "reportSlotOffsetList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_aperiodic_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_aperiodic_tag2el_28[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportSlotOffsetList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_aperiodic_specs_28 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType__aperiodic),
+       offsetof(struct CSI_ReportConfig__reportConfigType__aperiodic, _asn_ctx),
+       asn_MAP_aperiodic_tag2el_28,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodic_28 = {
+       "aperiodic",
+       "aperiodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_aperiodic_tags_28,
+       sizeof(asn_DEF_aperiodic_tags_28)
+               /sizeof(asn_DEF_aperiodic_tags_28[0]) - 1, /* 1 */
+       asn_DEF_aperiodic_tags_28,      /* Same as above */
+       sizeof(asn_DEF_aperiodic_tags_28)
+               /sizeof(asn_DEF_aperiodic_tags_28[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_aperiodic_28,
+       1,      /* Elements count */
+       &asn_SPC_aperiodic_specs_28     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reportConfigType_7[] = {
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__reportConfigType, choice.periodic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_periodic_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodic"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__reportConfigType, choice.semiPersistentOnPUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_semiPersistentOnPUCCH_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiPersistentOnPUCCH"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__reportConfigType, choice.semiPersistentOnPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_semiPersistentOnPUSCH_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiPersistentOnPUSCH"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__reportConfigType, choice.aperiodic),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_aperiodic_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodic"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportConfigType_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semiPersistentOnPUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* semiPersistentOnPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* aperiodic */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportConfigType_specs_7 = {
+       sizeof(struct CSI_ReportConfig__reportConfigType),
+       offsetof(struct CSI_ReportConfig__reportConfigType, _asn_ctx),
+       offsetof(struct CSI_ReportConfig__reportConfigType, present),
+       sizeof(((struct CSI_ReportConfig__reportConfigType *)0)->present),
+       asn_MAP_reportConfigType_tag2el_7,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportConfigType_7 = {
+       "reportConfigType",
+       "reportConfigType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_reportConfigType_constr_7, &asn_PER_type_reportConfigType_constr_7, CHOICE_constraint },
+       asn_MBR_reportConfigType_7,
+       4,      /* Elements count */
+       &asn_SPC_reportConfigType_specs_7       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_BundleSizeForCSI_value2enum_36[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" }
+};
+static const unsigned int asn_MAP_pdsch_BundleSizeForCSI_enum2value_36[] = {
+       0,      /* n2(0) */
+       1       /* n4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_BundleSizeForCSI_specs_36 = {
+       asn_MAP_pdsch_BundleSizeForCSI_value2enum_36,   /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_BundleSizeForCSI_enum2value_36,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_BundleSizeForCSI_tags_36[] = {
+       (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_pdsch_BundleSizeForCSI_36 = {
+       "pdsch-BundleSizeForCSI",
+       "pdsch-BundleSizeForCSI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_BundleSizeForCSI_tags_36,
+       sizeof(asn_DEF_pdsch_BundleSizeForCSI_tags_36)
+               /sizeof(asn_DEF_pdsch_BundleSizeForCSI_tags_36[0]) - 1, /* 1 */
+       asn_DEF_pdsch_BundleSizeForCSI_tags_36, /* Same as above */
+       sizeof(asn_DEF_pdsch_BundleSizeForCSI_tags_36)
+               /sizeof(asn_DEF_pdsch_BundleSizeForCSI_tags_36[0]), /* 2 */
+       { &asn_OER_type_pdsch_BundleSizeForCSI_constr_36, &asn_PER_type_pdsch_BundleSizeForCSI_constr_36, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_BundleSizeForCSI_specs_36        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cri_RI_i1_CQI_35[] = {
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI, pdsch_BundleSizeForCSI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_BundleSizeForCSI_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-BundleSizeForCSI"
+               },
+};
+static const int asn_MAP_cri_RI_i1_CQI_oms_35[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_cri_RI_i1_CQI_tags_35[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cri_RI_i1_CQI_tag2el_35[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pdsch-BundleSizeForCSI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cri_RI_i1_CQI_specs_35 = {
+       sizeof(struct CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI),
+       offsetof(struct CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI, _asn_ctx),
+       asn_MAP_cri_RI_i1_CQI_tag2el_35,
+       1,      /* Count of tags in the map */
+       asn_MAP_cri_RI_i1_CQI_oms_35,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cri_RI_i1_CQI_35 = {
+       "cri-RI-i1-CQI",
+       "cri-RI-i1-CQI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cri_RI_i1_CQI_tags_35,
+       sizeof(asn_DEF_cri_RI_i1_CQI_tags_35)
+               /sizeof(asn_DEF_cri_RI_i1_CQI_tags_35[0]) - 1, /* 1 */
+       asn_DEF_cri_RI_i1_CQI_tags_35,  /* Same as above */
+       sizeof(asn_DEF_cri_RI_i1_CQI_tags_35)
+               /sizeof(asn_DEF_cri_RI_i1_CQI_tags_35[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cri_RI_i1_CQI_35,
+       1,      /* Elements count */
+       &asn_SPC_cri_RI_i1_CQI_specs_35 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reportQuantity_31[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.none),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "none"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RI_PMI_CQI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RI-PMI-CQI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RI_i1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RI-i1"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RI_i1_CQI),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_cri_RI_i1_CQI_35,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RI-i1-CQI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RI_CQI),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RI-CQI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.ssb_Index_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index-RSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportQuantity, choice.cri_RI_LI_PMI_CQI),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cri-RI-LI-PMI-CQI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportQuantity_tag2el_31[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* none */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cri-RI-PMI-CQI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cri-RI-i1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cri-RI-i1-CQI */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* cri-RI-CQI */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* cri-RSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ssb-Index-RSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* cri-RI-LI-PMI-CQI */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportQuantity_specs_31 = {
+       sizeof(struct CSI_ReportConfig__reportQuantity),
+       offsetof(struct CSI_ReportConfig__reportQuantity, _asn_ctx),
+       offsetof(struct CSI_ReportConfig__reportQuantity, present),
+       sizeof(((struct CSI_ReportConfig__reportQuantity *)0)->present),
+       asn_MAP_reportQuantity_tag2el_31,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportQuantity_31 = {
+       "reportQuantity",
+       "reportQuantity",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_reportQuantity_constr_31, &asn_PER_type_reportQuantity_constr_31, CHOICE_constraint },
+       asn_MBR_reportQuantity_31,
+       8,      /* Elements count */
+       &asn_SPC_reportQuantity_specs_31        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cqi_FormatIndicator_value2enum_44[] = {
+       { 0,    11,     "widebandCQI" },
+       { 1,    10,     "subbandCQI" }
+};
+static const unsigned int asn_MAP_cqi_FormatIndicator_enum2value_44[] = {
+       1,      /* subbandCQI(1) */
+       0       /* widebandCQI(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cqi_FormatIndicator_specs_44 = {
+       asn_MAP_cqi_FormatIndicator_value2enum_44,      /* "tag" => N; sorted by tag */
+       asn_MAP_cqi_FormatIndicator_enum2value_44,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cqi_FormatIndicator_tags_44[] = {
+       (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_cqi_FormatIndicator_44 = {
+       "cqi-FormatIndicator",
+       "cqi-FormatIndicator",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cqi_FormatIndicator_tags_44,
+       sizeof(asn_DEF_cqi_FormatIndicator_tags_44)
+               /sizeof(asn_DEF_cqi_FormatIndicator_tags_44[0]) - 1, /* 1 */
+       asn_DEF_cqi_FormatIndicator_tags_44,    /* Same as above */
+       sizeof(asn_DEF_cqi_FormatIndicator_tags_44)
+               /sizeof(asn_DEF_cqi_FormatIndicator_tags_44[0]), /* 2 */
+       { &asn_OER_type_cqi_FormatIndicator_constr_44, &asn_PER_type_cqi_FormatIndicator_constr_44, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cqi_FormatIndicator_specs_44   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pmi_FormatIndicator_value2enum_47[] = {
+       { 0,    11,     "widebandPMI" },
+       { 1,    10,     "subbandPMI" }
+};
+static const unsigned int asn_MAP_pmi_FormatIndicator_enum2value_47[] = {
+       1,      /* subbandPMI(1) */
+       0       /* widebandPMI(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pmi_FormatIndicator_specs_47 = {
+       asn_MAP_pmi_FormatIndicator_value2enum_47,      /* "tag" => N; sorted by tag */
+       asn_MAP_pmi_FormatIndicator_enum2value_47,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pmi_FormatIndicator_tags_47[] = {
+       (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_pmi_FormatIndicator_47 = {
+       "pmi-FormatIndicator",
+       "pmi-FormatIndicator",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pmi_FormatIndicator_tags_47,
+       sizeof(asn_DEF_pmi_FormatIndicator_tags_47)
+               /sizeof(asn_DEF_pmi_FormatIndicator_tags_47[0]) - 1, /* 1 */
+       asn_DEF_pmi_FormatIndicator_tags_47,    /* Same as above */
+       sizeof(asn_DEF_pmi_FormatIndicator_tags_47)
+               /sizeof(asn_DEF_pmi_FormatIndicator_tags_47[0]), /* 2 */
+       { &asn_OER_type_pmi_FormatIndicator_constr_47, &asn_PER_type_pmi_FormatIndicator_constr_47, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pmi_FormatIndicator_specs_47   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_ReportingBand_50[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands3),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands3_constr_51, &asn_PER_memb_subbands3_constr_51,  memb_subbands3_constraint_50 },
+               0, 0, /* No default value */
+               "subbands3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands4_constr_52, &asn_PER_memb_subbands4_constr_52,  memb_subbands4_constraint_50 },
+               0, 0, /* No default value */
+               "subbands4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands5),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands5_constr_53, &asn_PER_memb_subbands5_constr_53,  memb_subbands5_constraint_50 },
+               0, 0, /* No default value */
+               "subbands5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands6),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands6_constr_54, &asn_PER_memb_subbands6_constr_54,  memb_subbands6_constraint_50 },
+               0, 0, /* No default value */
+               "subbands6"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands7),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands7_constr_55, &asn_PER_memb_subbands7_constr_55,  memb_subbands7_constraint_50 },
+               0, 0, /* No default value */
+               "subbands7"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands8),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands8_constr_56, &asn_PER_memb_subbands8_constr_56,  memb_subbands8_constraint_50 },
+               0, 0, /* No default value */
+               "subbands8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands9),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands9_constr_57, &asn_PER_memb_subbands9_constr_57,  memb_subbands9_constraint_50 },
+               0, 0, /* No default value */
+               "subbands9"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands10),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands10_constr_58, &asn_PER_memb_subbands10_constr_58,  memb_subbands10_constraint_50 },
+               0, 0, /* No default value */
+               "subbands10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands11),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands11_constr_59, &asn_PER_memb_subbands11_constr_59,  memb_subbands11_constraint_50 },
+               0, 0, /* No default value */
+               "subbands11"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands12),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands12_constr_60, &asn_PER_memb_subbands12_constr_60,  memb_subbands12_constraint_50 },
+               0, 0, /* No default value */
+               "subbands12"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands13),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands13_constr_61, &asn_PER_memb_subbands13_constr_61,  memb_subbands13_constraint_50 },
+               0, 0, /* No default value */
+               "subbands13"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands14),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands14_constr_62, &asn_PER_memb_subbands14_constr_62,  memb_subbands14_constraint_50 },
+               0, 0, /* No default value */
+               "subbands14"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands15),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands15_constr_63, &asn_PER_memb_subbands15_constr_63,  memb_subbands15_constraint_50 },
+               0, 0, /* No default value */
+               "subbands15"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands16),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands16_constr_64, &asn_PER_memb_subbands16_constr_64,  memb_subbands16_constraint_50 },
+               0, 0, /* No default value */
+               "subbands16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands17),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands17_constr_65, &asn_PER_memb_subbands17_constr_65,  memb_subbands17_constraint_50 },
+               0, 0, /* No default value */
+               "subbands17"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands18),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands18_constr_66, &asn_PER_memb_subbands18_constr_66,  memb_subbands18_constraint_50 },
+               0, 0, /* No default value */
+               "subbands18"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, choice.subbands19_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_subbands19_v1530_constr_68, &asn_PER_memb_subbands19_v1530_constr_68,  memb_subbands19_v1530_constraint_50 },
+               0, 0, /* No default value */
+               "subbands19-v1530"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_ReportingBand_tag2el_50[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subbands3 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subbands4 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subbands5 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* subbands6 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* subbands7 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* subbands8 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* subbands9 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* subbands10 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* subbands11 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* subbands12 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* subbands13 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* subbands14 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* subbands15 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* subbands16 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* subbands17 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* subbands18 */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 } /* subbands19-v1530 */
+};
+static asn_CHOICE_specifics_t asn_SPC_csi_ReportingBand_specs_50 = {
+       sizeof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand),
+       offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, _asn_ctx),
+       offsetof(struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand, present),
+       sizeof(((struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand *)0)->present),
+       asn_MAP_csi_ReportingBand_tag2el_50,
+       17,     /* Count of tags in the map */
+       0, 0,
+       16      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_ReportingBand_50 = {
+       "csi-ReportingBand",
+       "csi-ReportingBand",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_csi_ReportingBand_constr_50, &asn_PER_type_csi_ReportingBand_constr_50, CHOICE_constraint },
+       asn_MBR_csi_ReportingBand_50,
+       17,     /* Elements count */
+       &asn_SPC_csi_ReportingBand_specs_50     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reportFreqConfiguration_43[] = {
+       { ATF_POINTER, 3, offsetof(struct CSI_ReportConfig__reportFreqConfiguration, cqi_FormatIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cqi_FormatIndicator_44,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cqi-FormatIndicator"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_ReportConfig__reportFreqConfiguration, pmi_FormatIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pmi_FormatIndicator_47,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pmi-FormatIndicator"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig__reportFreqConfiguration, csi_ReportingBand),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_csi_ReportingBand_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-ReportingBand"
+               },
+};
+static const int asn_MAP_reportFreqConfiguration_oms_43[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_reportFreqConfiguration_tags_43[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportFreqConfiguration_tag2el_43[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cqi-FormatIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pmi-FormatIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* csi-ReportingBand */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reportFreqConfiguration_specs_43 = {
+       sizeof(struct CSI_ReportConfig__reportFreqConfiguration),
+       offsetof(struct CSI_ReportConfig__reportFreqConfiguration, _asn_ctx),
+       asn_MAP_reportFreqConfiguration_tag2el_43,
+       3,      /* Count of tags in the map */
+       asn_MAP_reportFreqConfiguration_oms_43, /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportFreqConfiguration_43 = {
+       "reportFreqConfiguration",
+       "reportFreqConfiguration",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reportFreqConfiguration_tags_43,
+       sizeof(asn_DEF_reportFreqConfiguration_tags_43)
+               /sizeof(asn_DEF_reportFreqConfiguration_tags_43[0]) - 1, /* 1 */
+       asn_DEF_reportFreqConfiguration_tags_43,        /* Same as above */
+       sizeof(asn_DEF_reportFreqConfiguration_tags_43)
+               /sizeof(asn_DEF_reportFreqConfiguration_tags_43[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reportFreqConfiguration_43,
+       3,      /* Elements count */
+       &asn_SPC_reportFreqConfiguration_specs_43       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_timeRestrictionForChannelMeasurements_value2enum_69[] = {
+       { 0,    10,     "configured" },
+       { 1,    13,     "notConfigured" }
+};
+static const unsigned int asn_MAP_timeRestrictionForChannelMeasurements_enum2value_69[] = {
+       0,      /* configured(0) */
+       1       /* notConfigured(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_timeRestrictionForChannelMeasurements_specs_69 = {
+       asn_MAP_timeRestrictionForChannelMeasurements_value2enum_69,    /* "tag" => N; sorted by tag */
+       asn_MAP_timeRestrictionForChannelMeasurements_enum2value_69,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_timeRestrictionForChannelMeasurements_tags_69[] = {
+       (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_timeRestrictionForChannelMeasurements_69 = {
+       "timeRestrictionForChannelMeasurements",
+       "timeRestrictionForChannelMeasurements",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_timeRestrictionForChannelMeasurements_tags_69,
+       sizeof(asn_DEF_timeRestrictionForChannelMeasurements_tags_69)
+               /sizeof(asn_DEF_timeRestrictionForChannelMeasurements_tags_69[0]) - 1, /* 1 */
+       asn_DEF_timeRestrictionForChannelMeasurements_tags_69,  /* Same as above */
+       sizeof(asn_DEF_timeRestrictionForChannelMeasurements_tags_69)
+               /sizeof(asn_DEF_timeRestrictionForChannelMeasurements_tags_69[0]), /* 2 */
+       { &asn_OER_type_timeRestrictionForChannelMeasurements_constr_69, &asn_PER_type_timeRestrictionForChannelMeasurements_constr_69, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_timeRestrictionForChannelMeasurements_specs_69 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_timeRestrictionForInterferenceMeasurements_value2enum_72[] = {
+       { 0,    10,     "configured" },
+       { 1,    13,     "notConfigured" }
+};
+static const unsigned int asn_MAP_timeRestrictionForInterferenceMeasurements_enum2value_72[] = {
+       0,      /* configured(0) */
+       1       /* notConfigured(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_timeRestrictionForInterferenceMeasurements_specs_72 = {
+       asn_MAP_timeRestrictionForInterferenceMeasurements_value2enum_72,       /* "tag" => N; sorted by tag */
+       asn_MAP_timeRestrictionForInterferenceMeasurements_enum2value_72,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72[] = {
+       (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_timeRestrictionForInterferenceMeasurements_72 = {
+       "timeRestrictionForInterferenceMeasurements",
+       "timeRestrictionForInterferenceMeasurements",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72,
+       sizeof(asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72)
+               /sizeof(asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72[0]) - 1, /* 1 */
+       asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72,     /* Same as above */
+       sizeof(asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72)
+               /sizeof(asn_DEF_timeRestrictionForInterferenceMeasurements_tags_72[0]), /* 2 */
+       { &asn_OER_type_timeRestrictionForInterferenceMeasurements_constr_72, &asn_PER_type_timeRestrictionForInterferenceMeasurements_constr_72, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_timeRestrictionForInterferenceMeasurements_specs_72    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dummy_value2enum_76[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_dummy_enum2value_76[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dummy_specs_76 = {
+       asn_MAP_dummy_value2enum_76,    /* "tag" => N; sorted by tag */
+       asn_MAP_dummy_enum2value_76,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dummy_tags_76[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dummy_76 = {
+       "dummy",
+       "dummy",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dummy_tags_76,
+       sizeof(asn_DEF_dummy_tags_76)
+               /sizeof(asn_DEF_dummy_tags_76[0]) - 1, /* 1 */
+       asn_DEF_dummy_tags_76,  /* Same as above */
+       sizeof(asn_DEF_dummy_tags_76)
+               /sizeof(asn_DEF_dummy_tags_76[0]), /* 2 */
+       { &asn_OER_type_dummy_constr_76, &asn_PER_type_dummy_constr_76, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dummy_specs_76 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofReportedRS_value2enum_82[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" }
+};
+static const unsigned int asn_MAP_nrofReportedRS_enum2value_82[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3       /* n4(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofReportedRS_specs_82 = {
+       asn_MAP_nrofReportedRS_value2enum_82,   /* "tag" => N; sorted by tag */
+       asn_MAP_nrofReportedRS_enum2value_82,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofReportedRS_tags_82[] = {
+       (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_nrofReportedRS_82 = {
+       "nrofReportedRS",
+       "nrofReportedRS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofReportedRS_tags_82,
+       sizeof(asn_DEF_nrofReportedRS_tags_82)
+               /sizeof(asn_DEF_nrofReportedRS_tags_82[0]) - 1, /* 1 */
+       asn_DEF_nrofReportedRS_tags_82, /* Same as above */
+       sizeof(asn_DEF_nrofReportedRS_tags_82)
+               /sizeof(asn_DEF_nrofReportedRS_tags_82[0]), /* 2 */
+       { &asn_OER_type_nrofReportedRS_constr_82, &asn_PER_type_nrofReportedRS_constr_82, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofReportedRS_specs_82        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_disabled_81[] = {
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig__groupBasedBeamReporting__disabled, nrofReportedRS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofReportedRS_82,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofReportedRS"
+               },
+};
+static const int asn_MAP_disabled_oms_81[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_disabled_tags_81[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_disabled_tag2el_81[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nrofReportedRS */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_disabled_specs_81 = {
+       sizeof(struct CSI_ReportConfig__groupBasedBeamReporting__disabled),
+       offsetof(struct CSI_ReportConfig__groupBasedBeamReporting__disabled, _asn_ctx),
+       asn_MAP_disabled_tag2el_81,
+       1,      /* Count of tags in the map */
+       asn_MAP_disabled_oms_81,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_disabled_81 = {
+       "disabled",
+       "disabled",
+       &asn_OP_SEQUENCE,
+       asn_DEF_disabled_tags_81,
+       sizeof(asn_DEF_disabled_tags_81)
+               /sizeof(asn_DEF_disabled_tags_81[0]) - 1, /* 1 */
+       asn_DEF_disabled_tags_81,       /* Same as above */
+       sizeof(asn_DEF_disabled_tags_81)
+               /sizeof(asn_DEF_disabled_tags_81[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_disabled_81,
+       1,      /* Elements count */
+       &asn_SPC_disabled_specs_81      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_groupBasedBeamReporting_79[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__groupBasedBeamReporting, choice.enabled),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "enabled"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ReportConfig__groupBasedBeamReporting, choice.disabled),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_disabled_81,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "disabled"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_groupBasedBeamReporting_tag2el_79[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* enabled */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* disabled */
+};
+static asn_CHOICE_specifics_t asn_SPC_groupBasedBeamReporting_specs_79 = {
+       sizeof(struct CSI_ReportConfig__groupBasedBeamReporting),
+       offsetof(struct CSI_ReportConfig__groupBasedBeamReporting, _asn_ctx),
+       offsetof(struct CSI_ReportConfig__groupBasedBeamReporting, present),
+       sizeof(((struct CSI_ReportConfig__groupBasedBeamReporting *)0)->present),
+       asn_MAP_groupBasedBeamReporting_tag2el_79,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_groupBasedBeamReporting_79 = {
+       "groupBasedBeamReporting",
+       "groupBasedBeamReporting",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_groupBasedBeamReporting_constr_79, &asn_PER_type_groupBasedBeamReporting_constr_79, CHOICE_constraint },
+       asn_MBR_groupBasedBeamReporting_79,
+       2,      /* Elements count */
+       &asn_SPC_groupBasedBeamReporting_specs_79       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cqi_Table_value2enum_87[] = {
+       { 0,    6,      "table1" },
+       { 1,    6,      "table2" },
+       { 2,    6,      "table3" },
+       { 3,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_cqi_Table_enum2value_87[] = {
+       3,      /* spare1(3) */
+       0,      /* table1(0) */
+       1,      /* table2(1) */
+       2       /* table3(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cqi_Table_specs_87 = {
+       asn_MAP_cqi_Table_value2enum_87,        /* "tag" => N; sorted by tag */
+       asn_MAP_cqi_Table_enum2value_87,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cqi_Table_tags_87[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cqi_Table_87 = {
+       "cqi-Table",
+       "cqi-Table",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cqi_Table_tags_87,
+       sizeof(asn_DEF_cqi_Table_tags_87)
+               /sizeof(asn_DEF_cqi_Table_tags_87[0]) - 1, /* 1 */
+       asn_DEF_cqi_Table_tags_87,      /* Same as above */
+       sizeof(asn_DEF_cqi_Table_tags_87)
+               /sizeof(asn_DEF_cqi_Table_tags_87[0]), /* 2 */
+       { &asn_OER_type_cqi_Table_constr_87, &asn_PER_type_cqi_Table_constr_87, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cqi_Table_specs_87     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_subbandSize_value2enum_92[] = {
+       { 0,    6,      "value1" },
+       { 1,    6,      "value2" }
+};
+static const unsigned int asn_MAP_subbandSize_enum2value_92[] = {
+       0,      /* value1(0) */
+       1       /* value2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_subbandSize_specs_92 = {
+       asn_MAP_subbandSize_value2enum_92,      /* "tag" => N; sorted by tag */
+       asn_MAP_subbandSize_enum2value_92,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_subbandSize_tags_92[] = {
+       (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_subbandSize_92 = {
+       "subbandSize",
+       "subbandSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_subbandSize_tags_92,
+       sizeof(asn_DEF_subbandSize_tags_92)
+               /sizeof(asn_DEF_subbandSize_tags_92[0]) - 1, /* 1 */
+       asn_DEF_subbandSize_tags_92,    /* Same as above */
+       sizeof(asn_DEF_subbandSize_tags_92)
+               /sizeof(asn_DEF_subbandSize_tags_92[0]), /* 2 */
+       { &asn_OER_type_subbandSize_constr_92, &asn_PER_type_subbandSize_constr_92, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_subbandSize_specs_92   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_non_PMI_PortIndication_95[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_PortIndexFor8Ranks,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_non_PMI_PortIndication_tags_95[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_non_PMI_PortIndication_specs_95 = {
+       sizeof(struct CSI_ReportConfig__non_PMI_PortIndication),
+       offsetof(struct CSI_ReportConfig__non_PMI_PortIndication, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_non_PMI_PortIndication_95 = {
+       "non-PMI-PortIndication",
+       "non-PMI-PortIndication",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_non_PMI_PortIndication_tags_95,
+       sizeof(asn_DEF_non_PMI_PortIndication_tags_95)
+               /sizeof(asn_DEF_non_PMI_PortIndication_tags_95[0]) - 1, /* 1 */
+       asn_DEF_non_PMI_PortIndication_tags_95, /* Same as above */
+       sizeof(asn_DEF_non_PMI_PortIndication_tags_95)
+               /sizeof(asn_DEF_non_PMI_PortIndication_tags_95[0]), /* 2 */
+       { &asn_OER_type_non_PMI_PortIndication_constr_95, &asn_PER_type_non_PMI_PortIndication_constr_95, SEQUENCE_OF_constraint },
+       asn_MBR_non_PMI_PortIndication_95,
+       1,      /* Single element */
+       &asn_SPC_non_PMI_PortIndication_specs_95        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportSlotConfig_v1530_value2enum_100[] = {
+       { 0,    3,      "sl4" },
+       { 1,    3,      "sl8" },
+       { 2,    4,      "sl16" }
+};
+static const unsigned int asn_MAP_reportSlotConfig_v1530_enum2value_100[] = {
+       2,      /* sl16(2) */
+       0,      /* sl4(0) */
+       1       /* sl8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportSlotConfig_v1530_specs_100 = {
+       asn_MAP_reportSlotConfig_v1530_value2enum_100,  /* "tag" => N; sorted by tag */
+       asn_MAP_reportSlotConfig_v1530_enum2value_100,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportSlotConfig_v1530_tags_100[] = {
+       (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_reportSlotConfig_v1530_100 = {
+       "reportSlotConfig-v1530",
+       "reportSlotConfig-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportSlotConfig_v1530_tags_100,
+       sizeof(asn_DEF_reportSlotConfig_v1530_tags_100)
+               /sizeof(asn_DEF_reportSlotConfig_v1530_tags_100[0]) - 1, /* 1 */
+       asn_DEF_reportSlotConfig_v1530_tags_100,        /* Same as above */
+       sizeof(asn_DEF_reportSlotConfig_v1530_tags_100)
+               /sizeof(asn_DEF_reportSlotConfig_v1530_tags_100[0]), /* 2 */
+       { &asn_OER_type_reportSlotConfig_v1530_constr_100, &asn_PER_type_reportSlotConfig_v1530_constr_100, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportSlotConfig_v1530_specs_100       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semiPersistentOnPUSCH_v1530_99[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530, reportSlotConfig_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportSlotConfig_v1530_100,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportSlotConfig-v1530"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_semiPersistentOnPUSCH_v1530_tags_99[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_semiPersistentOnPUSCH_v1530_tag2el_99[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportSlotConfig-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_semiPersistentOnPUSCH_v1530_specs_99 = {
+       sizeof(struct CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530),
+       offsetof(struct CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530, _asn_ctx),
+       asn_MAP_semiPersistentOnPUSCH_v1530_tag2el_99,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semiPersistentOnPUSCH_v1530_99 = {
+       "semiPersistentOnPUSCH-v1530",
+       "semiPersistentOnPUSCH-v1530",
+       &asn_OP_SEQUENCE,
+       asn_DEF_semiPersistentOnPUSCH_v1530_tags_99,
+       sizeof(asn_DEF_semiPersistentOnPUSCH_v1530_tags_99)
+               /sizeof(asn_DEF_semiPersistentOnPUSCH_v1530_tags_99[0]) - 1, /* 1 */
+       asn_DEF_semiPersistentOnPUSCH_v1530_tags_99,    /* Same as above */
+       sizeof(asn_DEF_semiPersistentOnPUSCH_v1530_tags_99)
+               /sizeof(asn_DEF_semiPersistentOnPUSCH_v1530_tags_99[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_semiPersistentOnPUSCH_v1530_99,
+       1,      /* Elements count */
+       &asn_SPC_semiPersistentOnPUSCH_v1530_specs_99   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_98[] = {
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig__ext1, semiPersistentOnPUSCH_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_semiPersistentOnPUSCH_v1530_99,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiPersistentOnPUSCH-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_98[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_98[] = {
+       (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_98[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* semiPersistentOnPUSCH-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_98 = {
+       sizeof(struct CSI_ReportConfig__ext1),
+       offsetof(struct CSI_ReportConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_98,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_98,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_98 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_98,
+       sizeof(asn_DEF_ext1_tags_98)
+               /sizeof(asn_DEF_ext1_tags_98[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_98,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_98)
+               /sizeof(asn_DEF_ext1_tags_98[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_98,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_98  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_ReportConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, reportConfigId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigId"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, carrier),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, resourcesForChannelMeasurement),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ResourceConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourcesForChannelMeasurement"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_ReportConfig, csi_IM_ResourcesForInterference),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ResourceConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-IM-ResourcesForInterference"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, nzp_CSI_RS_ResourcesForInterference),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ResourceConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourcesForInterference"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, reportConfigType),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_reportConfigType_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, reportQuantity),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_reportQuantity_31,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantity"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, reportFreqConfiguration),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_reportFreqConfiguration_43,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportFreqConfiguration"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, timeRestrictionForChannelMeasurements),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_timeRestrictionForChannelMeasurements_69,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeRestrictionForChannelMeasurements"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, timeRestrictionForInterferenceMeasurements),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_timeRestrictionForInterferenceMeasurements_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeRestrictionForInterferenceMeasurements"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_ReportConfig, codebookConfig),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CodebookConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codebookConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, dummy),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dummy_76,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, groupBasedBeamReporting),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_groupBasedBeamReporting_79,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "groupBasedBeamReporting"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, cqi_Table),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cqi_Table_87,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cqi-Table"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportConfig, subbandSize),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_subbandSize_92,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subbandSize"
+               },
+       { ATF_POINTER, 2, offsetof(struct CSI_ReportConfig, non_PMI_PortIndication),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               0,
+               &asn_DEF_non_PMI_PortIndication_95,
+               0,
+               { &asn_OER_memb_non_PMI_PortIndication_constr_95, &asn_PER_memb_non_PMI_PortIndication_constr_95,  memb_non_PMI_PortIndication_constraint_1 },
+               0, 0, /* No default value */
+               "non-PMI-PortIndication"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ReportConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               0,
+               &asn_DEF_ext1_98,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_CSI_ReportConfig_oms_1[] = { 1, 3, 4, 7, 10, 11, 13, 15, 16 };
+static const ber_tlv_tag_t asn_DEF_CSI_ReportConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_ReportConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportConfigId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* carrier */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resourcesForChannelMeasurement */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* csi-IM-ResourcesForInterference */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nzp-CSI-RS-ResourcesForInterference */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* reportConfigType */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* reportQuantity */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* reportFreqConfiguration */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* timeRestrictionForChannelMeasurements */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* timeRestrictionForInterferenceMeasurements */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* codebookConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* dummy */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* groupBasedBeamReporting */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* cqi-Table */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* subbandSize */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* non-PMI-PortIndication */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_ReportConfig_specs_1 = {
+       sizeof(struct CSI_ReportConfig),
+       offsetof(struct CSI_ReportConfig, _asn_ctx),
+       asn_MAP_CSI_ReportConfig_tag2el_1,
+       17,     /* Count of tags in the map */
+       asn_MAP_CSI_ReportConfig_oms_1, /* Optional members */
+       8, 1,   /* Root/Additions */
+       16,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ReportConfig = {
+       "CSI-ReportConfig",
+       "CSI-ReportConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_ReportConfig_tags_1,
+       sizeof(asn_DEF_CSI_ReportConfig_tags_1)
+               /sizeof(asn_DEF_CSI_ReportConfig_tags_1[0]), /* 1 */
+       asn_DEF_CSI_ReportConfig_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CSI_ReportConfig_tags_1)
+               /sizeof(asn_DEF_CSI_ReportConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_ReportConfig_1,
+       17,     /* Elements count */
+       &asn_SPC_CSI_ReportConfig_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ReportConfig.h b/src/codec_utils/RRC/CSI-ReportConfig.h
new file mode 100644 (file)
index 0000000..9ab6441
--- /dev/null
@@ -0,0 +1,326 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ReportConfig_H_
+#define        _CSI_ReportConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-ReportConfigId.h"
+#include "ServCellIndex.h"
+#include "CSI-ResourceConfigId.h"
+#include <NativeEnumerated.h>
+#include "CSI-ReportPeriodicityAndOffset.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+#include "P0-PUSCH-AlphaSetId.h"
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <NULL.h>
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_ReportConfig__reportConfigType_PR {
+       CSI_ReportConfig__reportConfigType_PR_NOTHING,  /* No components present */
+       CSI_ReportConfig__reportConfigType_PR_periodic,
+       CSI_ReportConfig__reportConfigType_PR_semiPersistentOnPUCCH,
+       CSI_ReportConfig__reportConfigType_PR_semiPersistentOnPUSCH,
+       CSI_ReportConfig__reportConfigType_PR_aperiodic
+} CSI_ReportConfig__reportConfigType_PR;
+typedef enum CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig {
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl5 = 0,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl10        = 1,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl20        = 2,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl40        = 3,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl80        = 4,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl160       = 5,
+       CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig_sl320       = 6
+} e_CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotConfig;
+typedef enum CSI_ReportConfig__reportQuantity_PR {
+       CSI_ReportConfig__reportQuantity_PR_NOTHING,    /* No components present */
+       CSI_ReportConfig__reportQuantity_PR_none,
+       CSI_ReportConfig__reportQuantity_PR_cri_RI_PMI_CQI,
+       CSI_ReportConfig__reportQuantity_PR_cri_RI_i1,
+       CSI_ReportConfig__reportQuantity_PR_cri_RI_i1_CQI,
+       CSI_ReportConfig__reportQuantity_PR_cri_RI_CQI,
+       CSI_ReportConfig__reportQuantity_PR_cri_RSRP,
+       CSI_ReportConfig__reportQuantity_PR_ssb_Index_RSRP,
+       CSI_ReportConfig__reportQuantity_PR_cri_RI_LI_PMI_CQI
+} CSI_ReportConfig__reportQuantity_PR;
+typedef enum CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI__pdsch_BundleSizeForCSI {
+       CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI__pdsch_BundleSizeForCSI_n2      = 0,
+       CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI__pdsch_BundleSizeForCSI_n4      = 1
+} e_CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI__pdsch_BundleSizeForCSI;
+typedef enum CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator {
+       CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_widebandCQI      = 0,
+       CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator_subbandCQI       = 1
+} e_CSI_ReportConfig__reportFreqConfiguration__cqi_FormatIndicator;
+typedef enum CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator {
+       CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_widebandPMI      = 0,
+       CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator_subbandPMI       = 1
+} e_CSI_ReportConfig__reportFreqConfiguration__pmi_FormatIndicator;
+typedef enum CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR {
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_NOTHING,        /* No components present */
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands3,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands4,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands5,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands6,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands7,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands8,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands9,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands10,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands11,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands12,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands13,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands14,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands15,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands16,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands17,
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands18,
+       /* Extensions may appear below */
+       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR_subbands19_v1530
+} CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR;
+typedef enum CSI_ReportConfig__timeRestrictionForChannelMeasurements {
+       CSI_ReportConfig__timeRestrictionForChannelMeasurements_configured      = 0,
+       CSI_ReportConfig__timeRestrictionForChannelMeasurements_notConfigured   = 1
+} e_CSI_ReportConfig__timeRestrictionForChannelMeasurements;
+typedef enum CSI_ReportConfig__timeRestrictionForInterferenceMeasurements {
+       CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_configured = 0,
+       CSI_ReportConfig__timeRestrictionForInterferenceMeasurements_notConfigured      = 1
+} e_CSI_ReportConfig__timeRestrictionForInterferenceMeasurements;
+typedef enum CSI_ReportConfig__dummy {
+       CSI_ReportConfig__dummy_n1      = 0,
+       CSI_ReportConfig__dummy_n2      = 1
+} e_CSI_ReportConfig__dummy;
+typedef enum CSI_ReportConfig__groupBasedBeamReporting_PR {
+       CSI_ReportConfig__groupBasedBeamReporting_PR_NOTHING,   /* No components present */
+       CSI_ReportConfig__groupBasedBeamReporting_PR_enabled,
+       CSI_ReportConfig__groupBasedBeamReporting_PR_disabled
+} CSI_ReportConfig__groupBasedBeamReporting_PR;
+typedef enum CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS {
+       CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n1  = 0,
+       CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n2  = 1,
+       CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n3  = 2,
+       CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS_n4  = 3
+} e_CSI_ReportConfig__groupBasedBeamReporting__disabled__nrofReportedRS;
+typedef enum CSI_ReportConfig__cqi_Table {
+       CSI_ReportConfig__cqi_Table_table1      = 0,
+       CSI_ReportConfig__cqi_Table_table2      = 1,
+       CSI_ReportConfig__cqi_Table_table3      = 2,
+       CSI_ReportConfig__cqi_Table_spare1      = 3
+} e_CSI_ReportConfig__cqi_Table;
+typedef enum CSI_ReportConfig__subbandSize {
+       CSI_ReportConfig__subbandSize_value1    = 0,
+       CSI_ReportConfig__subbandSize_value2    = 1
+} e_CSI_ReportConfig__subbandSize;
+typedef enum CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530__reportSlotConfig_v1530 {
+       CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530__reportSlotConfig_v1530_sl4 = 0,
+       CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530__reportSlotConfig_v1530_sl8 = 1,
+       CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530__reportSlotConfig_v1530_sl16        = 2
+} e_CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530__reportSlotConfig_v1530;
+
+/* Forward declarations */
+struct CodebookConfig;
+struct PUCCH_CSI_Resource;
+struct PortIndexFor8Ranks;
+
+/* CSI-ReportConfig */
+typedef struct CSI_ReportConfig {
+       CSI_ReportConfigId_t     reportConfigId;
+       ServCellIndex_t *carrier;       /* OPTIONAL */
+       CSI_ResourceConfigId_t   resourcesForChannelMeasurement;
+       CSI_ResourceConfigId_t  *csi_IM_ResourcesForInterference;       /* OPTIONAL */
+       CSI_ResourceConfigId_t  *nzp_CSI_RS_ResourcesForInterference;   /* OPTIONAL */
+       struct CSI_ReportConfig__reportConfigType {
+               CSI_ReportConfig__reportConfigType_PR present;
+               union CSI_ReportConfig__reportConfigType_u {
+                       struct CSI_ReportConfig__reportConfigType__periodic {
+                               CSI_ReportPeriodicityAndOffset_t         reportSlotConfig;
+                               struct CSI_ReportConfig__reportConfigType__periodic__pucch_CSI_ResourceList {
+                                       A_SEQUENCE_OF(struct PUCCH_CSI_Resource) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } pucch_CSI_ResourceList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *periodic;
+                       struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH {
+                               CSI_ReportPeriodicityAndOffset_t         reportSlotConfig;
+                               struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUCCH__pucch_CSI_ResourceList {
+                                       A_SEQUENCE_OF(struct PUCCH_CSI_Resource) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } pucch_CSI_ResourceList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *semiPersistentOnPUCCH;
+                       struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH {
+                               long     reportSlotConfig;
+                               struct CSI_ReportConfig__reportConfigType__semiPersistentOnPUSCH__reportSlotOffsetList {
+                                       A_SEQUENCE_OF(long) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } reportSlotOffsetList;
+                               P0_PUSCH_AlphaSetId_t    p0alpha;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *semiPersistentOnPUSCH;
+                       struct CSI_ReportConfig__reportConfigType__aperiodic {
+                               struct CSI_ReportConfig__reportConfigType__aperiodic__reportSlotOffsetList {
+                                       A_SEQUENCE_OF(long) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } reportSlotOffsetList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *aperiodic;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } reportConfigType;
+       struct CSI_ReportConfig__reportQuantity {
+               CSI_ReportConfig__reportQuantity_PR present;
+               union CSI_ReportConfig__reportQuantity_u {
+                       NULL_t   none;
+                       NULL_t   cri_RI_PMI_CQI;
+                       NULL_t   cri_RI_i1;
+                       struct CSI_ReportConfig__reportQuantity__cri_RI_i1_CQI {
+                               long    *pdsch_BundleSizeForCSI;        /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *cri_RI_i1_CQI;
+                       NULL_t   cri_RI_CQI;
+                       NULL_t   cri_RSRP;
+                       NULL_t   ssb_Index_RSRP;
+                       NULL_t   cri_RI_LI_PMI_CQI;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } reportQuantity;
+       struct CSI_ReportConfig__reportFreqConfiguration {
+               long    *cqi_FormatIndicator;   /* OPTIONAL */
+               long    *pmi_FormatIndicator;   /* OPTIONAL */
+               struct CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand {
+                       CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_PR present;
+                       union CSI_ReportConfig__reportFreqConfiguration__csi_ReportingBand_u {
+                               BIT_STRING_t     subbands3;
+                               BIT_STRING_t     subbands4;
+                               BIT_STRING_t     subbands5;
+                               BIT_STRING_t     subbands6;
+                               BIT_STRING_t     subbands7;
+                               BIT_STRING_t     subbands8;
+                               BIT_STRING_t     subbands9;
+                               BIT_STRING_t     subbands10;
+                               BIT_STRING_t     subbands11;
+                               BIT_STRING_t     subbands12;
+                               BIT_STRING_t     subbands13;
+                               BIT_STRING_t     subbands14;
+                               BIT_STRING_t     subbands15;
+                               BIT_STRING_t     subbands16;
+                               BIT_STRING_t     subbands17;
+                               BIT_STRING_t     subbands18;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               BIT_STRING_t     subbands19_v1530;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *csi_ReportingBand;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reportFreqConfiguration;
+       long     timeRestrictionForChannelMeasurements;
+       long     timeRestrictionForInterferenceMeasurements;
+       struct CodebookConfig   *codebookConfig;        /* OPTIONAL */
+       long    *dummy; /* OPTIONAL */
+       struct CSI_ReportConfig__groupBasedBeamReporting {
+               CSI_ReportConfig__groupBasedBeamReporting_PR present;
+               union CSI_ReportConfig__groupBasedBeamReporting_u {
+                       NULL_t   enabled;
+                       struct CSI_ReportConfig__groupBasedBeamReporting__disabled {
+                               long    *nrofReportedRS;        /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *disabled;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } groupBasedBeamReporting;
+       long    *cqi_Table;     /* OPTIONAL */
+       long     subbandSize;
+       struct CSI_ReportConfig__non_PMI_PortIndication {
+               A_SEQUENCE_OF(struct PortIndexFor8Ranks) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *non_PMI_PortIndication;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct CSI_ReportConfig__ext1 {
+               struct CSI_ReportConfig__ext1__semiPersistentOnPUSCH_v1530 {
+                       long     reportSlotConfig_v1530;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *semiPersistentOnPUSCH_v1530;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_ReportConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportSlotConfig_17;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_BundleSizeForCSI_36;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cqi_FormatIndicator_44;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pmi_FormatIndicator_47;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_timeRestrictionForChannelMeasurements_69;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_timeRestrictionForInterferenceMeasurements_72; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dummy_76;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofReportedRS_82;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cqi_Table_87;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_subbandSize_92;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportSlotConfig_v1530_100;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ReportConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_ReportConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_ReportConfig_1[17];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ReportConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ReportConfigId.c b/src/codec_utils/RRC/CSI-ReportConfigId.c
new file mode 100644 (file)
index 0000000..f774146
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ReportConfigId.h"
+
+int
+CSI_ReportConfigId_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 <= 47)) {
+               /* 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_CSI_ReportConfigId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..47) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_ReportConfigId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  47 }       /* (0..47) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CSI_ReportConfigId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ReportConfigId = {
+       "CSI-ReportConfigId",
+       "CSI-ReportConfigId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_ReportConfigId_tags_1,
+       sizeof(asn_DEF_CSI_ReportConfigId_tags_1)
+               /sizeof(asn_DEF_CSI_ReportConfigId_tags_1[0]), /* 1 */
+       asn_DEF_CSI_ReportConfigId_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CSI_ReportConfigId_tags_1)
+               /sizeof(asn_DEF_CSI_ReportConfigId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_ReportConfigId_constr_1, &asn_PER_type_CSI_ReportConfigId_constr_1, CSI_ReportConfigId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ReportConfigId.h b/src/codec_utils/RRC/CSI-ReportConfigId.h
new file mode 100644 (file)
index 0000000..ab6c128
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ReportConfigId_H_
+#define        _CSI_ReportConfigId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-ReportConfigId */
+typedef long    CSI_ReportConfigId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_ReportConfigId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ReportConfigId;
+asn_struct_free_f CSI_ReportConfigId_free;
+asn_struct_print_f CSI_ReportConfigId_print;
+asn_constr_check_f CSI_ReportConfigId_constraint;
+ber_type_decoder_f CSI_ReportConfigId_decode_ber;
+der_type_encoder_f CSI_ReportConfigId_encode_der;
+xer_type_decoder_f CSI_ReportConfigId_decode_xer;
+xer_type_encoder_f CSI_ReportConfigId_encode_xer;
+oer_type_decoder_f CSI_ReportConfigId_decode_oer;
+oer_type_encoder_f CSI_ReportConfigId_encode_oer;
+per_type_decoder_f CSI_ReportConfigId_decode_uper;
+per_type_encoder_f CSI_ReportConfigId_encode_uper;
+per_type_decoder_f CSI_ReportConfigId_decode_aper;
+per_type_encoder_f CSI_ReportConfigId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ReportConfigId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ReportFramework.c b/src/codec_utils/RRC/CSI-ReportFramework.c
new file mode 100644 (file)
index 0000000..e0e982a
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ReportFramework.h"
+
+static int
+memb_maxNumberPeriodicCSI_ReportPerBWP_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 <= 4)) {
+               /* 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_maxNumberAperiodicCSI_ReportPerBWP_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 <= 4)) {
+               /* 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_maxNumberSemiPersistentCSI_ReportPerBWP_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 >= 0 && value <= 4)) {
+               /* 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_simultaneousCSI_ReportsAllCC_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 >= 5 && value <= 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_maxNumberPeriodicCSI_ReportPerBWP_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberPeriodicCSI_ReportPerBWP_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberAperiodicCSI_ReportPerBWP_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberAperiodicCSI_ReportPerBWP_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberSemiPersistentCSI_ReportPerBWP_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSemiPersistentCSI_ReportPerBWP_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_simultaneousCSI_ReportsAllCC_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (5..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_simultaneousCSI_ReportsAllCC_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  5,  32 }       /* (5..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_ReportFramework_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportFramework, maxNumberPeriodicCSI_ReportPerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberPeriodicCSI_ReportPerBWP_constr_2, &asn_PER_memb_maxNumberPeriodicCSI_ReportPerBWP_constr_2,  memb_maxNumberPeriodicCSI_ReportPerBWP_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberPeriodicCSI-ReportPerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportFramework, maxNumberAperiodicCSI_ReportPerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberAperiodicCSI_ReportPerBWP_constr_3, &asn_PER_memb_maxNumberAperiodicCSI_ReportPerBWP_constr_3,  memb_maxNumberAperiodicCSI_ReportPerBWP_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberAperiodicCSI-ReportPerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportFramework, maxNumberSemiPersistentCSI_ReportPerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSemiPersistentCSI_ReportPerBWP_constr_4, &asn_PER_memb_maxNumberSemiPersistentCSI_ReportPerBWP_constr_4,  memb_maxNumberSemiPersistentCSI_ReportPerBWP_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberSemiPersistentCSI-ReportPerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportFramework, simultaneousCSI_ReportsAllCC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_simultaneousCSI_ReportsAllCC_constr_5, &asn_PER_memb_simultaneousCSI_ReportsAllCC_constr_5,  memb_simultaneousCSI_ReportsAllCC_constraint_1 },
+               0, 0, /* No default value */
+               "simultaneousCSI-ReportsAllCC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_ReportFramework_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_ReportFramework_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberPeriodicCSI-ReportPerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberAperiodicCSI-ReportPerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxNumberSemiPersistentCSI-ReportPerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* simultaneousCSI-ReportsAllCC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_ReportFramework_specs_1 = {
+       sizeof(struct CSI_ReportFramework),
+       offsetof(struct CSI_ReportFramework, _asn_ctx),
+       asn_MAP_CSI_ReportFramework_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ReportFramework = {
+       "CSI-ReportFramework",
+       "CSI-ReportFramework",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_ReportFramework_tags_1,
+       sizeof(asn_DEF_CSI_ReportFramework_tags_1)
+               /sizeof(asn_DEF_CSI_ReportFramework_tags_1[0]), /* 1 */
+       asn_DEF_CSI_ReportFramework_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CSI_ReportFramework_tags_1)
+               /sizeof(asn_DEF_CSI_ReportFramework_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_ReportFramework_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_ReportFramework_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ReportFramework.h b/src/codec_utils/RRC/CSI-ReportFramework.h
new file mode 100644 (file)
index 0000000..5716e86
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ReportFramework_H_
+#define        _CSI_ReportFramework_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-ReportFramework */
+typedef struct CSI_ReportFramework {
+       long     maxNumberPeriodicCSI_ReportPerBWP;
+       long     maxNumberAperiodicCSI_ReportPerBWP;
+       long     maxNumberSemiPersistentCSI_ReportPerBWP;
+       long     simultaneousCSI_ReportsAllCC;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_ReportFramework_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ReportFramework;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_ReportFramework_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_ReportFramework_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ReportFramework_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.c b/src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.c
new file mode 100644 (file)
index 0000000..347e6b0
--- /dev/null
@@ -0,0 +1,475 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ReportPeriodicityAndOffset.h"
+
+static int
+memb_slots4_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 >= 0 && value <= 3)) {
+               /* 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_slots5_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 >= 0 && value <= 4)) {
+               /* 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_slots8_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 >= 0 && value <= 7)) {
+               /* 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_slots10_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 >= 0 && value <= 9)) {
+               /* 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_slots16_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 >= 0 && 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_slots20_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 >= 0 && value <= 19)) {
+               /* 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_slots40_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 >= 0 && value <= 39)) {
+               /* 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_slots80_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 >= 0 && value <= 79)) {
+               /* 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_slots160_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 >= 0 && value <= 159)) {
+               /* 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_slots320_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 >= 0 && value <= 319)) {
+               /* 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_slots4_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots4_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots5_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots5_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots8_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots8_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots10_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots10_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots16_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots16_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots20_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots20_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots40_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots40_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots80_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots80_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots160_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots160_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots320_constr_11 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots320_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_CSI_ReportPeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_ReportPeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_ReportPeriodicityAndOffset_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots4),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots4_constr_2, &asn_PER_memb_slots4_constr_2,  memb_slots4_constraint_1 },
+               0, 0, /* No default value */
+               "slots4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots5),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots5_constr_3, &asn_PER_memb_slots5_constr_3,  memb_slots5_constraint_1 },
+               0, 0, /* No default value */
+               "slots5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots8),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots8_constr_4, &asn_PER_memb_slots8_constr_4,  memb_slots8_constraint_1 },
+               0, 0, /* No default value */
+               "slots8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots10),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots10_constr_5, &asn_PER_memb_slots10_constr_5,  memb_slots10_constraint_1 },
+               0, 0, /* No default value */
+               "slots10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots16),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots16_constr_6, &asn_PER_memb_slots16_constr_6,  memb_slots16_constraint_1 },
+               0, 0, /* No default value */
+               "slots16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots20),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots20_constr_7, &asn_PER_memb_slots20_constr_7,  memb_slots20_constraint_1 },
+               0, 0, /* No default value */
+               "slots20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots40),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots40_constr_8, &asn_PER_memb_slots40_constr_8,  memb_slots40_constraint_1 },
+               0, 0, /* No default value */
+               "slots40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots80),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots80_constr_9, &asn_PER_memb_slots80_constr_9,  memb_slots80_constraint_1 },
+               0, 0, /* No default value */
+               "slots80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots160),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots160_constr_10, &asn_PER_memb_slots160_constr_10,  memb_slots160_constraint_1 },
+               0, 0, /* No default value */
+               "slots160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ReportPeriodicityAndOffset, choice.slots320),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots320_constr_11, &asn_PER_memb_slots320_constr_11,  memb_slots320_constraint_1 },
+               0, 0, /* No default value */
+               "slots320"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_ReportPeriodicityAndOffset_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* slots4 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* slots5 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* slots8 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* slots10 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* slots16 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* slots20 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* slots40 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* slots80 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* slots160 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* slots320 */
+};
+asn_CHOICE_specifics_t asn_SPC_CSI_ReportPeriodicityAndOffset_specs_1 = {
+       sizeof(struct CSI_ReportPeriodicityAndOffset),
+       offsetof(struct CSI_ReportPeriodicityAndOffset, _asn_ctx),
+       offsetof(struct CSI_ReportPeriodicityAndOffset, present),
+       sizeof(((struct CSI_ReportPeriodicityAndOffset *)0)->present),
+       asn_MAP_CSI_ReportPeriodicityAndOffset_tag2el_1,
+       10,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ReportPeriodicityAndOffset = {
+       "CSI-ReportPeriodicityAndOffset",
+       "CSI-ReportPeriodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_CSI_ReportPeriodicityAndOffset_constr_1, &asn_PER_type_CSI_ReportPeriodicityAndOffset_constr_1, CHOICE_constraint },
+       asn_MBR_CSI_ReportPeriodicityAndOffset_1,
+       10,     /* Elements count */
+       &asn_SPC_CSI_ReportPeriodicityAndOffset_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.h b/src/codec_utils/RRC/CSI-ReportPeriodicityAndOffset.h
new file mode 100644 (file)
index 0000000..aa542af
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ReportPeriodicityAndOffset_H_
+#define        _CSI_ReportPeriodicityAndOffset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_ReportPeriodicityAndOffset_PR {
+       CSI_ReportPeriodicityAndOffset_PR_NOTHING,      /* No components present */
+       CSI_ReportPeriodicityAndOffset_PR_slots4,
+       CSI_ReportPeriodicityAndOffset_PR_slots5,
+       CSI_ReportPeriodicityAndOffset_PR_slots8,
+       CSI_ReportPeriodicityAndOffset_PR_slots10,
+       CSI_ReportPeriodicityAndOffset_PR_slots16,
+       CSI_ReportPeriodicityAndOffset_PR_slots20,
+       CSI_ReportPeriodicityAndOffset_PR_slots40,
+       CSI_ReportPeriodicityAndOffset_PR_slots80,
+       CSI_ReportPeriodicityAndOffset_PR_slots160,
+       CSI_ReportPeriodicityAndOffset_PR_slots320
+} CSI_ReportPeriodicityAndOffset_PR;
+
+/* CSI-ReportPeriodicityAndOffset */
+typedef struct CSI_ReportPeriodicityAndOffset {
+       CSI_ReportPeriodicityAndOffset_PR present;
+       union CSI_ReportPeriodicityAndOffset_u {
+               long     slots4;
+               long     slots5;
+               long     slots8;
+               long     slots10;
+               long     slots16;
+               long     slots20;
+               long     slots40;
+               long     slots80;
+               long     slots160;
+               long     slots320;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_ReportPeriodicityAndOffset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ReportPeriodicityAndOffset;
+extern asn_CHOICE_specifics_t asn_SPC_CSI_ReportPeriodicityAndOffset_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_ReportPeriodicityAndOffset_1[10];
+extern asn_per_constraints_t asn_PER_type_CSI_ReportPeriodicityAndOffset_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ReportPeriodicityAndOffset_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ResourceConfig.c b/src/codec_utils/RRC/CSI-ResourceConfig.c
new file mode 100644 (file)
index 0000000..7d816c5
--- /dev/null
@@ -0,0 +1,480 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ResourceConfig.h"
+
+static int
+memb_nzp_CSI_RS_ResourceSetList_constraint_4(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 <= 16)) {
+               /* 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_csi_SSB_ResourceSetList_constraint_4(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)) {
+               /* 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_csi_IM_ResourceSetList_constraint_3(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 <= 16)) {
+               /* 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;
+       }
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_nzp_CSI_RS_ResourceSetList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_ResourceSetList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_SSB_ResourceSetList_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_type_csi_SSB_ResourceSetList_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nzp_CSI_RS_ResourceSetList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_ResourceSetList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_SSB_ResourceSetList_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_csi_SSB_ResourceSetList_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_IM_ResourceSetList_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_csi_IM_ResourceSetList_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_IM_ResourceSetList_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_csi_IM_ResourceSetList_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_csi_RS_ResourceSetList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RS_ResourceSetList_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_resourceType_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceType_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nzp_CSI_RS_ResourceSetList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_ResourceSetList_specs_5 = {
+       sizeof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__nzp_CSI_RS_ResourceSetList),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__nzp_CSI_RS_ResourceSetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_ResourceSetList_5 = {
+       "nzp-CSI-RS-ResourceSetList",
+       "nzp-CSI-RS-ResourceSetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5,
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5,      /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5)
+               /sizeof(asn_DEF_nzp_CSI_RS_ResourceSetList_tags_5[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_ResourceSetList_constr_5, &asn_PER_type_nzp_CSI_RS_ResourceSetList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_ResourceSetList_5,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_ResourceSetList_specs_5     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_SSB_ResourceSetList_7[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_SSB_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_SSB_ResourceSetList_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_SSB_ResourceSetList_specs_7 = {
+       sizeof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__csi_SSB_ResourceSetList),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__csi_SSB_ResourceSetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_SSB_ResourceSetList_7 = {
+       "csi-SSB-ResourceSetList",
+       "csi-SSB-ResourceSetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_SSB_ResourceSetList_tags_7,
+       sizeof(asn_DEF_csi_SSB_ResourceSetList_tags_7)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetList_tags_7[0]) - 1, /* 1 */
+       asn_DEF_csi_SSB_ResourceSetList_tags_7, /* Same as above */
+       sizeof(asn_DEF_csi_SSB_ResourceSetList_tags_7)
+               /sizeof(asn_DEF_csi_SSB_ResourceSetList_tags_7[0]), /* 2 */
+       { &asn_OER_type_csi_SSB_ResourceSetList_constr_7, &asn_PER_type_csi_SSB_ResourceSetList_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_csi_SSB_ResourceSetList_7,
+       1,      /* Single element */
+       &asn_SPC_csi_SSB_ResourceSetList_specs_7        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_SSB_4[] = {
+       { ATF_POINTER, 2, offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB, nzp_CSI_RS_ResourceSetList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_ResourceSetList_5,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_ResourceSetList_constr_5, &asn_PER_memb_nzp_CSI_RS_ResourceSetList_constr_5,  memb_nzp_CSI_RS_ResourceSetList_constraint_4 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceSetList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB, csi_SSB_ResourceSetList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_SSB_ResourceSetList_7,
+               0,
+               { &asn_OER_memb_csi_SSB_ResourceSetList_constr_7, &asn_PER_memb_csi_SSB_ResourceSetList_constr_7,  memb_csi_SSB_ResourceSetList_constraint_4 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceSetList"
+               },
+};
+static const int asn_MAP_nzp_CSI_RS_SSB_oms_4[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_SSB_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nzp_CSI_RS_SSB_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-RS-ResourceSetList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-SSB-ResourceSetList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nzp_CSI_RS_SSB_specs_4 = {
+       sizeof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB, _asn_ctx),
+       asn_MAP_nzp_CSI_RS_SSB_tag2el_4,
+       2,      /* Count of tags in the map */
+       asn_MAP_nzp_CSI_RS_SSB_oms_4,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_SSB_4 = {
+       "nzp-CSI-RS-SSB",
+       "nzp-CSI-RS-SSB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nzp_CSI_RS_SSB_tags_4,
+       sizeof(asn_DEF_nzp_CSI_RS_SSB_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_SSB_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_SSB_tags_4,  /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_SSB_tags_4)
+               /sizeof(asn_DEF_nzp_CSI_RS_SSB_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nzp_CSI_RS_SSB_4,
+       2,      /* Elements count */
+       &asn_SPC_nzp_CSI_RS_SSB_specs_4 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_IM_ResourceSetList_9[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_CSI_IM_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_IM_ResourceSetList_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_IM_ResourceSetList_specs_9 = {
+       sizeof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__csi_IM_ResourceSetList),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList__csi_IM_ResourceSetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_IM_ResourceSetList_9 = {
+       "csi-IM-ResourceSetList",
+       "csi-IM-ResourceSetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_IM_ResourceSetList_tags_9,
+       sizeof(asn_DEF_csi_IM_ResourceSetList_tags_9)
+               /sizeof(asn_DEF_csi_IM_ResourceSetList_tags_9[0]) - 1, /* 1 */
+       asn_DEF_csi_IM_ResourceSetList_tags_9,  /* Same as above */
+       sizeof(asn_DEF_csi_IM_ResourceSetList_tags_9)
+               /sizeof(asn_DEF_csi_IM_ResourceSetList_tags_9[0]), /* 2 */
+       { &asn_OER_type_csi_IM_ResourceSetList_constr_9, &asn_PER_type_csi_IM_ResourceSetList_constr_9, SEQUENCE_OF_constraint },
+       asn_MBR_csi_IM_ResourceSetList_9,
+       1,      /* Single element */
+       &asn_SPC_csi_IM_ResourceSetList_specs_9 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_RS_ResourceSetList_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList, choice.nzp_CSI_RS_SSB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_SSB_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-SSB"
+               },
+       { ATF_POINTER, 0, offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList, choice.csi_IM_ResourceSetList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_IM_ResourceSetList_9,
+               0,
+               { &asn_OER_memb_csi_IM_ResourceSetList_constr_9, &asn_PER_memb_csi_IM_ResourceSetList_constr_9,  memb_csi_IM_ResourceSetList_constraint_3 },
+               0, 0, /* No default value */
+               "csi-IM-ResourceSetList"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_RS_ResourceSetList_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-RS-SSB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-IM-ResourceSetList */
+};
+static asn_CHOICE_specifics_t asn_SPC_csi_RS_ResourceSetList_specs_3 = {
+       sizeof(struct CSI_ResourceConfig__csi_RS_ResourceSetList),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList, _asn_ctx),
+       offsetof(struct CSI_ResourceConfig__csi_RS_ResourceSetList, present),
+       sizeof(((struct CSI_ResourceConfig__csi_RS_ResourceSetList *)0)->present),
+       asn_MAP_csi_RS_ResourceSetList_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_RS_ResourceSetList_3 = {
+       "csi-RS-ResourceSetList",
+       "csi-RS-ResourceSetList",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_csi_RS_ResourceSetList_constr_3, &asn_PER_type_csi_RS_ResourceSetList_constr_3, CHOICE_constraint },
+       asn_MBR_csi_RS_ResourceSetList_3,
+       2,      /* Elements count */
+       &asn_SPC_csi_RS_ResourceSetList_specs_3 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceType_value2enum_12[] = {
+       { 0,    9,      "aperiodic" },
+       { 1,    14,     "semiPersistent" },
+       { 2,    8,      "periodic" }
+};
+static const unsigned int asn_MAP_resourceType_enum2value_12[] = {
+       0,      /* aperiodic(0) */
+       2,      /* periodic(2) */
+       1       /* semiPersistent(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceType_specs_12 = {
+       asn_MAP_resourceType_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_resourceType_enum2value_12,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceType_tags_12[] = {
+       (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_resourceType_12 = {
+       "resourceType",
+       "resourceType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceType_tags_12,
+       sizeof(asn_DEF_resourceType_tags_12)
+               /sizeof(asn_DEF_resourceType_tags_12[0]) - 1, /* 1 */
+       asn_DEF_resourceType_tags_12,   /* Same as above */
+       sizeof(asn_DEF_resourceType_tags_12)
+               /sizeof(asn_DEF_resourceType_tags_12[0]), /* 2 */
+       { &asn_OER_type_resourceType_constr_12, &asn_PER_type_resourceType_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceType_specs_12  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_ResourceConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourceConfig, csi_ResourceConfigId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ResourceConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-ResourceConfigId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourceConfig, csi_RS_ResourceSetList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_csi_RS_ResourceSetList_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-ResourceSetList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourceConfig, bwp_Id),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourceConfig, resourceType),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceType_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceType"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_ResourceConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_ResourceConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-ResourceConfigId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RS-ResourceSetList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bwp-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* resourceType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_ResourceConfig_specs_1 = {
+       sizeof(struct CSI_ResourceConfig),
+       offsetof(struct CSI_ResourceConfig, _asn_ctx),
+       asn_MAP_CSI_ResourceConfig_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_CSI_ResourceConfig = {
+       "CSI-ResourceConfig",
+       "CSI-ResourceConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_ResourceConfig_tags_1,
+       sizeof(asn_DEF_CSI_ResourceConfig_tags_1)
+               /sizeof(asn_DEF_CSI_ResourceConfig_tags_1[0]), /* 1 */
+       asn_DEF_CSI_ResourceConfig_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CSI_ResourceConfig_tags_1)
+               /sizeof(asn_DEF_CSI_ResourceConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_ResourceConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_CSI_ResourceConfig_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ResourceConfig.h b/src/codec_utils/RRC/CSI-ResourceConfig.h
new file mode 100644 (file)
index 0000000..878917d
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ResourceConfig_H_
+#define        _CSI_ResourceConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-ResourceConfigId.h"
+#include "BWP-Id.h"
+#include <NativeEnumerated.h>
+#include "NZP-CSI-RS-ResourceSetId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "CSI-SSB-ResourceSetId.h"
+#include <constr_SEQUENCE.h>
+#include "CSI-IM-ResourceSetId.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_ResourceConfig__csi_RS_ResourceSetList_PR {
+       CSI_ResourceConfig__csi_RS_ResourceSetList_PR_NOTHING,  /* No components present */
+       CSI_ResourceConfig__csi_RS_ResourceSetList_PR_nzp_CSI_RS_SSB,
+       CSI_ResourceConfig__csi_RS_ResourceSetList_PR_csi_IM_ResourceSetList
+} CSI_ResourceConfig__csi_RS_ResourceSetList_PR;
+typedef enum CSI_ResourceConfig__resourceType {
+       CSI_ResourceConfig__resourceType_aperiodic      = 0,
+       CSI_ResourceConfig__resourceType_semiPersistent = 1,
+       CSI_ResourceConfig__resourceType_periodic       = 2
+} e_CSI_ResourceConfig__resourceType;
+
+/* CSI-ResourceConfig */
+typedef struct CSI_ResourceConfig {
+       CSI_ResourceConfigId_t   csi_ResourceConfigId;
+       struct CSI_ResourceConfig__csi_RS_ResourceSetList {
+               CSI_ResourceConfig__csi_RS_ResourceSetList_PR present;
+               union CSI_ResourceConfig__csi_RS_ResourceSetList_u {
+                       struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB {
+                               struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__nzp_CSI_RS_ResourceSetList {
+                                       A_SEQUENCE_OF(NZP_CSI_RS_ResourceSetId_t) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *nzp_CSI_RS_ResourceSetList;
+                               struct CSI_ResourceConfig__csi_RS_ResourceSetList__nzp_CSI_RS_SSB__csi_SSB_ResourceSetList {
+                                       A_SEQUENCE_OF(CSI_SSB_ResourceSetId_t) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *csi_SSB_ResourceSetList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *nzp_CSI_RS_SSB;
+                       struct CSI_ResourceConfig__csi_RS_ResourceSetList__csi_IM_ResourceSetList {
+                               A_SEQUENCE_OF(CSI_IM_ResourceSetId_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *csi_IM_ResourceSetList;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_RS_ResourceSetList;
+       BWP_Id_t         bwp_Id;
+       long     resourceType;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_ResourceConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceType_12;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ResourceConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_ResourceConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_ResourceConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ResourceConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ResourceConfigId.c b/src/codec_utils/RRC/CSI-ResourceConfigId.c
new file mode 100644 (file)
index 0000000..99b99a3
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ResourceConfigId.h"
+
+int
+CSI_ResourceConfigId_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 <= 111)) {
+               /* 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_CSI_ResourceConfigId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..111) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_ResourceConfigId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  111 }      /* (0..111) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CSI_ResourceConfigId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ResourceConfigId = {
+       "CSI-ResourceConfigId",
+       "CSI-ResourceConfigId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_ResourceConfigId_tags_1,
+       sizeof(asn_DEF_CSI_ResourceConfigId_tags_1)
+               /sizeof(asn_DEF_CSI_ResourceConfigId_tags_1[0]), /* 1 */
+       asn_DEF_CSI_ResourceConfigId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CSI_ResourceConfigId_tags_1)
+               /sizeof(asn_DEF_CSI_ResourceConfigId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_ResourceConfigId_constr_1, &asn_PER_type_CSI_ResourceConfigId_constr_1, CSI_ResourceConfigId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ResourceConfigId.h b/src/codec_utils/RRC/CSI-ResourceConfigId.h
new file mode 100644 (file)
index 0000000..94fbc37
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ResourceConfigId_H_
+#define        _CSI_ResourceConfigId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-ResourceConfigId */
+typedef long    CSI_ResourceConfigId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_ResourceConfigId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ResourceConfigId;
+asn_struct_free_f CSI_ResourceConfigId_free;
+asn_struct_print_f CSI_ResourceConfigId_print;
+asn_constr_check_f CSI_ResourceConfigId_constraint;
+ber_type_decoder_f CSI_ResourceConfigId_decode_ber;
+der_type_encoder_f CSI_ResourceConfigId_encode_der;
+xer_type_decoder_f CSI_ResourceConfigId_decode_xer;
+xer_type_encoder_f CSI_ResourceConfigId_encode_xer;
+oer_type_decoder_f CSI_ResourceConfigId_decode_oer;
+oer_type_encoder_f CSI_ResourceConfigId_encode_oer;
+per_type_decoder_f CSI_ResourceConfigId_decode_uper;
+per_type_encoder_f CSI_ResourceConfigId_encode_uper;
+per_type_decoder_f CSI_ResourceConfigId_decode_aper;
+per_type_encoder_f CSI_ResourceConfigId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ResourceConfigId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.c b/src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.c
new file mode 100644 (file)
index 0000000..feea157
--- /dev/null
@@ -0,0 +1,604 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-ResourcePeriodicityAndOffset.h"
+
+static int
+memb_slots4_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 >= 0 && value <= 3)) {
+               /* 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_slots5_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 >= 0 && value <= 4)) {
+               /* 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_slots8_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 >= 0 && value <= 7)) {
+               /* 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_slots10_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 >= 0 && value <= 9)) {
+               /* 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_slots16_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 >= 0 && 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_slots20_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 >= 0 && value <= 19)) {
+               /* 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_slots32_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 >= 0 && value <= 31)) {
+               /* 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_slots40_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 >= 0 && value <= 39)) {
+               /* 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_slots64_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 >= 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;
+       }
+}
+
+static int
+memb_slots80_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 >= 0 && value <= 79)) {
+               /* 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_slots160_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 >= 0 && value <= 159)) {
+               /* 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_slots320_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 >= 0 && value <= 319)) {
+               /* 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_slots640_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 >= 0 && value <= 639)) {
+               /* 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_slots4_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots4_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots5_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots5_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots8_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots8_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots10_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots10_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots16_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots16_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots20_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots20_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots32_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots32_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots40_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots40_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots64_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots64_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots80_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots80_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots160_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots160_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots320_constr_13 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots320_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slots640_constr_14 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slots640_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_CSI_ResourcePeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_ResourcePeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  12 }       /* (0..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_ResourcePeriodicityAndOffset_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots4),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots4_constr_2, &asn_PER_memb_slots4_constr_2,  memb_slots4_constraint_1 },
+               0, 0, /* No default value */
+               "slots4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots5),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots5_constr_3, &asn_PER_memb_slots5_constr_3,  memb_slots5_constraint_1 },
+               0, 0, /* No default value */
+               "slots5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots8),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots8_constr_4, &asn_PER_memb_slots8_constr_4,  memb_slots8_constraint_1 },
+               0, 0, /* No default value */
+               "slots8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots10),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots10_constr_5, &asn_PER_memb_slots10_constr_5,  memb_slots10_constraint_1 },
+               0, 0, /* No default value */
+               "slots10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots16),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots16_constr_6, &asn_PER_memb_slots16_constr_6,  memb_slots16_constraint_1 },
+               0, 0, /* No default value */
+               "slots16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots20),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots20_constr_7, &asn_PER_memb_slots20_constr_7,  memb_slots20_constraint_1 },
+               0, 0, /* No default value */
+               "slots20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots32),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots32_constr_8, &asn_PER_memb_slots32_constr_8,  memb_slots32_constraint_1 },
+               0, 0, /* No default value */
+               "slots32"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots40),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots40_constr_9, &asn_PER_memb_slots40_constr_9,  memb_slots40_constraint_1 },
+               0, 0, /* No default value */
+               "slots40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots64),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots64_constr_10, &asn_PER_memb_slots64_constr_10,  memb_slots64_constraint_1 },
+               0, 0, /* No default value */
+               "slots64"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots80),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots80_constr_11, &asn_PER_memb_slots80_constr_11,  memb_slots80_constraint_1 },
+               0, 0, /* No default value */
+               "slots80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots160),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots160_constr_12, &asn_PER_memb_slots160_constr_12,  memb_slots160_constraint_1 },
+               0, 0, /* No default value */
+               "slots160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots320),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots320_constr_13, &asn_PER_memb_slots320_constr_13,  memb_slots320_constraint_1 },
+               0, 0, /* No default value */
+               "slots320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_ResourcePeriodicityAndOffset, choice.slots640),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slots640_constr_14, &asn_PER_memb_slots640_constr_14,  memb_slots640_constraint_1 },
+               0, 0, /* No default value */
+               "slots640"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_ResourcePeriodicityAndOffset_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* slots4 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* slots5 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* slots8 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* slots10 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* slots16 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* slots20 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* slots32 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* slots40 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* slots64 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* slots80 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* slots160 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* slots320 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* slots640 */
+};
+asn_CHOICE_specifics_t asn_SPC_CSI_ResourcePeriodicityAndOffset_specs_1 = {
+       sizeof(struct CSI_ResourcePeriodicityAndOffset),
+       offsetof(struct CSI_ResourcePeriodicityAndOffset, _asn_ctx),
+       offsetof(struct CSI_ResourcePeriodicityAndOffset, present),
+       sizeof(((struct CSI_ResourcePeriodicityAndOffset *)0)->present),
+       asn_MAP_CSI_ResourcePeriodicityAndOffset_tag2el_1,
+       13,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_ResourcePeriodicityAndOffset = {
+       "CSI-ResourcePeriodicityAndOffset",
+       "CSI-ResourcePeriodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_CSI_ResourcePeriodicityAndOffset_constr_1, &asn_PER_type_CSI_ResourcePeriodicityAndOffset_constr_1, CHOICE_constraint },
+       asn_MBR_CSI_ResourcePeriodicityAndOffset_1,
+       13,     /* Elements count */
+       &asn_SPC_CSI_ResourcePeriodicityAndOffset_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.h b/src/codec_utils/RRC/CSI-ResourcePeriodicityAndOffset.h
new file mode 100644 (file)
index 0000000..b2ef555
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_ResourcePeriodicityAndOffset_H_
+#define        _CSI_ResourcePeriodicityAndOffset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CSI_ResourcePeriodicityAndOffset_PR {
+       CSI_ResourcePeriodicityAndOffset_PR_NOTHING,    /* No components present */
+       CSI_ResourcePeriodicityAndOffset_PR_slots4,
+       CSI_ResourcePeriodicityAndOffset_PR_slots5,
+       CSI_ResourcePeriodicityAndOffset_PR_slots8,
+       CSI_ResourcePeriodicityAndOffset_PR_slots10,
+       CSI_ResourcePeriodicityAndOffset_PR_slots16,
+       CSI_ResourcePeriodicityAndOffset_PR_slots20,
+       CSI_ResourcePeriodicityAndOffset_PR_slots32,
+       CSI_ResourcePeriodicityAndOffset_PR_slots40,
+       CSI_ResourcePeriodicityAndOffset_PR_slots64,
+       CSI_ResourcePeriodicityAndOffset_PR_slots80,
+       CSI_ResourcePeriodicityAndOffset_PR_slots160,
+       CSI_ResourcePeriodicityAndOffset_PR_slots320,
+       CSI_ResourcePeriodicityAndOffset_PR_slots640
+} CSI_ResourcePeriodicityAndOffset_PR;
+
+/* CSI-ResourcePeriodicityAndOffset */
+typedef struct CSI_ResourcePeriodicityAndOffset {
+       CSI_ResourcePeriodicityAndOffset_PR present;
+       union CSI_ResourcePeriodicityAndOffset_u {
+               long     slots4;
+               long     slots5;
+               long     slots8;
+               long     slots10;
+               long     slots16;
+               long     slots20;
+               long     slots32;
+               long     slots40;
+               long     slots64;
+               long     slots80;
+               long     slots160;
+               long     slots320;
+               long     slots640;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_ResourcePeriodicityAndOffset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_ResourcePeriodicityAndOffset;
+extern asn_CHOICE_specifics_t asn_SPC_CSI_ResourcePeriodicityAndOffset_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_ResourcePeriodicityAndOffset_1[13];
+extern asn_per_constraints_t asn_PER_type_CSI_ResourcePeriodicityAndOffset_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_ResourcePeriodicityAndOffset_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-SSB-ResourceSet.c b/src/codec_utils/RRC/CSI-SSB-ResourceSet.c
new file mode 100644 (file)
index 0000000..26315fc
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-SSB-ResourceSet.h"
+
+static int
+memb_csi_SSB_ResourceList_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 <= 64)) {
+               /* 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_csi_SSB_ResourceList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_csi_SSB_ResourceList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_csi_SSB_ResourceList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_csi_SSB_ResourceList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_csi_SSB_ResourceList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_csi_SSB_ResourceList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_csi_SSB_ResourceList_specs_3 = {
+       sizeof(struct CSI_SSB_ResourceSet__csi_SSB_ResourceList),
+       offsetof(struct CSI_SSB_ResourceSet__csi_SSB_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_SSB_ResourceList_3 = {
+       "csi-SSB-ResourceList",
+       "csi-SSB-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_csi_SSB_ResourceList_tags_3,
+       sizeof(asn_DEF_csi_SSB_ResourceList_tags_3)
+               /sizeof(asn_DEF_csi_SSB_ResourceList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_csi_SSB_ResourceList_tags_3,    /* Same as above */
+       sizeof(asn_DEF_csi_SSB_ResourceList_tags_3)
+               /sizeof(asn_DEF_csi_SSB_ResourceList_tags_3[0]), /* 2 */
+       { &asn_OER_type_csi_SSB_ResourceList_constr_3, &asn_PER_type_csi_SSB_ResourceList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_csi_SSB_ResourceList_3,
+       1,      /* Single element */
+       &asn_SPC_csi_SSB_ResourceList_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CSI_SSB_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_SSB_ResourceSet, csi_SSB_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_SSB_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_SSB_ResourceSet, csi_SSB_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_csi_SSB_ResourceList_3,
+               0,
+               { &asn_OER_memb_csi_SSB_ResourceList_constr_3, &asn_PER_memb_csi_SSB_ResourceList_constr_3,  memb_csi_SSB_ResourceList_constraint_1 },
+               0, 0, /* No default value */
+               "csi-SSB-ResourceList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_SSB_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_SSB_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-SSB-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-SSB-ResourceList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_SSB_ResourceSet_specs_1 = {
+       sizeof(struct CSI_SSB_ResourceSet),
+       offsetof(struct CSI_SSB_ResourceSet, _asn_ctx),
+       asn_MAP_CSI_SSB_ResourceSet_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_CSI_SSB_ResourceSet = {
+       "CSI-SSB-ResourceSet",
+       "CSI-SSB-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_SSB_ResourceSet_tags_1,
+       sizeof(asn_DEF_CSI_SSB_ResourceSet_tags_1)
+               /sizeof(asn_DEF_CSI_SSB_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_CSI_SSB_ResourceSet_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CSI_SSB_ResourceSet_tags_1)
+               /sizeof(asn_DEF_CSI_SSB_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_SSB_ResourceSet_1,
+       2,      /* Elements count */
+       &asn_SPC_CSI_SSB_ResourceSet_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-SSB-ResourceSet.h b/src/codec_utils/RRC/CSI-SSB-ResourceSet.h
new file mode 100644 (file)
index 0000000..8621a1c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_SSB_ResourceSet_H_
+#define        _CSI_SSB_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-SSB-ResourceSetId.h"
+#include "SSB-Index.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-SSB-ResourceSet */
+typedef struct CSI_SSB_ResourceSet {
+       CSI_SSB_ResourceSetId_t  csi_SSB_ResourceSetId;
+       struct CSI_SSB_ResourceSet__csi_SSB_ResourceList {
+               A_SEQUENCE_OF(SSB_Index_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } csi_SSB_ResourceList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_SSB_ResourceSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_SSB_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_SSB_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_SSB_ResourceSet_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_SSB_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-SSB-ResourceSetId.c b/src/codec_utils/RRC/CSI-SSB-ResourceSetId.c
new file mode 100644 (file)
index 0000000..ed4e610
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-SSB-ResourceSetId.h"
+
+int
+CSI_SSB_ResourceSetId_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_CSI_SSB_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CSI_SSB_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_CSI_SSB_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_SSB_ResourceSetId = {
+       "CSI-SSB-ResourceSetId",
+       "CSI-SSB-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CSI_SSB_ResourceSetId_tags_1,
+       sizeof(asn_DEF_CSI_SSB_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_CSI_SSB_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_CSI_SSB_ResourceSetId_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CSI_SSB_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_CSI_SSB_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_SSB_ResourceSetId_constr_1, &asn_PER_type_CSI_SSB_ResourceSetId_constr_1, CSI_SSB_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CSI-SSB-ResourceSetId.h b/src/codec_utils/RRC/CSI-SSB-ResourceSetId.h
new file mode 100644 (file)
index 0000000..728b989
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_SSB_ResourceSetId_H_
+#define        _CSI_SSB_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-SSB-ResourceSetId */
+typedef long    CSI_SSB_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CSI_SSB_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CSI_SSB_ResourceSetId;
+asn_struct_free_f CSI_SSB_ResourceSetId_free;
+asn_struct_print_f CSI_SSB_ResourceSetId_print;
+asn_constr_check_f CSI_SSB_ResourceSetId_constraint;
+ber_type_decoder_f CSI_SSB_ResourceSetId_decode_ber;
+der_type_encoder_f CSI_SSB_ResourceSetId_encode_der;
+xer_type_decoder_f CSI_SSB_ResourceSetId_decode_xer;
+xer_type_encoder_f CSI_SSB_ResourceSetId_encode_xer;
+oer_type_decoder_f CSI_SSB_ResourceSetId_decode_oer;
+oer_type_encoder_f CSI_SSB_ResourceSetId_encode_oer;
+per_type_decoder_f CSI_SSB_ResourceSetId_decode_uper;
+per_type_encoder_f CSI_SSB_ResourceSetId_encode_uper;
+per_type_decoder_f CSI_SSB_ResourceSetId_decode_aper;
+per_type_encoder_f CSI_SSB_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_SSB_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.c b/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.c
new file mode 100644 (file)
index 0000000..f4b7008
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-SemiPersistentOnPUSCH-TriggerState.h"
+
+asn_TYPE_member_t asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerState_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CSI_SemiPersistentOnPUSCH_TriggerState, associatedReportConfigInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "associatedReportConfigInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CSI_SemiPersistentOnPUSCH_TriggerState_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* associatedReportConfigInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerState_specs_1 = {
+       sizeof(struct CSI_SemiPersistentOnPUSCH_TriggerState),
+       offsetof(struct CSI_SemiPersistentOnPUSCH_TriggerState, _asn_ctx),
+       asn_MAP_CSI_SemiPersistentOnPUSCH_TriggerState_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_CSI_SemiPersistentOnPUSCH_TriggerState = {
+       "CSI-SemiPersistentOnPUSCH-TriggerState",
+       "CSI-SemiPersistentOnPUSCH-TriggerState",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1,
+       sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1)
+               /sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1[0]), /* 1 */
+       asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1)
+               /sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerState_1,
+       1,      /* Elements count */
+       &asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerState_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.h b/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerState.h
new file mode 100644 (file)
index 0000000..e863ee4
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_SemiPersistentOnPUSCH_TriggerState_H_
+#define        _CSI_SemiPersistentOnPUSCH_TriggerState_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-ReportConfigId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CSI-SemiPersistentOnPUSCH-TriggerState */
+typedef struct CSI_SemiPersistentOnPUSCH_TriggerState {
+       CSI_ReportConfigId_t     associatedReportConfigInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_SemiPersistentOnPUSCH_TriggerState_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState;
+extern asn_SEQUENCE_specifics_t asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerState_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerState_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_SemiPersistentOnPUSCH_TriggerState_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.c b/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.c
new file mode 100644 (file)
index 0000000..d4cf990
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CSI-SemiPersistentOnPUSCH-TriggerStateList.h"
+
+#include "CSI-SemiPersistentOnPUSCH-TriggerState.h"
+static asn_oer_constraints_t asn_OER_type_CSI_SemiPersistentOnPUSCH_TriggerStateList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_CSI_SemiPersistentOnPUSCH_TriggerStateList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerStateList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerState,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerStateList_specs_1 = {
+       sizeof(struct CSI_SemiPersistentOnPUSCH_TriggerStateList),
+       offsetof(struct CSI_SemiPersistentOnPUSCH_TriggerStateList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList = {
+       "CSI-SemiPersistentOnPUSCH-TriggerStateList",
+       "CSI-SemiPersistentOnPUSCH-TriggerStateList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1,
+       sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1)
+               /sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1[0]), /* 1 */
+       asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1)
+               /sizeof(asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList_tags_1[0]), /* 1 */
+       { &asn_OER_type_CSI_SemiPersistentOnPUSCH_TriggerStateList_constr_1, &asn_PER_type_CSI_SemiPersistentOnPUSCH_TriggerStateList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerStateList_1,
+       1,      /* Single element */
+       &asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerStateList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.h b/src/codec_utils/RRC/CSI-SemiPersistentOnPUSCH-TriggerStateList.h
new file mode 100644 (file)
index 0000000..99ee968
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CSI_SemiPersistentOnPUSCH_TriggerStateList_H_
+#define        _CSI_SemiPersistentOnPUSCH_TriggerStateList_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 CSI_SemiPersistentOnPUSCH_TriggerState;
+
+/* CSI-SemiPersistentOnPUSCH-TriggerStateList */
+typedef struct CSI_SemiPersistentOnPUSCH_TriggerStateList {
+       A_SEQUENCE_OF(struct CSI_SemiPersistentOnPUSCH_TriggerState) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CSI_SemiPersistentOnPUSCH_TriggerStateList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CSI_SemiPersistentOnPUSCH_TriggerStateList;
+extern asn_SET_OF_specifics_t asn_SPC_CSI_SemiPersistentOnPUSCH_TriggerStateList_specs_1;
+extern asn_TYPE_member_t asn_MBR_CSI_SemiPersistentOnPUSCH_TriggerStateList_1[1];
+extern asn_per_constraints_t asn_PER_type_CSI_SemiPersistentOnPUSCH_TriggerStateList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CSI_SemiPersistentOnPUSCH_TriggerStateList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CandidateServingFreqListNR.c b/src/codec_utils/RRC/CandidateServingFreqListNR.c
new file mode 100644 (file)
index 0000000..63ee042
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CandidateServingFreqListNR.h"
+
+static asn_oer_constraints_t asn_OER_type_CandidateServingFreqListNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_CandidateServingFreqListNR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CandidateServingFreqListNR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CandidateServingFreqListNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CandidateServingFreqListNR_specs_1 = {
+       sizeof(struct CandidateServingFreqListNR),
+       offsetof(struct CandidateServingFreqListNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CandidateServingFreqListNR = {
+       "CandidateServingFreqListNR",
+       "CandidateServingFreqListNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CandidateServingFreqListNR_tags_1,
+       sizeof(asn_DEF_CandidateServingFreqListNR_tags_1)
+               /sizeof(asn_DEF_CandidateServingFreqListNR_tags_1[0]), /* 1 */
+       asn_DEF_CandidateServingFreqListNR_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CandidateServingFreqListNR_tags_1)
+               /sizeof(asn_DEF_CandidateServingFreqListNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_CandidateServingFreqListNR_constr_1, &asn_PER_type_CandidateServingFreqListNR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CandidateServingFreqListNR_1,
+       1,      /* Single element */
+       &asn_SPC_CandidateServingFreqListNR_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CandidateServingFreqListNR.h b/src/codec_utils/RRC/CandidateServingFreqListNR.h
new file mode 100644 (file)
index 0000000..a18d534
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CandidateServingFreqListNR_H_
+#define        _CandidateServingFreqListNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CandidateServingFreqListNR */
+typedef struct CandidateServingFreqListNR {
+       A_SEQUENCE_OF(ARFCN_ValueNR_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CandidateServingFreqListNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CandidateServingFreqListNR;
+extern asn_SET_OF_specifics_t asn_SPC_CandidateServingFreqListNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_CandidateServingFreqListNR_1[1];
+extern asn_per_constraints_t asn_PER_type_CandidateServingFreqListNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CandidateServingFreqListNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CarrierFreqEUTRA.c b/src/codec_utils/RRC/CarrierFreqEUTRA.c
new file mode 100644 (file)
index 0000000..d312202
--- /dev/null
@@ -0,0 +1,337 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CarrierFreqEUTRA.h"
+
+#include "EUTRA-MultiBandInfoList.h"
+#include "EUTRA-FreqNeighCellList.h"
+#include "EUTRA-FreqBlackCellList.h"
+static int
+memb_q_RxLevMin_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 >= -70 && value <= -22)) {
+               /* 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_q_QualMin_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 >= -34 && value <= -3)) {
+               /* 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_p_MaxEUTRA_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 >= -30 && value <= 33)) {
+               /* 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_q_RxLevMin_constr_12 CC_NOTUSED = {
+       { 1, 0 }        /* (-70..-22) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMin_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -70, -22 }      /* (-70..-22) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_QualMin_constr_13 CC_NOTUSED = {
+       { 1, 0 }        /* (-34..-3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_QualMin_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -34, -3 }       /* (-34..-3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p_MaxEUTRA_constr_14 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..33) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p_MaxEUTRA_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  33 }      /* (-30..33) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_threshX_Q_15[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA__threshX_Q, threshX_HighQ),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-HighQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA__threshX_Q, threshX_LowQ),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-LowQ"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_threshX_Q_tags_15[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_threshX_Q_tag2el_15[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* threshX-HighQ */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshX-LowQ */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_threshX_Q_specs_15 = {
+       sizeof(struct CarrierFreqEUTRA__threshX_Q),
+       offsetof(struct CarrierFreqEUTRA__threshX_Q, _asn_ctx),
+       asn_MAP_threshX_Q_tag2el_15,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_threshX_Q_15 = {
+       "threshX-Q",
+       "threshX-Q",
+       &asn_OP_SEQUENCE,
+       asn_DEF_threshX_Q_tags_15,
+       sizeof(asn_DEF_threshX_Q_tags_15)
+               /sizeof(asn_DEF_threshX_Q_tags_15[0]) - 1, /* 1 */
+       asn_DEF_threshX_Q_tags_15,      /* Same as above */
+       sizeof(asn_DEF_threshX_Q_tags_15)
+               /sizeof(asn_DEF_threshX_Q_tags_15[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_threshX_Q_15,
+       2,      /* Elements count */
+       &asn_SPC_threshX_Q_specs_15     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CarrierFreqEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_POINTER, 3, offsetof(struct CarrierFreqEUTRA, eutra_multiBandInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_MultiBandInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-multiBandInfoList"
+               },
+       { ATF_POINTER, 2, offsetof(struct CarrierFreqEUTRA, eutra_FreqNeighCellList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_FreqNeighCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-FreqNeighCellList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CarrierFreqEUTRA, eutra_BlackCellList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_FreqBlackCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-BlackCellList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, allowedMeasBandwidth),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_AllowedMeasBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "allowedMeasBandwidth"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, presenceAntennaPort1),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PresenceAntennaPort1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "presenceAntennaPort1"
+               },
+       { ATF_POINTER, 2, offsetof(struct CarrierFreqEUTRA, cellReselectionPriority),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriority"
+               },
+       { ATF_POINTER, 1, offsetof(struct CarrierFreqEUTRA, cellReselectionSubPriority),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionSubPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionSubPriority"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, threshX_High),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-High"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, threshX_Low),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-Low"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, q_RxLevMin),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMin_constr_12, &asn_PER_memb_q_RxLevMin_constr_12,  memb_q_RxLevMin_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMin"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, q_QualMin),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_QualMin_constr_13, &asn_PER_memb_q_QualMin_constr_13,  memb_q_QualMin_constraint_1 },
+               0, 0, /* No default value */
+               "q-QualMin"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierFreqEUTRA, p_MaxEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p_MaxEUTRA_constr_14, &asn_PER_memb_p_MaxEUTRA_constr_14,  memb_p_MaxEUTRA_constraint_1 },
+               0, 0, /* No default value */
+               "p-MaxEUTRA"
+               },
+       { ATF_POINTER, 1, offsetof(struct CarrierFreqEUTRA, threshX_Q),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_threshX_Q_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-Q"
+               },
+};
+static const int asn_MAP_CarrierFreqEUTRA_oms_1[] = { 1, 2, 3, 6, 7, 13 };
+static const ber_tlv_tag_t asn_DEF_CarrierFreqEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CarrierFreqEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eutra-multiBandInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eutra-FreqNeighCellList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* eutra-BlackCellList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* allowedMeasBandwidth */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* presenceAntennaPort1 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* cellReselectionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* cellReselectionSubPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* threshX-High */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* threshX-Low */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* q-RxLevMin */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* q-QualMin */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* p-MaxEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 } /* threshX-Q */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CarrierFreqEUTRA_specs_1 = {
+       sizeof(struct CarrierFreqEUTRA),
+       offsetof(struct CarrierFreqEUTRA, _asn_ctx),
+       asn_MAP_CarrierFreqEUTRA_tag2el_1,
+       14,     /* Count of tags in the map */
+       asn_MAP_CarrierFreqEUTRA_oms_1, /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CarrierFreqEUTRA = {
+       "CarrierFreqEUTRA",
+       "CarrierFreqEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CarrierFreqEUTRA_tags_1,
+       sizeof(asn_DEF_CarrierFreqEUTRA_tags_1)
+               /sizeof(asn_DEF_CarrierFreqEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_CarrierFreqEUTRA_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CarrierFreqEUTRA_tags_1)
+               /sizeof(asn_DEF_CarrierFreqEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CarrierFreqEUTRA_1,
+       14,     /* Elements count */
+       &asn_SPC_CarrierFreqEUTRA_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CarrierFreqEUTRA.h b/src/codec_utils/RRC/CarrierFreqEUTRA.h
new file mode 100644 (file)
index 0000000..b5805d6
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CarrierFreqEUTRA_H_
+#define        _CarrierFreqEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include "EUTRA-AllowedMeasBandwidth.h"
+#include "EUTRA-PresenceAntennaPort1.h"
+#include "CellReselectionPriority.h"
+#include "CellReselectionSubPriority.h"
+#include "ReselectionThreshold.h"
+#include <NativeInteger.h>
+#include "ReselectionThresholdQ.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct EUTRA_MultiBandInfoList;
+struct EUTRA_FreqNeighCellList;
+struct EUTRA_FreqBlackCellList;
+
+/* CarrierFreqEUTRA */
+typedef struct CarrierFreqEUTRA {
+       ARFCN_ValueEUTRA_t       carrierFreq;
+       struct EUTRA_MultiBandInfoList  *eutra_multiBandInfoList;       /* OPTIONAL */
+       struct EUTRA_FreqNeighCellList  *eutra_FreqNeighCellList;       /* OPTIONAL */
+       struct EUTRA_FreqBlackCellList  *eutra_BlackCellList;   /* OPTIONAL */
+       EUTRA_AllowedMeasBandwidth_t     allowedMeasBandwidth;
+       EUTRA_PresenceAntennaPort1_t     presenceAntennaPort1;
+       CellReselectionPriority_t       *cellReselectionPriority;       /* OPTIONAL */
+       CellReselectionSubPriority_t    *cellReselectionSubPriority;    /* OPTIONAL */
+       ReselectionThreshold_t   threshX_High;
+       ReselectionThreshold_t   threshX_Low;
+       long     q_RxLevMin;
+       long     q_QualMin;
+       long     p_MaxEUTRA;
+       struct CarrierFreqEUTRA__threshX_Q {
+               ReselectionThresholdQ_t  threshX_HighQ;
+               ReselectionThresholdQ_t  threshX_LowQ;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *threshX_Q;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CarrierFreqEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CarrierFreqEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_CarrierFreqEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_CarrierFreqEUTRA_1[14];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CarrierFreqEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CarrierFreqListEUTRA.c b/src/codec_utils/RRC/CarrierFreqListEUTRA.c
new file mode 100644 (file)
index 0000000..20e13fe
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CarrierFreqListEUTRA.h"
+
+#include "CarrierFreqEUTRA.h"
+static asn_oer_constraints_t asn_OER_type_CarrierFreqListEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_CarrierFreqListEUTRA_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CarrierFreqListEUTRA_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CarrierFreqEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CarrierFreqListEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CarrierFreqListEUTRA_specs_1 = {
+       sizeof(struct CarrierFreqListEUTRA),
+       offsetof(struct CarrierFreqListEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CarrierFreqListEUTRA = {
+       "CarrierFreqListEUTRA",
+       "CarrierFreqListEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CarrierFreqListEUTRA_tags_1,
+       sizeof(asn_DEF_CarrierFreqListEUTRA_tags_1)
+               /sizeof(asn_DEF_CarrierFreqListEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_CarrierFreqListEUTRA_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CarrierFreqListEUTRA_tags_1)
+               /sizeof(asn_DEF_CarrierFreqListEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_CarrierFreqListEUTRA_constr_1, &asn_PER_type_CarrierFreqListEUTRA_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CarrierFreqListEUTRA_1,
+       1,      /* Single element */
+       &asn_SPC_CarrierFreqListEUTRA_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CarrierFreqListEUTRA.h b/src/codec_utils/RRC/CarrierFreqListEUTRA.h
new file mode 100644 (file)
index 0000000..34fa561
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CarrierFreqListEUTRA_H_
+#define        _CarrierFreqListEUTRA_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 CarrierFreqEUTRA;
+
+/* CarrierFreqListEUTRA */
+typedef struct CarrierFreqListEUTRA {
+       A_SEQUENCE_OF(struct CarrierFreqEUTRA) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CarrierFreqListEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CarrierFreqListEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_CarrierFreqListEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_CarrierFreqListEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_CarrierFreqListEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CarrierFreqListEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CarrierInfoNR.c b/src/codec_utils/RRC/CarrierInfoNR.c
new file mode 100644 (file)
index 0000000..8395ee9
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CarrierInfoNR.h"
+
+#include "SSB-MTC.h"
+asn_TYPE_member_t asn_MBR_CarrierInfoNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierInfoNR, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CarrierInfoNR, ssbSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbSubcarrierSpacing"
+               },
+       { ATF_POINTER, 1, offsetof(struct CarrierInfoNR, smtc),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc"
+               },
+};
+static const int asn_MAP_CarrierInfoNR_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CarrierInfoNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CarrierInfoNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ssbSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* smtc */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CarrierInfoNR_specs_1 = {
+       sizeof(struct CarrierInfoNR),
+       offsetof(struct CarrierInfoNR, _asn_ctx),
+       asn_MAP_CarrierInfoNR_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CarrierInfoNR_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CarrierInfoNR = {
+       "CarrierInfoNR",
+       "CarrierInfoNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CarrierInfoNR_tags_1,
+       sizeof(asn_DEF_CarrierInfoNR_tags_1)
+               /sizeof(asn_DEF_CarrierInfoNR_tags_1[0]), /* 1 */
+       asn_DEF_CarrierInfoNR_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CarrierInfoNR_tags_1)
+               /sizeof(asn_DEF_CarrierInfoNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CarrierInfoNR_1,
+       3,      /* Elements count */
+       &asn_SPC_CarrierInfoNR_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CarrierInfoNR.h b/src/codec_utils/RRC/CarrierInfoNR.h
new file mode 100644 (file)
index 0000000..11634bb
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CarrierInfoNR_H_
+#define        _CarrierInfoNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "SubcarrierSpacing.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SSB_MTC;
+
+/* CarrierInfoNR */
+typedef struct CarrierInfoNR {
+       ARFCN_ValueNR_t  carrierFreq;
+       SubcarrierSpacing_t      ssbSubcarrierSpacing;
+       struct SSB_MTC  *smtc;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CarrierInfoNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CarrierInfoNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_CarrierInfoNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_CarrierInfoNR_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CarrierInfoNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.c b/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.c
new file mode 100644 (file)
index 0000000..74c6aa5
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellAccessRelatedInfo-EUTRA-5GC.h"
+
+asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_EUTRA_5GC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_5GC, plmn_IdentityList_eutra_5gc),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentityList_EUTRA_5GC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-IdentityList-eutra-5gc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_5GC, trackingAreaCode_eutra_5gc),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TrackingAreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "trackingAreaCode-eutra-5gc"
+               },
+       { ATF_POINTER, 1, offsetof(struct CellAccessRelatedInfo_EUTRA_5GC, ranac_5gc),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RAN_AreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ranac-5gc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_5GC, cellIdentity_eutra_5gc),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CellIdentity_EUTRA_5GC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIdentity-eutra-5gc"
+               },
+};
+static const int asn_MAP_CellAccessRelatedInfo_EUTRA_5GC_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellAccessRelatedInfo_EUTRA_5GC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList-eutra-5gc */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trackingAreaCode-eutra-5gc */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranac-5gc */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* cellIdentity-eutra-5gc */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_EUTRA_5GC_specs_1 = {
+       sizeof(struct CellAccessRelatedInfo_EUTRA_5GC),
+       offsetof(struct CellAccessRelatedInfo_EUTRA_5GC, _asn_ctx),
+       asn_MAP_CellAccessRelatedInfo_EUTRA_5GC_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_CellAccessRelatedInfo_EUTRA_5GC_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo_EUTRA_5GC = {
+       "CellAccessRelatedInfo-EUTRA-5GC",
+       "CellAccessRelatedInfo-EUTRA-5GC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1,
+       sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1[0]), /* 1 */
+       asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1, /* Same as above */
+       sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_5GC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellAccessRelatedInfo_EUTRA_5GC_1,
+       4,      /* Elements count */
+       &asn_SPC_CellAccessRelatedInfo_EUTRA_5GC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.h b/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-5GC.h
new file mode 100644 (file)
index 0000000..05585f8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellAccessRelatedInfo_EUTRA_5GC_H_
+#define        _CellAccessRelatedInfo_EUTRA_5GC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-IdentityList-EUTRA-5GC.h"
+#include "TrackingAreaCode.h"
+#include "RAN-AreaCode.h"
+#include "CellIdentity-EUTRA-5GC.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellAccessRelatedInfo-EUTRA-5GC */
+typedef struct CellAccessRelatedInfo_EUTRA_5GC {
+       PLMN_IdentityList_EUTRA_5GC_t    plmn_IdentityList_eutra_5gc;
+       TrackingAreaCode_t       trackingAreaCode_eutra_5gc;
+       RAN_AreaCode_t  *ranac_5gc;     /* OPTIONAL */
+       CellIdentity_EUTRA_5GC_t         cellIdentity_eutra_5gc;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellAccessRelatedInfo_EUTRA_5GC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo_EUTRA_5GC;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_EUTRA_5GC_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_EUTRA_5GC_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellAccessRelatedInfo_EUTRA_5GC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.c b/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.c
new file mode 100644 (file)
index 0000000..c554a95
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellAccessRelatedInfo-EUTRA-EPC.h"
+
+static int
+memb_trackingAreaCode_eutra_epc_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 == 16)) {
+               /* 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_cellIdentity_eutra_epc_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 == 28)) {
+               /* 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_trackingAreaCode_eutra_epc_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_trackingAreaCode_eutra_epc_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellIdentity_eutra_epc_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       28      /* (SIZE(28..28)) */};
+static asn_per_constraints_t asn_PER_memb_cellIdentity_eutra_epc_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  28,  28 }      /* (SIZE(28..28)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_EUTRA_EPC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_EPC, plmn_IdentityList_eutra_epc),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentityList_EUTRA_EPC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-IdentityList-eutra-epc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_EPC, trackingAreaCode_eutra_epc),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_trackingAreaCode_eutra_epc_constr_3, &asn_PER_memb_trackingAreaCode_eutra_epc_constr_3,  memb_trackingAreaCode_eutra_epc_constraint_1 },
+               0, 0, /* No default value */
+               "trackingAreaCode-eutra-epc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo_EUTRA_EPC, cellIdentity_eutra_epc),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_cellIdentity_eutra_epc_constr_4, &asn_PER_memb_cellIdentity_eutra_epc_constr_4,  memb_cellIdentity_eutra_epc_constraint_1 },
+               0, 0, /* No default value */
+               "cellIdentity-eutra-epc"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellAccessRelatedInfo_EUTRA_EPC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList-eutra-epc */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trackingAreaCode-eutra-epc */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellIdentity-eutra-epc */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_EUTRA_EPC_specs_1 = {
+       sizeof(struct CellAccessRelatedInfo_EUTRA_EPC),
+       offsetof(struct CellAccessRelatedInfo_EUTRA_EPC, _asn_ctx),
+       asn_MAP_CellAccessRelatedInfo_EUTRA_EPC_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo_EUTRA_EPC = {
+       "CellAccessRelatedInfo-EUTRA-EPC",
+       "CellAccessRelatedInfo-EUTRA-EPC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1,
+       sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1[0]), /* 1 */
+       asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1, /* Same as above */
+       sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_EUTRA_EPC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellAccessRelatedInfo_EUTRA_EPC_1,
+       3,      /* Elements count */
+       &asn_SPC_CellAccessRelatedInfo_EUTRA_EPC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.h b/src/codec_utils/RRC/CellAccessRelatedInfo-EUTRA-EPC.h
new file mode 100644 (file)
index 0000000..9b3a255
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellAccessRelatedInfo_EUTRA_EPC_H_
+#define        _CellAccessRelatedInfo_EUTRA_EPC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-IdentityList-EUTRA-EPC.h"
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellAccessRelatedInfo-EUTRA-EPC */
+typedef struct CellAccessRelatedInfo_EUTRA_EPC {
+       PLMN_IdentityList_EUTRA_EPC_t    plmn_IdentityList_eutra_epc;
+       BIT_STRING_t     trackingAreaCode_eutra_epc;
+       BIT_STRING_t     cellIdentity_eutra_epc;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellAccessRelatedInfo_EUTRA_EPC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo_EUTRA_EPC;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_EUTRA_EPC_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_EUTRA_EPC_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellAccessRelatedInfo_EUTRA_EPC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo.c b/src/codec_utils/RRC/CellAccessRelatedInfo.c
new file mode 100644 (file)
index 0000000..193dec2
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellAccessRelatedInfo.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_cellReservedForOtherUse_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cellReservedForOtherUse_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cellReservedForOtherUse_value2enum_3[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_cellReservedForOtherUse_enum2value_3[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cellReservedForOtherUse_specs_3 = {
+       asn_MAP_cellReservedForOtherUse_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_cellReservedForOtherUse_enum2value_3,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cellReservedForOtherUse_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_cellReservedForOtherUse_3 = {
+       "cellReservedForOtherUse",
+       "cellReservedForOtherUse",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cellReservedForOtherUse_tags_3,
+       sizeof(asn_DEF_cellReservedForOtherUse_tags_3)
+               /sizeof(asn_DEF_cellReservedForOtherUse_tags_3[0]) - 1, /* 1 */
+       asn_DEF_cellReservedForOtherUse_tags_3, /* Same as above */
+       sizeof(asn_DEF_cellReservedForOtherUse_tags_3)
+               /sizeof(asn_DEF_cellReservedForOtherUse_tags_3[0]), /* 2 */
+       { &asn_OER_type_cellReservedForOtherUse_constr_3, &asn_PER_type_cellReservedForOtherUse_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cellReservedForOtherUse_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo, plmn_IdentityList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentityInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-IdentityList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CellAccessRelatedInfo, cellReservedForOtherUse),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cellReservedForOtherUse_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReservedForOtherUse"
+               },
+};
+static const int asn_MAP_CellAccessRelatedInfo_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_CellAccessRelatedInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellAccessRelatedInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellReservedForOtherUse */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_specs_1 = {
+       sizeof(struct CellAccessRelatedInfo),
+       offsetof(struct CellAccessRelatedInfo, _asn_ctx),
+       asn_MAP_CellAccessRelatedInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_CellAccessRelatedInfo_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo = {
+       "CellAccessRelatedInfo",
+       "CellAccessRelatedInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellAccessRelatedInfo_tags_1,
+       sizeof(asn_DEF_CellAccessRelatedInfo_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_tags_1[0]), /* 1 */
+       asn_DEF_CellAccessRelatedInfo_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CellAccessRelatedInfo_tags_1)
+               /sizeof(asn_DEF_CellAccessRelatedInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellAccessRelatedInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_CellAccessRelatedInfo_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellAccessRelatedInfo.h b/src/codec_utils/RRC/CellAccessRelatedInfo.h
new file mode 100644 (file)
index 0000000..7cd1df4
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellAccessRelatedInfo_H_
+#define        _CellAccessRelatedInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PLMN-IdentityInfoList.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellAccessRelatedInfo__cellReservedForOtherUse {
+       CellAccessRelatedInfo__cellReservedForOtherUse_true     = 0
+} e_CellAccessRelatedInfo__cellReservedForOtherUse;
+
+/* CellAccessRelatedInfo */
+typedef struct CellAccessRelatedInfo {
+       PLMN_IdentityInfoList_t  plmn_IdentityList;
+       long    *cellReservedForOtherUse;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellAccessRelatedInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_cellReservedForOtherUse_3;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellAccessRelatedInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellGroupConfig.c b/src/codec_utils/RRC/CellGroupConfig.c
new file mode 100644 (file)
index 0000000..a4e56d3
--- /dev/null
@@ -0,0 +1,545 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellGroupConfig.h"
+
+#include "MAC-CellGroupConfig.h"
+#include "PhysicalCellGroupConfig.h"
+#include "SpCellConfig.h"
+#include "RLC-BearerConfig.h"
+#include "SCellConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_rlc_BearerToAddModList_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 <= 32)) {
+               /* 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_rlc_BearerToReleaseList_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 <= 32)) {
+               /* 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_sCellToAddModList_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 <= 31)) {
+               /* 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_sCellToReleaseList_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 <= 31)) {
+               /* 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_rlc_BearerToAddModList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_rlc_BearerToAddModList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rlc_BearerToReleaseList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_rlc_BearerToReleaseList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCellToAddModList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_type_sCellToAddModList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCellToReleaseList_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_type_sCellToReleaseList_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportUplinkTxDirectCurrent_v1530_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportUplinkTxDirectCurrent_v1530_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rlc_BearerToAddModList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_rlc_BearerToAddModList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rlc_BearerToReleaseList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_rlc_BearerToReleaseList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCellToAddModList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_memb_sCellToAddModList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCellToReleaseList_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_memb_sCellToReleaseList_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_rlc_BearerToAddModList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RLC_BearerConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rlc_BearerToAddModList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rlc_BearerToAddModList_specs_3 = {
+       sizeof(struct CellGroupConfig__rlc_BearerToAddModList),
+       offsetof(struct CellGroupConfig__rlc_BearerToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rlc_BearerToAddModList_3 = {
+       "rlc-BearerToAddModList",
+       "rlc-BearerToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rlc_BearerToAddModList_tags_3,
+       sizeof(asn_DEF_rlc_BearerToAddModList_tags_3)
+               /sizeof(asn_DEF_rlc_BearerToAddModList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_rlc_BearerToAddModList_tags_3,  /* Same as above */
+       sizeof(asn_DEF_rlc_BearerToAddModList_tags_3)
+               /sizeof(asn_DEF_rlc_BearerToAddModList_tags_3[0]), /* 2 */
+       { &asn_OER_type_rlc_BearerToAddModList_constr_3, &asn_PER_type_rlc_BearerToAddModList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_rlc_BearerToAddModList_3,
+       1,      /* Single element */
+       &asn_SPC_rlc_BearerToAddModList_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rlc_BearerToReleaseList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_LogicalChannelIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rlc_BearerToReleaseList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rlc_BearerToReleaseList_specs_5 = {
+       sizeof(struct CellGroupConfig__rlc_BearerToReleaseList),
+       offsetof(struct CellGroupConfig__rlc_BearerToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rlc_BearerToReleaseList_5 = {
+       "rlc-BearerToReleaseList",
+       "rlc-BearerToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rlc_BearerToReleaseList_tags_5,
+       sizeof(asn_DEF_rlc_BearerToReleaseList_tags_5)
+               /sizeof(asn_DEF_rlc_BearerToReleaseList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_rlc_BearerToReleaseList_tags_5, /* Same as above */
+       sizeof(asn_DEF_rlc_BearerToReleaseList_tags_5)
+               /sizeof(asn_DEF_rlc_BearerToReleaseList_tags_5[0]), /* 2 */
+       { &asn_OER_type_rlc_BearerToReleaseList_constr_5, &asn_PER_type_rlc_BearerToReleaseList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_rlc_BearerToReleaseList_5,
+       1,      /* Single element */
+       &asn_SPC_rlc_BearerToReleaseList_specs_5        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCellToAddModList_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCellToAddModList_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCellToAddModList_specs_10 = {
+       sizeof(struct CellGroupConfig__sCellToAddModList),
+       offsetof(struct CellGroupConfig__sCellToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCellToAddModList_10 = {
+       "sCellToAddModList",
+       "sCellToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCellToAddModList_tags_10,
+       sizeof(asn_DEF_sCellToAddModList_tags_10)
+               /sizeof(asn_DEF_sCellToAddModList_tags_10[0]) - 1, /* 1 */
+       asn_DEF_sCellToAddModList_tags_10,      /* Same as above */
+       sizeof(asn_DEF_sCellToAddModList_tags_10)
+               /sizeof(asn_DEF_sCellToAddModList_tags_10[0]), /* 2 */
+       { &asn_OER_type_sCellToAddModList_constr_10, &asn_PER_type_sCellToAddModList_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_sCellToAddModList_10,
+       1,      /* Single element */
+       &asn_SPC_sCellToAddModList_specs_10     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCellToReleaseList_12[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCellToReleaseList_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCellToReleaseList_specs_12 = {
+       sizeof(struct CellGroupConfig__sCellToReleaseList),
+       offsetof(struct CellGroupConfig__sCellToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCellToReleaseList_12 = {
+       "sCellToReleaseList",
+       "sCellToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCellToReleaseList_tags_12,
+       sizeof(asn_DEF_sCellToReleaseList_tags_12)
+               /sizeof(asn_DEF_sCellToReleaseList_tags_12[0]) - 1, /* 1 */
+       asn_DEF_sCellToReleaseList_tags_12,     /* Same as above */
+       sizeof(asn_DEF_sCellToReleaseList_tags_12)
+               /sizeof(asn_DEF_sCellToReleaseList_tags_12[0]), /* 2 */
+       { &asn_OER_type_sCellToReleaseList_constr_12, &asn_PER_type_sCellToReleaseList_constr_12, SEQUENCE_OF_constraint },
+       asn_MBR_sCellToReleaseList_12,
+       1,      /* Single element */
+       &asn_SPC_sCellToReleaseList_specs_12    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportUplinkTxDirectCurrent_v1530_value2enum_16[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_reportUplinkTxDirectCurrent_v1530_enum2value_16[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportUplinkTxDirectCurrent_v1530_specs_16 = {
+       asn_MAP_reportUplinkTxDirectCurrent_v1530_value2enum_16,        /* "tag" => N; sorted by tag */
+       asn_MAP_reportUplinkTxDirectCurrent_v1530_enum2value_16,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16[] = {
+       (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_reportUplinkTxDirectCurrent_v1530_16 = {
+       "reportUplinkTxDirectCurrent-v1530",
+       "reportUplinkTxDirectCurrent-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16,
+       sizeof(asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16)
+               /sizeof(asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16[0]) - 1, /* 1 */
+       asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16,      /* Same as above */
+       sizeof(asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16)
+               /sizeof(asn_DEF_reportUplinkTxDirectCurrent_v1530_tags_16[0]), /* 2 */
+       { &asn_OER_type_reportUplinkTxDirectCurrent_v1530_constr_16, &asn_PER_type_reportUplinkTxDirectCurrent_v1530_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportUplinkTxDirectCurrent_v1530_specs_16     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_15[] = {
+       { ATF_POINTER, 1, offsetof(struct CellGroupConfig__ext1, reportUplinkTxDirectCurrent_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportUplinkTxDirectCurrent_v1530_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportUplinkTxDirectCurrent-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_15[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_15[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_15[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportUplinkTxDirectCurrent-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_15 = {
+       sizeof(struct CellGroupConfig__ext1),
+       offsetof(struct CellGroupConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_15,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_15,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_15 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_15,
+       sizeof(asn_DEF_ext1_tags_15)
+               /sizeof(asn_DEF_ext1_tags_15[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_15,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_15)
+               /sizeof(asn_DEF_ext1_tags_15[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_15,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_15  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_CellGroupConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellGroupConfig, cellGroupId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellGroupId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellGroupId"
+               },
+       { ATF_POINTER, 8, offsetof(struct CellGroupConfig, rlc_BearerToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rlc_BearerToAddModList_3,
+               0,
+               { &asn_OER_memb_rlc_BearerToAddModList_constr_3, &asn_PER_memb_rlc_BearerToAddModList_constr_3,  memb_rlc_BearerToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "rlc-BearerToAddModList"
+               },
+       { ATF_POINTER, 7, offsetof(struct CellGroupConfig, rlc_BearerToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_rlc_BearerToReleaseList_5,
+               0,
+               { &asn_OER_memb_rlc_BearerToReleaseList_constr_5, &asn_PER_memb_rlc_BearerToReleaseList_constr_5,  memb_rlc_BearerToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "rlc-BearerToReleaseList"
+               },
+       { ATF_POINTER, 6, offsetof(struct CellGroupConfig, mac_CellGroupConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MAC_CellGroupConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-CellGroupConfig"
+               },
+       { ATF_POINTER, 5, offsetof(struct CellGroupConfig, physicalCellGroupConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysicalCellGroupConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physicalCellGroupConfig"
+               },
+       { ATF_POINTER, 4, offsetof(struct CellGroupConfig, spCellConfig),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SpCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spCellConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct CellGroupConfig, sCellToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_sCellToAddModList_10,
+               0,
+               { &asn_OER_memb_sCellToAddModList_constr_10, &asn_PER_memb_sCellToAddModList_constr_10,  memb_sCellToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "sCellToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct CellGroupConfig, sCellToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_sCellToReleaseList_12,
+               0,
+               { &asn_OER_memb_sCellToReleaseList_constr_12, &asn_PER_memb_sCellToReleaseList_constr_12,  memb_sCellToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "sCellToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct CellGroupConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_ext1_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_CellGroupConfig_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
+static const ber_tlv_tag_t asn_DEF_CellGroupConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellGroupConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellGroupId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rlc-BearerToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-BearerToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* mac-CellGroupConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* physicalCellGroupConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* spCellConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sCellToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sCellToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* ext1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_CellGroupConfig_specs_1 = {
+       sizeof(struct CellGroupConfig),
+       offsetof(struct CellGroupConfig, _asn_ctx),
+       asn_MAP_CellGroupConfig_tag2el_1,
+       9,      /* Count of tags in the map */
+       asn_MAP_CellGroupConfig_oms_1,  /* Optional members */
+       7, 1,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellGroupConfig = {
+       "CellGroupConfig",
+       "CellGroupConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellGroupConfig_tags_1,
+       sizeof(asn_DEF_CellGroupConfig_tags_1)
+               /sizeof(asn_DEF_CellGroupConfig_tags_1[0]), /* 1 */
+       asn_DEF_CellGroupConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_CellGroupConfig_tags_1)
+               /sizeof(asn_DEF_CellGroupConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellGroupConfig_1,
+       9,      /* Elements count */
+       &asn_SPC_CellGroupConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellGroupConfig.h b/src/codec_utils/RRC/CellGroupConfig.h
new file mode 100644 (file)
index 0000000..a159f2b
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellGroupConfig_H_
+#define        _CellGroupConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellGroupId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "LogicalChannelIdentity.h"
+#include "SCellIndex.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellGroupConfig__ext1__reportUplinkTxDirectCurrent_v1530 {
+       CellGroupConfig__ext1__reportUplinkTxDirectCurrent_v1530_true   = 0
+} e_CellGroupConfig__ext1__reportUplinkTxDirectCurrent_v1530;
+
+/* Forward declarations */
+struct MAC_CellGroupConfig;
+struct PhysicalCellGroupConfig;
+struct SpCellConfig;
+struct RLC_BearerConfig;
+struct SCellConfig;
+
+/* CellGroupConfig */
+typedef struct CellGroupConfig {
+       CellGroupId_t    cellGroupId;
+       struct CellGroupConfig__rlc_BearerToAddModList {
+               A_SEQUENCE_OF(struct RLC_BearerConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rlc_BearerToAddModList;
+       struct CellGroupConfig__rlc_BearerToReleaseList {
+               A_SEQUENCE_OF(LogicalChannelIdentity_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rlc_BearerToReleaseList;
+       struct MAC_CellGroupConfig      *mac_CellGroupConfig;   /* OPTIONAL */
+       struct PhysicalCellGroupConfig  *physicalCellGroupConfig;       /* OPTIONAL */
+       struct SpCellConfig     *spCellConfig;  /* OPTIONAL */
+       struct CellGroupConfig__sCellToAddModList {
+               A_SEQUENCE_OF(struct SCellConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sCellToAddModList;
+       struct CellGroupConfig__sCellToReleaseList {
+               A_SEQUENCE_OF(SCellIndex_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sCellToReleaseList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct CellGroupConfig__ext1 {
+               long    *reportUplinkTxDirectCurrent_v1530;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellGroupConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportUplinkTxDirectCurrent_v1530_16;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CellGroupConfig;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellGroupConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellGroupId.c b/src/codec_utils/RRC/CellGroupId.c
new file mode 100644 (file)
index 0000000..b74b70f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellGroupId.h"
+
+int
+CellGroupId_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_CellGroupId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CellGroupId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CellGroupId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CellGroupId = {
+       "CellGroupId",
+       "CellGroupId",
+       &asn_OP_NativeInteger,
+       asn_DEF_CellGroupId_tags_1,
+       sizeof(asn_DEF_CellGroupId_tags_1)
+               /sizeof(asn_DEF_CellGroupId_tags_1[0]), /* 1 */
+       asn_DEF_CellGroupId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_CellGroupId_tags_1)
+               /sizeof(asn_DEF_CellGroupId_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellGroupId_constr_1, &asn_PER_type_CellGroupId_constr_1, CellGroupId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CellGroupId.h b/src/codec_utils/RRC/CellGroupId.h
new file mode 100644 (file)
index 0000000..1fb0375
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellGroupId_H_
+#define        _CellGroupId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellGroupId */
+typedef long    CellGroupId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CellGroupId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CellGroupId;
+asn_struct_free_f CellGroupId_free;
+asn_struct_print_f CellGroupId_print;
+asn_constr_check_f CellGroupId_constraint;
+ber_type_decoder_f CellGroupId_decode_ber;
+der_type_encoder_f CellGroupId_encode_der;
+xer_type_decoder_f CellGroupId_decode_xer;
+xer_type_encoder_f CellGroupId_encode_xer;
+oer_type_decoder_f CellGroupId_decode_oer;
+oer_type_encoder_f CellGroupId_encode_oer;
+per_type_decoder_f CellGroupId_decode_uper;
+per_type_encoder_f CellGroupId_encode_uper;
+per_type_decoder_f CellGroupId_decode_aper;
+per_type_encoder_f CellGroupId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellGroupId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellIdentity-EUTRA-5GC.c b/src/codec_utils/RRC/CellIdentity-EUTRA-5GC.c
new file mode 100644 (file)
index 0000000..f9dd180
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellIdentity-EUTRA-5GC.h"
+
+static int
+memb_cellIdentity_EUTRA_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 == 28)) {
+               /* 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_cellId_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 <= 12)) {
+               /* 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_cellIdentity_EUTRA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       28      /* (SIZE(28..28)) */};
+static asn_per_constraints_t asn_PER_memb_cellIdentity_EUTRA_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  28,  28 }      /* (SIZE(28..28)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellId_index_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cellId_index_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_CellIdentity_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CellIdentity_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CellIdentity_EUTRA_5GC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellIdentity_EUTRA_5GC, choice.cellIdentity_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_cellIdentity_EUTRA_constr_2, &asn_PER_memb_cellIdentity_EUTRA_constr_2,  memb_cellIdentity_EUTRA_constraint_1 },
+               0, 0, /* No default value */
+               "cellIdentity-EUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellIdentity_EUTRA_5GC, choice.cellId_index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cellId_index_constr_3, &asn_PER_memb_cellId_index_constr_3,  memb_cellId_index_constraint_1 },
+               0, 0, /* No default value */
+               "cellId-index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellIdentity_EUTRA_5GC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdentity-EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellId-index */
+};
+asn_CHOICE_specifics_t asn_SPC_CellIdentity_EUTRA_5GC_specs_1 = {
+       sizeof(struct CellIdentity_EUTRA_5GC),
+       offsetof(struct CellIdentity_EUTRA_5GC, _asn_ctx),
+       offsetof(struct CellIdentity_EUTRA_5GC, present),
+       sizeof(((struct CellIdentity_EUTRA_5GC *)0)->present),
+       asn_MAP_CellIdentity_EUTRA_5GC_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_CellIdentity_EUTRA_5GC = {
+       "CellIdentity-EUTRA-5GC",
+       "CellIdentity-EUTRA-5GC",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_CellIdentity_EUTRA_5GC_constr_1, &asn_PER_type_CellIdentity_EUTRA_5GC_constr_1, CHOICE_constraint },
+       asn_MBR_CellIdentity_EUTRA_5GC_1,
+       2,      /* Elements count */
+       &asn_SPC_CellIdentity_EUTRA_5GC_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellIdentity-EUTRA-5GC.h b/src/codec_utils/RRC/CellIdentity-EUTRA-5GC.h
new file mode 100644 (file)
index 0000000..58747f9
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellIdentity_EUTRA_5GC_H_
+#define        _CellIdentity_EUTRA_5GC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellIdentity_EUTRA_5GC_PR {
+       CellIdentity_EUTRA_5GC_PR_NOTHING,      /* No components present */
+       CellIdentity_EUTRA_5GC_PR_cellIdentity_EUTRA,
+       CellIdentity_EUTRA_5GC_PR_cellId_index
+} CellIdentity_EUTRA_5GC_PR;
+
+/* CellIdentity-EUTRA-5GC */
+typedef struct CellIdentity_EUTRA_5GC {
+       CellIdentity_EUTRA_5GC_PR present;
+       union CellIdentity_EUTRA_5GC_u {
+               BIT_STRING_t     cellIdentity_EUTRA;
+               long     cellId_index;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellIdentity_EUTRA_5GC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellIdentity_EUTRA_5GC;
+extern asn_CHOICE_specifics_t asn_SPC_CellIdentity_EUTRA_5GC_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellIdentity_EUTRA_5GC_1[2];
+extern asn_per_constraints_t asn_PER_type_CellIdentity_EUTRA_5GC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellIdentity_EUTRA_5GC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellIdentity.c b/src/codec_utils/RRC/CellIdentity.c
new file mode 100644 (file)
index 0000000..a5337be
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellIdentity.h"
+
+int
+CellIdentity_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_CellIdentity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       36      /* (SIZE(36..36)) */};
+asn_per_constraints_t asn_PER_type_CellIdentity_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_CellIdentity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CellIdentity = {
+       "CellIdentity",
+       "CellIdentity",
+       &asn_OP_BIT_STRING,
+       asn_DEF_CellIdentity_tags_1,
+       sizeof(asn_DEF_CellIdentity_tags_1)
+               /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
+       asn_DEF_CellIdentity_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CellIdentity_tags_1)
+               /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellIdentity_constr_1, &asn_PER_type_CellIdentity_constr_1, CellIdentity_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellIdentity.h b/src/codec_utils/RRC/CellIdentity.h
new file mode 100644 (file)
index 0000000..5c9e2a5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellIdentity_H_
+#define        _CellIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellIdentity */
+typedef BIT_STRING_t    CellIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CellIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CellIdentity;
+asn_struct_free_f CellIdentity_free;
+asn_struct_print_f CellIdentity_print;
+asn_constr_check_f CellIdentity_constraint;
+ber_type_decoder_f CellIdentity_decode_ber;
+der_type_encoder_f CellIdentity_encode_der;
+xer_type_decoder_f CellIdentity_decode_xer;
+xer_type_encoder_f CellIdentity_encode_xer;
+oer_type_decoder_f CellIdentity_decode_oer;
+oer_type_encoder_f CellIdentity_encode_oer;
+per_type_decoder_f CellIdentity_decode_uper;
+per_type_encoder_f CellIdentity_encode_uper;
+per_type_decoder_f CellIdentity_decode_aper;
+per_type_encoder_f CellIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellIdentity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellReselectionPriorities.c b/src/codec_utils/RRC/CellReselectionPriorities.c
new file mode 100644 (file)
index 0000000..aba6638
--- /dev/null
@@ -0,0 +1,135 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellReselectionPriorities.h"
+
+#include "FreqPriorityListEUTRA.h"
+#include "FreqPriorityListNR.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_t320_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t320_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_t320_value2enum_4[] = {
+       { 0,    4,      "min5" },
+       { 1,    5,      "min10" },
+       { 2,    5,      "min20" },
+       { 3,    5,      "min30" },
+       { 4,    5,      "min60" },
+       { 5,    6,      "min120" },
+       { 6,    6,      "min180" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_t320_enum2value_4[] = {
+       1,      /* min10(1) */
+       5,      /* min120(5) */
+       6,      /* min180(6) */
+       2,      /* min20(2) */
+       3,      /* min30(3) */
+       0,      /* min5(0) */
+       4,      /* min60(4) */
+       7       /* spare1(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t320_specs_4 = {
+       asn_MAP_t320_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_t320_enum2value_4,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t320_tags_4[] = {
+       (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_t320_4 = {
+       "t320",
+       "t320",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t320_tags_4,
+       sizeof(asn_DEF_t320_tags_4)
+               /sizeof(asn_DEF_t320_tags_4[0]) - 1, /* 1 */
+       asn_DEF_t320_tags_4,    /* Same as above */
+       sizeof(asn_DEF_t320_tags_4)
+               /sizeof(asn_DEF_t320_tags_4[0]), /* 2 */
+       { &asn_OER_type_t320_constr_4, &asn_PER_type_t320_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t320_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CellReselectionPriorities_1[] = {
+       { ATF_POINTER, 3, offsetof(struct CellReselectionPriorities, freqPriorityListEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqPriorityListEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqPriorityListEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct CellReselectionPriorities, freqPriorityListNR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqPriorityListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqPriorityListNR"
+               },
+       { ATF_POINTER, 1, offsetof(struct CellReselectionPriorities, t320),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t320_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t320"
+               },
+};
+static const int asn_MAP_CellReselectionPriorities_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CellReselectionPriorities_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellReselectionPriorities_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqPriorityListEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* freqPriorityListNR */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* t320 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellReselectionPriorities_specs_1 = {
+       sizeof(struct CellReselectionPriorities),
+       offsetof(struct CellReselectionPriorities, _asn_ctx),
+       asn_MAP_CellReselectionPriorities_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CellReselectionPriorities_oms_1,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellReselectionPriorities = {
+       "CellReselectionPriorities",
+       "CellReselectionPriorities",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellReselectionPriorities_tags_1,
+       sizeof(asn_DEF_CellReselectionPriorities_tags_1)
+               /sizeof(asn_DEF_CellReselectionPriorities_tags_1[0]), /* 1 */
+       asn_DEF_CellReselectionPriorities_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CellReselectionPriorities_tags_1)
+               /sizeof(asn_DEF_CellReselectionPriorities_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellReselectionPriorities_1,
+       3,      /* Elements count */
+       &asn_SPC_CellReselectionPriorities_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellReselectionPriorities.h b/src/codec_utils/RRC/CellReselectionPriorities.h
new file mode 100644 (file)
index 0000000..6809478
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellReselectionPriorities_H_
+#define        _CellReselectionPriorities_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellReselectionPriorities__t320 {
+       CellReselectionPriorities__t320_min5    = 0,
+       CellReselectionPriorities__t320_min10   = 1,
+       CellReselectionPriorities__t320_min20   = 2,
+       CellReselectionPriorities__t320_min30   = 3,
+       CellReselectionPriorities__t320_min60   = 4,
+       CellReselectionPriorities__t320_min120  = 5,
+       CellReselectionPriorities__t320_min180  = 6,
+       CellReselectionPriorities__t320_spare1  = 7
+} e_CellReselectionPriorities__t320;
+
+/* Forward declarations */
+struct FreqPriorityListEUTRA;
+struct FreqPriorityListNR;
+
+/* CellReselectionPriorities */
+typedef struct CellReselectionPriorities {
+       struct FreqPriorityListEUTRA    *freqPriorityListEUTRA; /* OPTIONAL */
+       struct FreqPriorityListNR       *freqPriorityListNR;    /* OPTIONAL */
+       long    *t320;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellReselectionPriorities_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_t320_4;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CellReselectionPriorities;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellReselectionPriorities_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellReselectionPriorities_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellReselectionPriorities_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellReselectionPriority.c b/src/codec_utils/RRC/CellReselectionPriority.c
new file mode 100644 (file)
index 0000000..2ebee62
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellReselectionPriority.h"
+
+int
+CellReselectionPriority_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 <= 7)) {
+               /* 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_CellReselectionPriority_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_CellReselectionPriority_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_CellReselectionPriority_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CellReselectionPriority = {
+       "CellReselectionPriority",
+       "CellReselectionPriority",
+       &asn_OP_NativeInteger,
+       asn_DEF_CellReselectionPriority_tags_1,
+       sizeof(asn_DEF_CellReselectionPriority_tags_1)
+               /sizeof(asn_DEF_CellReselectionPriority_tags_1[0]), /* 1 */
+       asn_DEF_CellReselectionPriority_tags_1, /* Same as above */
+       sizeof(asn_DEF_CellReselectionPriority_tags_1)
+               /sizeof(asn_DEF_CellReselectionPriority_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellReselectionPriority_constr_1, &asn_PER_type_CellReselectionPriority_constr_1, CellReselectionPriority_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/CellReselectionPriority.h b/src/codec_utils/RRC/CellReselectionPriority.h
new file mode 100644 (file)
index 0000000..b7d02bb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellReselectionPriority_H_
+#define        _CellReselectionPriority_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellReselectionPriority */
+typedef long    CellReselectionPriority_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CellReselectionPriority_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CellReselectionPriority;
+asn_struct_free_f CellReselectionPriority_free;
+asn_struct_print_f CellReselectionPriority_print;
+asn_constr_check_f CellReselectionPriority_constraint;
+ber_type_decoder_f CellReselectionPriority_decode_ber;
+der_type_encoder_f CellReselectionPriority_encode_der;
+xer_type_decoder_f CellReselectionPriority_decode_xer;
+xer_type_encoder_f CellReselectionPriority_encode_xer;
+oer_type_decoder_f CellReselectionPriority_decode_oer;
+oer_type_encoder_f CellReselectionPriority_encode_oer;
+per_type_decoder_f CellReselectionPriority_decode_uper;
+per_type_encoder_f CellReselectionPriority_encode_uper;
+per_type_decoder_f CellReselectionPriority_decode_aper;
+per_type_encoder_f CellReselectionPriority_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellReselectionPriority_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellReselectionSubPriority.c b/src/codec_utils/RRC/CellReselectionSubPriority.c
new file mode 100644 (file)
index 0000000..447c168
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellReselectionSubPriority.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_CellReselectionSubPriority_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CellReselectionSubPriority_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CellReselectionSubPriority_value2enum_1[] = {
+       { 0,    5,      "oDot2" },
+       { 1,    5,      "oDot4" },
+       { 2,    5,      "oDot6" },
+       { 3,    5,      "oDot8" }
+};
+static const unsigned int asn_MAP_CellReselectionSubPriority_enum2value_1[] = {
+       0,      /* oDot2(0) */
+       1,      /* oDot4(1) */
+       2,      /* oDot6(2) */
+       3       /* oDot8(3) */
+};
+const asn_INTEGER_specifics_t asn_SPC_CellReselectionSubPriority_specs_1 = {
+       asn_MAP_CellReselectionSubPriority_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_CellReselectionSubPriority_enum2value_1,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_CellReselectionSubPriority_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CellReselectionSubPriority = {
+       "CellReselectionSubPriority",
+       "CellReselectionSubPriority",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_CellReselectionSubPriority_tags_1,
+       sizeof(asn_DEF_CellReselectionSubPriority_tags_1)
+               /sizeof(asn_DEF_CellReselectionSubPriority_tags_1[0]), /* 1 */
+       asn_DEF_CellReselectionSubPriority_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CellReselectionSubPriority_tags_1)
+               /sizeof(asn_DEF_CellReselectionSubPriority_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellReselectionSubPriority_constr_1, &asn_PER_type_CellReselectionSubPriority_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_CellReselectionSubPriority_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellReselectionSubPriority.h b/src/codec_utils/RRC/CellReselectionSubPriority.h
new file mode 100644 (file)
index 0000000..0da1a5c
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellReselectionSubPriority_H_
+#define        _CellReselectionSubPriority_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellReselectionSubPriority {
+       CellReselectionSubPriority_oDot2        = 0,
+       CellReselectionSubPriority_oDot4        = 1,
+       CellReselectionSubPriority_oDot6        = 2,
+       CellReselectionSubPriority_oDot8        = 3
+} e_CellReselectionSubPriority;
+
+/* CellReselectionSubPriority */
+typedef long    CellReselectionSubPriority_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CellReselectionSubPriority_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CellReselectionSubPriority;
+extern const asn_INTEGER_specifics_t asn_SPC_CellReselectionSubPriority_specs_1;
+asn_struct_free_f CellReselectionSubPriority_free;
+asn_struct_print_f CellReselectionSubPriority_print;
+asn_constr_check_f CellReselectionSubPriority_constraint;
+ber_type_decoder_f CellReselectionSubPriority_decode_ber;
+der_type_encoder_f CellReselectionSubPriority_encode_der;
+xer_type_decoder_f CellReselectionSubPriority_decode_xer;
+xer_type_encoder_f CellReselectionSubPriority_encode_xer;
+oer_type_decoder_f CellReselectionSubPriority_decode_oer;
+oer_type_encoder_f CellReselectionSubPriority_encode_oer;
+per_type_decoder_f CellReselectionSubPriority_decode_uper;
+per_type_encoder_f CellReselectionSubPriority_encode_uper;
+per_type_decoder_f CellReselectionSubPriority_decode_aper;
+per_type_encoder_f CellReselectionSubPriority_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellReselectionSubPriority_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellsToAddMod.c b/src/codec_utils/RRC/CellsToAddMod.c
new file mode 100644 (file)
index 0000000..37e66d1
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellsToAddMod.h"
+
+asn_TYPE_member_t asn_MBR_CellsToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellsToAddMod, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellsToAddMod, cellIndividualOffset),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIndividualOffset"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CellsToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CellsToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellIndividualOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CellsToAddMod_specs_1 = {
+       sizeof(struct CellsToAddMod),
+       offsetof(struct CellsToAddMod, _asn_ctx),
+       asn_MAP_CellsToAddMod_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CellsToAddMod = {
+       "CellsToAddMod",
+       "CellsToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CellsToAddMod_tags_1,
+       sizeof(asn_DEF_CellsToAddMod_tags_1)
+               /sizeof(asn_DEF_CellsToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_CellsToAddMod_tags_1,   /* Same as above */
+       sizeof(asn_DEF_CellsToAddMod_tags_1)
+               /sizeof(asn_DEF_CellsToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CellsToAddMod_1,
+       2,      /* Elements count */
+       &asn_SPC_CellsToAddMod_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellsToAddMod.h b/src/codec_utils/RRC/CellsToAddMod.h
new file mode 100644 (file)
index 0000000..bba80c6
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellsToAddMod_H_
+#define        _CellsToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "Q-OffsetRangeList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CellsToAddMod */
+typedef struct CellsToAddMod {
+       PhysCellId_t     physCellId;
+       Q_OffsetRangeList_t      cellIndividualOffset;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellsToAddMod_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellsToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellsToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellsToAddMod_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellsToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellsToAddModList.c b/src/codec_utils/RRC/CellsToAddModList.c
new file mode 100644 (file)
index 0000000..507f98a
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellsToAddModList.h"
+
+#include "CellsToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_CellsToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_CellsToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_CellsToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CellsToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CellsToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CellsToAddModList_specs_1 = {
+       sizeof(struct CellsToAddModList),
+       offsetof(struct CellsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_CellsToAddModList = {
+       "CellsToAddModList",
+       "CellsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CellsToAddModList_tags_1,
+       sizeof(asn_DEF_CellsToAddModList_tags_1)
+               /sizeof(asn_DEF_CellsToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_CellsToAddModList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_CellsToAddModList_tags_1)
+               /sizeof(asn_DEF_CellsToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellsToAddModList_constr_1, &asn_PER_type_CellsToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CellsToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_CellsToAddModList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellsToAddModList.h b/src/codec_utils/RRC/CellsToAddModList.h
new file mode 100644 (file)
index 0000000..31659db
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellsToAddModList_H_
+#define        _CellsToAddModList_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 CellsToAddMod;
+
+/* CellsToAddModList */
+typedef struct CellsToAddModList {
+       A_SEQUENCE_OF(struct CellsToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellsToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellsToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_CellsToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellsToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_CellsToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellsToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CellsTriggeredList.c b/src/codec_utils/RRC/CellsTriggeredList.c
new file mode 100644 (file)
index 0000000..49d5766
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CellsTriggeredList.h"
+
+static asn_oer_constraints_t asn_OER_type_Member_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_Member_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_CellsTriggeredList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_CellsTriggeredList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CellsTriggeredList__Member, choice.physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CellsTriggeredList__Member, choice.physCellIdEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellIdEUTRA"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* physCellIdEUTRA */
+};
+static asn_CHOICE_specifics_t asn_SPC_Member_specs_2 = {
+       sizeof(struct CellsTriggeredList__Member),
+       offsetof(struct CellsTriggeredList__Member, _asn_ctx),
+       offsetof(struct CellsTriggeredList__Member, present),
+       sizeof(((struct CellsTriggeredList__Member *)0)->present),
+       asn_MAP_Member_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+       "CHOICE",
+       "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_Member_constr_2, &asn_PER_type_Member_constr_2, CHOICE_constraint },
+       asn_MBR_Member_2,
+       2,      /* Elements count */
+       &asn_SPC_Member_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CellsTriggeredList_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_Member_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CellsTriggeredList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_CellsTriggeredList_specs_1 = {
+       sizeof(struct CellsTriggeredList),
+       offsetof(struct CellsTriggeredList, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_CellsTriggeredList = {
+       "CellsTriggeredList",
+       "CellsTriggeredList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_CellsTriggeredList_tags_1,
+       sizeof(asn_DEF_CellsTriggeredList_tags_1)
+               /sizeof(asn_DEF_CellsTriggeredList_tags_1[0]), /* 1 */
+       asn_DEF_CellsTriggeredList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CellsTriggeredList_tags_1)
+               /sizeof(asn_DEF_CellsTriggeredList_tags_1[0]), /* 1 */
+       { &asn_OER_type_CellsTriggeredList_constr_1, &asn_PER_type_CellsTriggeredList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_CellsTriggeredList_1,
+       1,      /* Single element */
+       &asn_SPC_CellsTriggeredList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CellsTriggeredList.h b/src/codec_utils/RRC/CellsTriggeredList.h
new file mode 100644 (file)
index 0000000..ee3275a
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CellsTriggeredList_H_
+#define        _CellsTriggeredList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include "PhysCellId.h"
+#include "EUTRA-PhysCellId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CellsTriggeredList__Member_PR {
+       CellsTriggeredList__Member_PR_NOTHING,  /* No components present */
+       CellsTriggeredList__Member_PR_physCellId,
+       CellsTriggeredList__Member_PR_physCellIdEUTRA
+} CellsTriggeredList__Member_PR;
+
+/* Forward definitions */
+typedef struct CellsTriggeredList__Member {
+       CellsTriggeredList__Member_PR present;
+       union CellsTriggeredList__Member_u {
+               PhysCellId_t     physCellId;
+               EUTRA_PhysCellId_t       physCellIdEUTRA;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellsTriggeredList__Member;
+
+/* CellsTriggeredList */
+typedef struct CellsTriggeredList {
+       A_SEQUENCE_OF(CellsTriggeredList__Member) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CellsTriggeredList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CellsTriggeredList;
+extern asn_SET_OF_specifics_t asn_SPC_CellsTriggeredList_specs_1;
+extern asn_TYPE_member_t asn_MBR_CellsTriggeredList_1[1];
+extern asn_per_constraints_t asn_PER_type_CellsTriggeredList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CellsTriggeredList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CipheringAlgorithm.c b/src/codec_utils/RRC/CipheringAlgorithm.c
new file mode 100644 (file)
index 0000000..02da2da
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CipheringAlgorithm.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_CipheringAlgorithm_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_CipheringAlgorithm_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }    /* (0..7,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_CipheringAlgorithm_value2enum_1[] = {
+       { 0,    4,      "nea0" },
+       { 1,    4,      "nea1" },
+       { 2,    4,      "nea2" },
+       { 3,    4,      "nea3" },
+       { 4,    6,      "spare4" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_CipheringAlgorithm_enum2value_1[] = {
+       0,      /* nea0(0) */
+       1,      /* nea1(1) */
+       2,      /* nea2(2) */
+       3,      /* nea3(3) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5,      /* spare3(5) */
+       4       /* spare4(4) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_CipheringAlgorithm_specs_1 = {
+       asn_MAP_CipheringAlgorithm_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_CipheringAlgorithm_enum2value_1,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       9,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_CipheringAlgorithm_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_CipheringAlgorithm = {
+       "CipheringAlgorithm",
+       "CipheringAlgorithm",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_CipheringAlgorithm_tags_1,
+       sizeof(asn_DEF_CipheringAlgorithm_tags_1)
+               /sizeof(asn_DEF_CipheringAlgorithm_tags_1[0]), /* 1 */
+       asn_DEF_CipheringAlgorithm_tags_1,      /* Same as above */
+       sizeof(asn_DEF_CipheringAlgorithm_tags_1)
+               /sizeof(asn_DEF_CipheringAlgorithm_tags_1[0]), /* 1 */
+       { &asn_OER_type_CipheringAlgorithm_constr_1, &asn_PER_type_CipheringAlgorithm_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_CipheringAlgorithm_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CipheringAlgorithm.h b/src/codec_utils/RRC/CipheringAlgorithm.h
new file mode 100644 (file)
index 0000000..cce3d97
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CipheringAlgorithm_H_
+#define        _CipheringAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CipheringAlgorithm {
+       CipheringAlgorithm_nea0 = 0,
+       CipheringAlgorithm_nea1 = 1,
+       CipheringAlgorithm_nea2 = 2,
+       CipheringAlgorithm_nea3 = 3,
+       CipheringAlgorithm_spare4       = 4,
+       CipheringAlgorithm_spare3       = 5,
+       CipheringAlgorithm_spare2       = 6,
+       CipheringAlgorithm_spare1       = 7
+       /*
+        * Enumeration is extensible
+        */
+} e_CipheringAlgorithm;
+
+/* CipheringAlgorithm */
+typedef long    CipheringAlgorithm_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_CipheringAlgorithm_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_CipheringAlgorithm;
+extern const asn_INTEGER_specifics_t asn_SPC_CipheringAlgorithm_specs_1;
+asn_struct_free_f CipheringAlgorithm_free;
+asn_struct_print_f CipheringAlgorithm_print;
+asn_constr_check_f CipheringAlgorithm_constraint;
+ber_type_decoder_f CipheringAlgorithm_decode_ber;
+der_type_encoder_f CipheringAlgorithm_encode_der;
+xer_type_decoder_f CipheringAlgorithm_decode_xer;
+xer_type_encoder_f CipheringAlgorithm_encode_xer;
+oer_type_decoder_f CipheringAlgorithm_decode_oer;
+oer_type_encoder_f CipheringAlgorithm_encode_oer;
+per_type_decoder_f CipheringAlgorithm_decode_uper;
+per_type_encoder_f CipheringAlgorithm_encode_uper;
+per_type_decoder_f CipheringAlgorithm_decode_aper;
+per_type_encoder_f CipheringAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CipheringAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CodebookConfig.c b/src/codec_utils/RRC/CodebookConfig.c
new file mode 100644 (file)
index 0000000..9809a95
--- /dev/null
@@ -0,0 +1,2913 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CodebookConfig.h"
+
+static int
+memb_twoTX_CodebookSubsetRestriction_constraint_7(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;
+       }
+}
+
+static int
+memb_two_one_TypeI_SinglePanel_Restriction_constraint_10(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;
+       }
+}
+
+static int
+memb_two_two_TypeI_SinglePanel_Restriction_constraint_10(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 == 64)) {
+               /* 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_four_one_TypeI_SinglePanel_Restriction_constraint_10(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 == 16)) {
+               /* 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_three_two_TypeI_SinglePanel_Restriction_constraint_10(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 == 96)) {
+               /* 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_six_one_TypeI_SinglePanel_Restriction_constraint_10(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 == 24)) {
+               /* 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_four_two_TypeI_SinglePanel_Restriction_constraint_10(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 == 128)) {
+               /* 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_eight_one_TypeI_SinglePanel_Restriction_constraint_10(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 == 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 int
+memb_four_three_TypeI_SinglePanel_Restriction_constraint_10(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 == 192)) {
+               /* 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_six_two_TypeI_SinglePanel_Restriction_constraint_10(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 == 192)) {
+               /* 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_twelve_one_TypeI_SinglePanel_Restriction_constraint_10(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 == 48)) {
+               /* 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_four_four_TypeI_SinglePanel_Restriction_constraint_10(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 == 256)) {
+               /* 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_eight_two_TypeI_SinglePanel_Restriction_constraint_10(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 == 256)) {
+               /* 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_sixteen_one_TypeI_SinglePanel_Restriction_constraint_10(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 == 64)) {
+               /* 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_typeI_SinglePanel_codebookSubsetRestriction_i2_constraint_9(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 == 16)) {
+               /* 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_typeI_SinglePanel_ri_Restriction_constraint_5(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;
+       }
+}
+
+static int
+memb_two_two_one_TypeI_MultiPanel_Restriction_constraint_27(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;
+       }
+}
+
+static int
+memb_two_four_one_TypeI_MultiPanel_Restriction_constraint_27(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 == 16)) {
+               /* 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_four_two_one_TypeI_MultiPanel_Restriction_constraint_27(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;
+       }
+}
+
+static int
+memb_two_two_two_TypeI_MultiPanel_Restriction_constraint_27(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 == 64)) {
+               /* 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_two_eight_one_TypeI_MultiPanel_Restriction_constraint_27(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 == 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 int
+memb_four_four_one_TypeI_MultiPanel_Restriction_constraint_27(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 == 16)) {
+               /* 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_two_four_two_TypeI_MultiPanel_Restriction_constraint_27(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 == 128)) {
+               /* 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_four_two_two_TypeI_MultiPanel_Restriction_constraint_27(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 == 64)) {
+               /* 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_ri_Restriction_constraint_26(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 == 4)) {
+               /* 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_codebookMode_constraint_3(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 int
+memb_two_one_constraint_41(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 == 16)) {
+               /* 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_two_two_constraint_41(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 == 43)) {
+               /* 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_four_one_constraint_41(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 == 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 int
+memb_three_two_constraint_41(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 == 59)) {
+               /* 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_six_one_constraint_41(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 == 48)) {
+               /* 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_four_two_constraint_41(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 == 75)) {
+               /* 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_eight_one_constraint_41(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 == 64)) {
+               /* 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_four_three_constraint_41(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 == 107)) {
+               /* 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_six_two_constraint_41(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 == 107)) {
+               /* 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_twelve_one_constraint_41(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 == 96)) {
+               /* 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_four_four_constraint_41(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 == 139)) {
+               /* 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_eight_two_constraint_41(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 == 139)) {
+               /* 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_sixteen_one_constraint_41(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 == 128)) {
+               /* 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_typeII_RI_Restriction_constraint_40(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 == 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_typeII_PortSelectionRI_Restriction_constraint_56(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 == 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 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_memb_twoTX_CodebookSubsetRestriction_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_twoTX_CodebookSubsetRestriction_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_one_TypeI_SinglePanel_Restriction_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_two_one_TypeI_SinglePanel_Restriction_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_two_TypeI_SinglePanel_Restriction_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_two_two_TypeI_SinglePanel_Restriction_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_one_TypeI_SinglePanel_Restriction_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_four_one_TypeI_SinglePanel_Restriction_constr_13 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_three_two_TypeI_SinglePanel_Restriction_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       96      /* (SIZE(96..96)) */};
+static asn_per_constraints_t asn_PER_memb_three_two_TypeI_SinglePanel_Restriction_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  96,  96 }      /* (SIZE(96..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_six_one_TypeI_SinglePanel_Restriction_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+static asn_per_constraints_t asn_PER_memb_six_one_TypeI_SinglePanel_Restriction_constr_15 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_two_TypeI_SinglePanel_Restriction_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       128     /* (SIZE(128..128)) */};
+static asn_per_constraints_t asn_PER_memb_four_two_TypeI_SinglePanel_Restriction_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  128,  128 }    /* (SIZE(128..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_eight_one_TypeI_SinglePanel_Restriction_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_eight_one_TypeI_SinglePanel_Restriction_constr_17 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_three_TypeI_SinglePanel_Restriction_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       192     /* (SIZE(192..192)) */};
+static asn_per_constraints_t asn_PER_memb_four_three_TypeI_SinglePanel_Restriction_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  192,  192 }    /* (SIZE(192..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_six_two_TypeI_SinglePanel_Restriction_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       192     /* (SIZE(192..192)) */};
+static asn_per_constraints_t asn_PER_memb_six_two_TypeI_SinglePanel_Restriction_constr_19 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  192,  192 }    /* (SIZE(192..192)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_twelve_one_TypeI_SinglePanel_Restriction_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       48      /* (SIZE(48..48)) */};
+static asn_per_constraints_t asn_PER_memb_twelve_one_TypeI_SinglePanel_Restriction_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  48,  48 }      /* (SIZE(48..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_four_TypeI_SinglePanel_Restriction_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       256     /* (SIZE(256..256)) */};
+static asn_per_constraints_t asn_PER_memb_four_four_TypeI_SinglePanel_Restriction_constr_21 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  256,  256 }    /* (SIZE(256..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_eight_two_TypeI_SinglePanel_Restriction_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       256     /* (SIZE(256..256)) */};
+static asn_per_constraints_t asn_PER_memb_eight_two_TypeI_SinglePanel_Restriction_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  256,  256 }    /* (SIZE(256..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sixteen_one_TypeI_SinglePanel_Restriction_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_sixteen_one_TypeI_SinglePanel_Restriction_constr_23 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n1_n2_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n1_n2_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  12 }       /* (0..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nrOfAntennaPorts_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrOfAntennaPorts_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_typeI_SinglePanel_ri_Restriction_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_typeI_SinglePanel_ri_Restriction_constr_25 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_two_one_TypeI_MultiPanel_Restriction_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_two_two_one_TypeI_MultiPanel_Restriction_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_four_one_TypeI_MultiPanel_Restriction_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_two_four_one_TypeI_MultiPanel_Restriction_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_two_one_TypeI_MultiPanel_Restriction_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_four_two_one_TypeI_MultiPanel_Restriction_constr_30 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_two_two_TypeI_MultiPanel_Restriction_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_two_two_two_TypeI_MultiPanel_Restriction_constr_31 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_eight_one_TypeI_MultiPanel_Restriction_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_two_eight_one_TypeI_MultiPanel_Restriction_constr_32 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_four_one_TypeI_MultiPanel_Restriction_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_four_four_one_TypeI_MultiPanel_Restriction_constr_33 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_four_two_TypeI_MultiPanel_Restriction_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       128     /* (SIZE(128..128)) */};
+static asn_per_constraints_t asn_PER_memb_two_four_two_TypeI_MultiPanel_Restriction_constr_34 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  128,  128 }    /* (SIZE(128..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_two_two_TypeI_MultiPanel_Restriction_constr_35 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_four_two_two_TypeI_MultiPanel_Restriction_constr_35 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ng_n1_n2_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ng_n1_n2_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ri_Restriction_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_ri_Restriction_constr_36 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subType_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subType_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_codebookMode_constr_37 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_codebookMode_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (1..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_one_constr_42 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_two_one_constr_42 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_two_two_constr_43 CC_NOTUSED = {
+       { 0, 0 },
+       43      /* (SIZE(43..43)) */};
+static asn_per_constraints_t asn_PER_memb_two_two_constr_43 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  43,  43 }      /* (SIZE(43..43)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_one_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_four_one_constr_44 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_three_two_constr_45 CC_NOTUSED = {
+       { 0, 0 },
+       59      /* (SIZE(59..59)) */};
+static asn_per_constraints_t asn_PER_memb_three_two_constr_45 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  59,  59 }      /* (SIZE(59..59)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_six_one_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       48      /* (SIZE(48..48)) */};
+static asn_per_constraints_t asn_PER_memb_six_one_constr_46 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  48,  48 }      /* (SIZE(48..48)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_two_constr_47 CC_NOTUSED = {
+       { 0, 0 },
+       75      /* (SIZE(75..75)) */};
+static asn_per_constraints_t asn_PER_memb_four_two_constr_47 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  75,  75 }      /* (SIZE(75..75)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_eight_one_constr_48 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_eight_one_constr_48 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_three_constr_49 CC_NOTUSED = {
+       { 0, 0 },
+       107     /* (SIZE(107..107)) */};
+static asn_per_constraints_t asn_PER_memb_four_three_constr_49 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  107,  107 }    /* (SIZE(107..107)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_six_two_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       107     /* (SIZE(107..107)) */};
+static asn_per_constraints_t asn_PER_memb_six_two_constr_50 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  107,  107 }    /* (SIZE(107..107)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_twelve_one_constr_51 CC_NOTUSED = {
+       { 0, 0 },
+       96      /* (SIZE(96..96)) */};
+static asn_per_constraints_t asn_PER_memb_twelve_one_constr_51 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  96,  96 }      /* (SIZE(96..96)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_four_constr_52 CC_NOTUSED = {
+       { 0, 0 },
+       139     /* (SIZE(139..139)) */};
+static asn_per_constraints_t asn_PER_memb_four_four_constr_52 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  139,  139 }    /* (SIZE(139..139)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_eight_two_constr_53 CC_NOTUSED = {
+       { 0, 0 },
+       139     /* (SIZE(139..139)) */};
+static asn_per_constraints_t asn_PER_memb_eight_two_constr_53 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  139,  139 }    /* (SIZE(139..139)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sixteen_one_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       128     /* (SIZE(128..128)) */};
+static asn_per_constraints_t asn_PER_memb_sixteen_one_constr_54 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  128,  128 }    /* (SIZE(128..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n1_n2_codebookSubsetRestriction_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n1_n2_codebookSubsetRestriction_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  12 }       /* (0..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeII_RI_Restriction_constr_55 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_typeII_RI_Restriction_constr_55 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_portSelectionSamplingSize_constr_57 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_portSelectionSamplingSize_constr_57 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeII_PortSelectionRI_Restriction_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_typeII_PortSelectionRI_Restriction_constr_62 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subType_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subType_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_phaseAlphabetSize_constr_63 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phaseAlphabetSize_constr_63 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_numberOfBeams_constr_67 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_numberOfBeams_constr_67 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_codebookType_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_codebookType_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_two_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two, twoTX_CodebookSubsetRestriction),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twoTX_CodebookSubsetRestriction_constr_8, &asn_PER_memb_twoTX_CodebookSubsetRestriction_constr_8,  memb_twoTX_CodebookSubsetRestriction_constraint_7 },
+               0, 0, /* No default value */
+               "twoTX-CodebookSubsetRestriction"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_two_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_two_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* twoTX-CodebookSubsetRestriction */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_two_specs_7 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two, _asn_ctx),
+       asn_MAP_two_tag2el_7,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_two_7 = {
+       "two",
+       "two",
+       &asn_OP_SEQUENCE,
+       asn_DEF_two_tags_7,
+       sizeof(asn_DEF_two_tags_7)
+               /sizeof(asn_DEF_two_tags_7[0]) - 1, /* 1 */
+       asn_DEF_two_tags_7,     /* Same as above */
+       sizeof(asn_DEF_two_tags_7)
+               /sizeof(asn_DEF_two_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_two_7,
+       1,      /* Elements count */
+       &asn_SPC_two_specs_7    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_n1_n2_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.two_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_one_TypeI_SinglePanel_Restriction_constr_11, &asn_PER_memb_two_one_TypeI_SinglePanel_Restriction_constr_11,  memb_two_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "two-one-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.two_two_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_two_TypeI_SinglePanel_Restriction_constr_12, &asn_PER_memb_two_two_TypeI_SinglePanel_Restriction_constr_12,  memb_two_two_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "two-two-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_one_TypeI_SinglePanel_Restriction_constr_13, &asn_PER_memb_four_one_TypeI_SinglePanel_Restriction_constr_13,  memb_four_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "four-one-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.three_two_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_three_two_TypeI_SinglePanel_Restriction_constr_14, &asn_PER_memb_three_two_TypeI_SinglePanel_Restriction_constr_14,  memb_three_two_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "three-two-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.six_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_six_one_TypeI_SinglePanel_Restriction_constr_15, &asn_PER_memb_six_one_TypeI_SinglePanel_Restriction_constr_15,  memb_six_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "six-one-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_two_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_two_TypeI_SinglePanel_Restriction_constr_16, &asn_PER_memb_four_two_TypeI_SinglePanel_Restriction_constr_16,  memb_four_two_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "four-two-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.eight_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_eight_one_TypeI_SinglePanel_Restriction_constr_17, &asn_PER_memb_eight_one_TypeI_SinglePanel_Restriction_constr_17,  memb_eight_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "eight-one-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_three_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_three_TypeI_SinglePanel_Restriction_constr_18, &asn_PER_memb_four_three_TypeI_SinglePanel_Restriction_constr_18,  memb_four_three_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "four-three-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.six_two_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_six_two_TypeI_SinglePanel_Restriction_constr_19, &asn_PER_memb_six_two_TypeI_SinglePanel_Restriction_constr_19,  memb_six_two_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "six-two-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.twelve_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twelve_one_TypeI_SinglePanel_Restriction_constr_20, &asn_PER_memb_twelve_one_TypeI_SinglePanel_Restriction_constr_20,  memb_twelve_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "twelve-one-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.four_four_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_four_TypeI_SinglePanel_Restriction_constr_21, &asn_PER_memb_four_four_TypeI_SinglePanel_Restriction_constr_21,  memb_four_four_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "four-four-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.eight_two_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_eight_two_TypeI_SinglePanel_Restriction_constr_22, &asn_PER_memb_eight_two_TypeI_SinglePanel_Restriction_constr_22,  memb_eight_two_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "eight-two-TypeI-SinglePanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, choice.sixteen_one_TypeI_SinglePanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_sixteen_one_TypeI_SinglePanel_Restriction_constr_23, &asn_PER_memb_sixteen_one_TypeI_SinglePanel_Restriction_constr_23,  memb_sixteen_one_TypeI_SinglePanel_Restriction_constraint_10 },
+               0, 0, /* No default value */
+               "sixteen-one-TypeI-SinglePanel-Restriction"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_n1_n2_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-one-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-two-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-one-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* three-two-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* six-one-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-two-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight-one-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* four-three-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* six-two-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* twelve-one-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* four-four-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* eight-two-TypeI-SinglePanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* sixteen-one-TypeI-SinglePanel-Restriction */
+};
+static asn_CHOICE_specifics_t asn_SPC_n1_n2_specs_10 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2, present),
+       sizeof(((struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2 *)0)->present),
+       asn_MAP_n1_n2_tag2el_10,
+       13,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_n1_n2_10 = {
+       "n1-n2",
+       "n1-n2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_n1_n2_constr_10, &asn_PER_type_n1_n2_constr_10, CHOICE_constraint },
+       asn_MBR_n1_n2_10,
+       13,     /* Elements count */
+       &asn_SPC_n1_n2_specs_10 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_moreThanTwo_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, n1_n2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_n1_n2_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n1-n2"
+               },
+       { ATF_POINTER, 1, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, typeI_SinglePanel_codebookSubsetRestriction_i2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24, &asn_PER_memb_typeI_SinglePanel_codebookSubsetRestriction_i2_constr_24,  memb_typeI_SinglePanel_codebookSubsetRestriction_i2_constraint_9 },
+               0, 0, /* No default value */
+               "typeI-SinglePanel-codebookSubsetRestriction-i2"
+               },
+};
+static const int asn_MAP_moreThanTwo_oms_9[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_moreThanTwo_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_moreThanTwo_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n1-n2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-SinglePanel-codebookSubsetRestriction-i2 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_moreThanTwo_specs_9 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo, _asn_ctx),
+       asn_MAP_moreThanTwo_tag2el_9,
+       2,      /* Count of tags in the map */
+       asn_MAP_moreThanTwo_oms_9,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_moreThanTwo_9 = {
+       "moreThanTwo",
+       "moreThanTwo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_moreThanTwo_tags_9,
+       sizeof(asn_DEF_moreThanTwo_tags_9)
+               /sizeof(asn_DEF_moreThanTwo_tags_9[0]) - 1, /* 1 */
+       asn_DEF_moreThanTwo_tags_9,     /* Same as above */
+       sizeof(asn_DEF_moreThanTwo_tags_9)
+               /sizeof(asn_DEF_moreThanTwo_tags_9[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_moreThanTwo_9,
+       2,      /* Elements count */
+       &asn_SPC_moreThanTwo_specs_9    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nrOfAntennaPorts_6[] = {
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, choice.two),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_two_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "two"
+               },
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, choice.moreThanTwo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_moreThanTwo_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "moreThanTwo"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_nrOfAntennaPorts_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* moreThanTwo */
+};
+static asn_CHOICE_specifics_t asn_SPC_nrOfAntennaPorts_specs_6 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts, present),
+       sizeof(((struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts *)0)->present),
+       asn_MAP_nrOfAntennaPorts_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nrOfAntennaPorts_6 = {
+       "nrOfAntennaPorts",
+       "nrOfAntennaPorts",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_nrOfAntennaPorts_constr_6, &asn_PER_type_nrOfAntennaPorts_constr_6, CHOICE_constraint },
+       asn_MBR_nrOfAntennaPorts_6,
+       2,      /* Elements count */
+       &asn_SPC_nrOfAntennaPorts_specs_6       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeI_SinglePanel_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, nrOfAntennaPorts),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_nrOfAntennaPorts_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrOfAntennaPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, typeI_SinglePanel_ri_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_typeI_SinglePanel_ri_Restriction_constr_25, &asn_PER_memb_typeI_SinglePanel_ri_Restriction_constr_25,  memb_typeI_SinglePanel_ri_Restriction_constraint_5 },
+               0, 0, /* No default value */
+               "typeI-SinglePanel-ri-Restriction"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeI_SinglePanel_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_typeI_SinglePanel_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrOfAntennaPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-SinglePanel-ri-Restriction */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_typeI_SinglePanel_specs_5 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel, _asn_ctx),
+       asn_MAP_typeI_SinglePanel_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeI_SinglePanel_5 = {
+       "typeI-SinglePanel",
+       "typeI-SinglePanel",
+       &asn_OP_SEQUENCE,
+       asn_DEF_typeI_SinglePanel_tags_5,
+       sizeof(asn_DEF_typeI_SinglePanel_tags_5)
+               /sizeof(asn_DEF_typeI_SinglePanel_tags_5[0]) - 1, /* 1 */
+       asn_DEF_typeI_SinglePanel_tags_5,       /* Same as above */
+       sizeof(asn_DEF_typeI_SinglePanel_tags_5)
+               /sizeof(asn_DEF_typeI_SinglePanel_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_typeI_SinglePanel_5,
+       2,      /* Elements count */
+       &asn_SPC_typeI_SinglePanel_specs_5      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ng_n1_n2_27[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_two_one_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_two_one_TypeI_MultiPanel_Restriction_constr_28, &asn_PER_memb_two_two_one_TypeI_MultiPanel_Restriction_constr_28,  memb_two_two_one_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "two-two-one-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_four_one_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_four_one_TypeI_MultiPanel_Restriction_constr_29, &asn_PER_memb_two_four_one_TypeI_MultiPanel_Restriction_constr_29,  memb_two_four_one_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "two-four-one-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_two_one_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_two_one_TypeI_MultiPanel_Restriction_constr_30, &asn_PER_memb_four_two_one_TypeI_MultiPanel_Restriction_constr_30,  memb_four_two_one_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "four-two-one-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_two_two_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_two_two_TypeI_MultiPanel_Restriction_constr_31, &asn_PER_memb_two_two_two_TypeI_MultiPanel_Restriction_constr_31,  memb_two_two_two_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "two-two-two-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_eight_one_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_eight_one_TypeI_MultiPanel_Restriction_constr_32, &asn_PER_memb_two_eight_one_TypeI_MultiPanel_Restriction_constr_32,  memb_two_eight_one_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "two-eight-one-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_four_one_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_four_one_TypeI_MultiPanel_Restriction_constr_33, &asn_PER_memb_four_four_one_TypeI_MultiPanel_Restriction_constr_33,  memb_four_four_one_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "four-four-one-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.two_four_two_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_four_two_TypeI_MultiPanel_Restriction_constr_34, &asn_PER_memb_two_four_two_TypeI_MultiPanel_Restriction_constr_34,  memb_two_four_two_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "two-four-two-TypeI-MultiPanel-Restriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, choice.four_two_two_TypeI_MultiPanel_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_two_two_TypeI_MultiPanel_Restriction_constr_35, &asn_PER_memb_four_two_two_TypeI_MultiPanel_Restriction_constr_35,  memb_four_two_two_TypeI_MultiPanel_Restriction_constraint_27 },
+               0, 0, /* No default value */
+               "four-two-two-TypeI-MultiPanel-Restriction"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ng_n1_n2_tag2el_27[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-two-one-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-four-one-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-two-one-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* two-two-two-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* two-eight-one-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-four-one-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* two-four-two-TypeI-MultiPanel-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* four-two-two-TypeI-MultiPanel-Restriction */
+};
+static asn_CHOICE_specifics_t asn_SPC_ng_n1_n2_specs_27 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2, present),
+       sizeof(((struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2 *)0)->present),
+       asn_MAP_ng_n1_n2_tag2el_27,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ng_n1_n2_27 = {
+       "ng-n1-n2",
+       "ng-n1-n2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_ng_n1_n2_constr_27, &asn_PER_type_ng_n1_n2_constr_27, CHOICE_constraint },
+       asn_MBR_ng_n1_n2_27,
+       8,      /* Elements count */
+       &asn_SPC_ng_n1_n2_specs_27      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeI_MultiPanel_26[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, ng_n1_n2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ng_n1_n2_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-n1-n2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, ri_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_ri_Restriction_constr_36, &asn_PER_memb_ri_Restriction_constr_36,  memb_ri_Restriction_constraint_26 },
+               0, 0, /* No default value */
+               "ri-Restriction"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeI_MultiPanel_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_typeI_MultiPanel_tag2el_26[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ng-n1-n2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ri-Restriction */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_typeI_MultiPanel_specs_26 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel),
+       offsetof(struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel, _asn_ctx),
+       asn_MAP_typeI_MultiPanel_tag2el_26,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeI_MultiPanel_26 = {
+       "typeI-MultiPanel",
+       "typeI-MultiPanel",
+       &asn_OP_SEQUENCE,
+       asn_DEF_typeI_MultiPanel_tags_26,
+       sizeof(asn_DEF_typeI_MultiPanel_tags_26)
+               /sizeof(asn_DEF_typeI_MultiPanel_tags_26[0]) - 1, /* 1 */
+       asn_DEF_typeI_MultiPanel_tags_26,       /* Same as above */
+       sizeof(asn_DEF_typeI_MultiPanel_tags_26)
+               /sizeof(asn_DEF_typeI_MultiPanel_tags_26[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_typeI_MultiPanel_26,
+       2,      /* Elements count */
+       &asn_SPC_typeI_MultiPanel_specs_26      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_subType_4[] = {
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type1__subType, choice.typeI_SinglePanel),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_typeI_SinglePanel_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "typeI-SinglePanel"
+               },
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type1__subType, choice.typeI_MultiPanel),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_typeI_MultiPanel_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "typeI-MultiPanel"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_subType_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeI-SinglePanel */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeI-MultiPanel */
+};
+static asn_CHOICE_specifics_t asn_SPC_subType_specs_4 = {
+       sizeof(struct CodebookConfig__codebookType__type1__subType),
+       offsetof(struct CodebookConfig__codebookType__type1__subType, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type1__subType, present),
+       sizeof(((struct CodebookConfig__codebookType__type1__subType *)0)->present),
+       asn_MAP_subType_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_subType_4 = {
+       "subType",
+       "subType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_subType_constr_4, &asn_PER_type_subType_constr_4, CHOICE_constraint },
+       asn_MBR_subType_4,
+       2,      /* Elements count */
+       &asn_SPC_subType_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_type1_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1, subType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_subType_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type1, codebookMode),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_codebookMode_constr_37, &asn_PER_memb_codebookMode_constr_37,  memb_codebookMode_constraint_3 },
+               0, 0, /* No default value */
+               "codebookMode"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_type1_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_type1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* codebookMode */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_type1_specs_3 = {
+       sizeof(struct CodebookConfig__codebookType__type1),
+       offsetof(struct CodebookConfig__codebookType__type1, _asn_ctx),
+       asn_MAP_type1_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_type1_3 = {
+       "type1",
+       "type1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_type1_tags_3,
+       sizeof(asn_DEF_type1_tags_3)
+               /sizeof(asn_DEF_type1_tags_3[0]) - 1, /* 1 */
+       asn_DEF_type1_tags_3,   /* Same as above */
+       sizeof(asn_DEF_type1_tags_3)
+               /sizeof(asn_DEF_type1_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_type1_3,
+       2,      /* Elements count */
+       &asn_SPC_type1_specs_3  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_n1_n2_codebookSubsetRestriction_41[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.two_one),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_one_constr_42, &asn_PER_memb_two_one_constr_42,  memb_two_one_constraint_41 },
+               0, 0, /* No default value */
+               "two-one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.two_two),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_two_two_constr_43, &asn_PER_memb_two_two_constr_43,  memb_two_two_constraint_41 },
+               0, 0, /* No default value */
+               "two-two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_one),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_one_constr_44, &asn_PER_memb_four_one_constr_44,  memb_four_one_constraint_41 },
+               0, 0, /* No default value */
+               "four-one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.three_two),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_three_two_constr_45, &asn_PER_memb_three_two_constr_45,  memb_three_two_constraint_41 },
+               0, 0, /* No default value */
+               "three-two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.six_one),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_six_one_constr_46, &asn_PER_memb_six_one_constr_46,  memb_six_one_constraint_41 },
+               0, 0, /* No default value */
+               "six-one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_two),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_two_constr_47, &asn_PER_memb_four_two_constr_47,  memb_four_two_constraint_41 },
+               0, 0, /* No default value */
+               "four-two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.eight_one),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_eight_one_constr_48, &asn_PER_memb_eight_one_constr_48,  memb_eight_one_constraint_41 },
+               0, 0, /* No default value */
+               "eight-one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_three),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_three_constr_49, &asn_PER_memb_four_three_constr_49,  memb_four_three_constraint_41 },
+               0, 0, /* No default value */
+               "four-three"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.six_two),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_six_two_constr_50, &asn_PER_memb_six_two_constr_50,  memb_six_two_constraint_41 },
+               0, 0, /* No default value */
+               "six-two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.twelve_one),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twelve_one_constr_51, &asn_PER_memb_twelve_one_constr_51,  memb_twelve_one_constraint_41 },
+               0, 0, /* No default value */
+               "twelve-one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.four_four),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_four_four_constr_52, &asn_PER_memb_four_four_constr_52,  memb_four_four_constraint_41 },
+               0, 0, /* No default value */
+               "four-four"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.eight_two),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_eight_two_constr_53, &asn_PER_memb_eight_two_constr_53,  memb_eight_two_constraint_41 },
+               0, 0, /* No default value */
+               "eight-two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, choice.sixteen_one),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_sixteen_one_constr_54, &asn_PER_memb_sixteen_one_constr_54,  memb_sixteen_one_constraint_41 },
+               0, 0, /* No default value */
+               "sixteen-one"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_n1_n2_codebookSubsetRestriction_tag2el_41[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* two-one */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* two-two */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* four-one */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* three-two */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* six-one */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four-two */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight-one */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* four-three */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* six-two */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* twelve-one */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* four-four */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* eight-two */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 } /* sixteen-one */
+};
+static asn_CHOICE_specifics_t asn_SPC_n1_n2_codebookSubsetRestriction_specs_41 = {
+       sizeof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction),
+       offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction, present),
+       sizeof(((struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction *)0)->present),
+       asn_MAP_n1_n2_codebookSubsetRestriction_tag2el_41,
+       13,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_n1_n2_codebookSubsetRestriction_41 = {
+       "n1-n2-codebookSubsetRestriction",
+       "n1-n2-codebookSubsetRestriction",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_n1_n2_codebookSubsetRestriction_constr_41, &asn_PER_type_n1_n2_codebookSubsetRestriction_constr_41, CHOICE_constraint },
+       asn_MBR_n1_n2_codebookSubsetRestriction_41,
+       13,     /* Elements count */
+       &asn_SPC_n1_n2_codebookSubsetRestriction_specs_41       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeII_40[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII, n1_n2_codebookSubsetRestriction),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_n1_n2_codebookSubsetRestriction_41,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n1-n2-codebookSubsetRestriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII, typeII_RI_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_typeII_RI_Restriction_constr_55, &asn_PER_memb_typeII_RI_Restriction_constr_55,  memb_typeII_RI_Restriction_constraint_40 },
+               0, 0, /* No default value */
+               "typeII-RI-Restriction"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeII_tags_40[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_typeII_tag2el_40[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n1-n2-codebookSubsetRestriction */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-RI-Restriction */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_typeII_specs_40 = {
+       sizeof(struct CodebookConfig__codebookType__type2__subType__typeII),
+       offsetof(struct CodebookConfig__codebookType__type2__subType__typeII, _asn_ctx),
+       asn_MAP_typeII_tag2el_40,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeII_40 = {
+       "typeII",
+       "typeII",
+       &asn_OP_SEQUENCE,
+       asn_DEF_typeII_tags_40,
+       sizeof(asn_DEF_typeII_tags_40)
+               /sizeof(asn_DEF_typeII_tags_40[0]) - 1, /* 1 */
+       asn_DEF_typeII_tags_40, /* Same as above */
+       sizeof(asn_DEF_typeII_tags_40)
+               /sizeof(asn_DEF_typeII_tags_40[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_typeII_40,
+       2,      /* Elements count */
+       &asn_SPC_typeII_specs_40        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_portSelectionSamplingSize_value2enum_57[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" }
+};
+static const unsigned int asn_MAP_portSelectionSamplingSize_enum2value_57[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3       /* n4(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_portSelectionSamplingSize_specs_57 = {
+       asn_MAP_portSelectionSamplingSize_value2enum_57,        /* "tag" => N; sorted by tag */
+       asn_MAP_portSelectionSamplingSize_enum2value_57,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_portSelectionSamplingSize_tags_57[] = {
+       (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_portSelectionSamplingSize_57 = {
+       "portSelectionSamplingSize",
+       "portSelectionSamplingSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_portSelectionSamplingSize_tags_57,
+       sizeof(asn_DEF_portSelectionSamplingSize_tags_57)
+               /sizeof(asn_DEF_portSelectionSamplingSize_tags_57[0]) - 1, /* 1 */
+       asn_DEF_portSelectionSamplingSize_tags_57,      /* Same as above */
+       sizeof(asn_DEF_portSelectionSamplingSize_tags_57)
+               /sizeof(asn_DEF_portSelectionSamplingSize_tags_57[0]), /* 2 */
+       { &asn_OER_type_portSelectionSamplingSize_constr_57, &asn_PER_type_portSelectionSamplingSize_constr_57, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_portSelectionSamplingSize_specs_57     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeII_PortSelection_56[] = {
+       { ATF_POINTER, 1, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII_PortSelection, portSelectionSamplingSize),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_portSelectionSamplingSize_57,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "portSelectionSamplingSize"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2__subType__typeII_PortSelection, typeII_PortSelectionRI_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_typeII_PortSelectionRI_Restriction_constr_62, &asn_PER_memb_typeII_PortSelectionRI_Restriction_constr_62,  memb_typeII_PortSelectionRI_Restriction_constraint_56 },
+               0, 0, /* No default value */
+               "typeII-PortSelectionRI-Restriction"
+               },
+};
+static const int asn_MAP_typeII_PortSelection_oms_56[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_typeII_PortSelection_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_typeII_PortSelection_tag2el_56[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* portSelectionSamplingSize */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-PortSelectionRI-Restriction */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_typeII_PortSelection_specs_56 = {
+       sizeof(struct CodebookConfig__codebookType__type2__subType__typeII_PortSelection),
+       offsetof(struct CodebookConfig__codebookType__type2__subType__typeII_PortSelection, _asn_ctx),
+       asn_MAP_typeII_PortSelection_tag2el_56,
+       2,      /* Count of tags in the map */
+       asn_MAP_typeII_PortSelection_oms_56,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeII_PortSelection_56 = {
+       "typeII-PortSelection",
+       "typeII-PortSelection",
+       &asn_OP_SEQUENCE,
+       asn_DEF_typeII_PortSelection_tags_56,
+       sizeof(asn_DEF_typeII_PortSelection_tags_56)
+               /sizeof(asn_DEF_typeII_PortSelection_tags_56[0]) - 1, /* 1 */
+       asn_DEF_typeII_PortSelection_tags_56,   /* Same as above */
+       sizeof(asn_DEF_typeII_PortSelection_tags_56)
+               /sizeof(asn_DEF_typeII_PortSelection_tags_56[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_typeII_PortSelection_56,
+       2,      /* Elements count */
+       &asn_SPC_typeII_PortSelection_specs_56  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_subType_39[] = {
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type2__subType, choice.typeII),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_typeII_40,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "typeII"
+               },
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType__type2__subType, choice.typeII_PortSelection),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_typeII_PortSelection_56,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "typeII-PortSelection"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_subType_tag2el_39[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeII */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeII-PortSelection */
+};
+static asn_CHOICE_specifics_t asn_SPC_subType_specs_39 = {
+       sizeof(struct CodebookConfig__codebookType__type2__subType),
+       offsetof(struct CodebookConfig__codebookType__type2__subType, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType__type2__subType, present),
+       sizeof(((struct CodebookConfig__codebookType__type2__subType *)0)->present),
+       asn_MAP_subType_tag2el_39,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_subType_39 = {
+       "subType",
+       "subType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_subType_constr_39, &asn_PER_type_subType_constr_39, CHOICE_constraint },
+       asn_MBR_subType_39,
+       2,      /* Elements count */
+       &asn_SPC_subType_specs_39       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_phaseAlphabetSize_value2enum_63[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" }
+};
+static const unsigned int asn_MAP_phaseAlphabetSize_enum2value_63[] = {
+       0,      /* n4(0) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_phaseAlphabetSize_specs_63 = {
+       asn_MAP_phaseAlphabetSize_value2enum_63,        /* "tag" => N; sorted by tag */
+       asn_MAP_phaseAlphabetSize_enum2value_63,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_phaseAlphabetSize_tags_63[] = {
+       (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_phaseAlphabetSize_63 = {
+       "phaseAlphabetSize",
+       "phaseAlphabetSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_phaseAlphabetSize_tags_63,
+       sizeof(asn_DEF_phaseAlphabetSize_tags_63)
+               /sizeof(asn_DEF_phaseAlphabetSize_tags_63[0]) - 1, /* 1 */
+       asn_DEF_phaseAlphabetSize_tags_63,      /* Same as above */
+       sizeof(asn_DEF_phaseAlphabetSize_tags_63)
+               /sizeof(asn_DEF_phaseAlphabetSize_tags_63[0]), /* 2 */
+       { &asn_OER_type_phaseAlphabetSize_constr_63, &asn_PER_type_phaseAlphabetSize_constr_63, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_phaseAlphabetSize_specs_63     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_numberOfBeams_value2enum_67[] = {
+       { 0,    3,      "two" },
+       { 1,    5,      "three" },
+       { 2,    4,      "four" }
+};
+static const unsigned int asn_MAP_numberOfBeams_enum2value_67[] = {
+       2,      /* four(2) */
+       1,      /* three(1) */
+       0       /* two(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_numberOfBeams_specs_67 = {
+       asn_MAP_numberOfBeams_value2enum_67,    /* "tag" => N; sorted by tag */
+       asn_MAP_numberOfBeams_enum2value_67,    /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_numberOfBeams_tags_67[] = {
+       (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_numberOfBeams_67 = {
+       "numberOfBeams",
+       "numberOfBeams",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_numberOfBeams_tags_67,
+       sizeof(asn_DEF_numberOfBeams_tags_67)
+               /sizeof(asn_DEF_numberOfBeams_tags_67[0]) - 1, /* 1 */
+       asn_DEF_numberOfBeams_tags_67,  /* Same as above */
+       sizeof(asn_DEF_numberOfBeams_tags_67)
+               /sizeof(asn_DEF_numberOfBeams_tags_67[0]), /* 2 */
+       { &asn_OER_type_numberOfBeams_constr_67, &asn_PER_type_numberOfBeams_constr_67, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_numberOfBeams_specs_67 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_type2_38[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2, subType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_subType_39,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2, phaseAlphabetSize),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_phaseAlphabetSize_63,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phaseAlphabetSize"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2, subbandAmplitude),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subbandAmplitude"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig__codebookType__type2, numberOfBeams),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_numberOfBeams_67,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "numberOfBeams"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_type2_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_type2_tag2el_38[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* phaseAlphabetSize */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subbandAmplitude */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* numberOfBeams */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_type2_specs_38 = {
+       sizeof(struct CodebookConfig__codebookType__type2),
+       offsetof(struct CodebookConfig__codebookType__type2, _asn_ctx),
+       asn_MAP_type2_tag2el_38,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_type2_38 = {
+       "type2",
+       "type2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_type2_tags_38,
+       sizeof(asn_DEF_type2_tags_38)
+               /sizeof(asn_DEF_type2_tags_38[0]) - 1, /* 1 */
+       asn_DEF_type2_tags_38,  /* Same as above */
+       sizeof(asn_DEF_type2_tags_38)
+               /sizeof(asn_DEF_type2_tags_38[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_type2_38,
+       4,      /* Elements count */
+       &asn_SPC_type2_specs_38 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_codebookType_2[] = {
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType, choice.type1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_type1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type1"
+               },
+       { ATF_POINTER, 0, offsetof(struct CodebookConfig__codebookType, choice.type2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_type2_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_codebookType_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* type2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_codebookType_specs_2 = {
+       sizeof(struct CodebookConfig__codebookType),
+       offsetof(struct CodebookConfig__codebookType, _asn_ctx),
+       offsetof(struct CodebookConfig__codebookType, present),
+       sizeof(((struct CodebookConfig__codebookType *)0)->present),
+       asn_MAP_codebookType_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_codebookType_2 = {
+       "codebookType",
+       "codebookType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_codebookType_constr_2, &asn_PER_type_codebookType_constr_2, CHOICE_constraint },
+       asn_MBR_codebookType_2,
+       2,      /* Elements count */
+       &asn_SPC_codebookType_specs_2   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CodebookConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CodebookConfig, codebookType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_codebookType_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codebookType"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CodebookConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CodebookConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* codebookType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CodebookConfig_specs_1 = {
+       sizeof(struct CodebookConfig),
+       offsetof(struct CodebookConfig, _asn_ctx),
+       asn_MAP_CodebookConfig_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_CodebookConfig = {
+       "CodebookConfig",
+       "CodebookConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CodebookConfig_tags_1,
+       sizeof(asn_DEF_CodebookConfig_tags_1)
+               /sizeof(asn_DEF_CodebookConfig_tags_1[0]), /* 1 */
+       asn_DEF_CodebookConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_CodebookConfig_tags_1)
+               /sizeof(asn_DEF_CodebookConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CodebookConfig_1,
+       1,      /* Elements count */
+       &asn_SPC_CodebookConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CodebookConfig.h b/src/codec_utils/RRC/CodebookConfig.h
new file mode 100644 (file)
index 0000000..9ce8c19
--- /dev/null
@@ -0,0 +1,267 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CodebookConfig_H_
+#define        _CodebookConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+#include <NativeEnumerated.h>
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CodebookConfig__codebookType_PR {
+       CodebookConfig__codebookType_PR_NOTHING,        /* No components present */
+       CodebookConfig__codebookType_PR_type1,
+       CodebookConfig__codebookType_PR_type2
+} CodebookConfig__codebookType_PR;
+typedef enum CodebookConfig__codebookType__type1__subType_PR {
+       CodebookConfig__codebookType__type1__subType_PR_NOTHING,        /* No components present */
+       CodebookConfig__codebookType__type1__subType_PR_typeI_SinglePanel,
+       CodebookConfig__codebookType__type1__subType_PR_typeI_MultiPanel
+} CodebookConfig__codebookType__type1__subType_PR;
+typedef enum CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR {
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_NOTHING,   /* No components present */
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_two,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR_moreThanTwo
+} CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR;
+typedef enum CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR {
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_NOTHING,       /* No components present */
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_one_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_two_two_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_one_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_three_two_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_six_one_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_two_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_eight_one_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_three_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_six_two_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_twelve_one_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_four_four_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_eight_two_TypeI_SinglePanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR_sixteen_one_TypeI_SinglePanel_Restriction
+} CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR;
+typedef enum CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR {
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_NOTHING,    /* No components present */
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_two_two_one_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_two_four_one_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_four_two_one_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_two_two_two_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_two_eight_one_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_four_four_one_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_two_four_two_TypeI_MultiPanel_Restriction,
+       CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR_four_two_two_TypeI_MultiPanel_Restriction
+} CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR;
+typedef enum CodebookConfig__codebookType__type2__subType_PR {
+       CodebookConfig__codebookType__type2__subType_PR_NOTHING,        /* No components present */
+       CodebookConfig__codebookType__type2__subType_PR_typeII,
+       CodebookConfig__codebookType__type2__subType_PR_typeII_PortSelection
+} CodebookConfig__codebookType__type2__subType_PR;
+typedef enum CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR {
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_NOTHING,       /* No components present */
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_two_one,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_two_two,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_four_one,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_three_two,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_six_one,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_four_two,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_eight_one,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_four_three,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_six_two,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_twelve_one,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_four_four,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_eight_two,
+       CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR_sixteen_one
+} CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR;
+typedef enum CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize {
+       CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize_n1        = 0,
+       CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize_n2        = 1,
+       CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize_n3        = 2,
+       CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize_n4        = 3
+} e_CodebookConfig__codebookType__type2__subType__typeII_PortSelection__portSelectionSamplingSize;
+typedef enum CodebookConfig__codebookType__type2__phaseAlphabetSize {
+       CodebookConfig__codebookType__type2__phaseAlphabetSize_n4       = 0,
+       CodebookConfig__codebookType__type2__phaseAlphabetSize_n8       = 1
+} e_CodebookConfig__codebookType__type2__phaseAlphabetSize;
+typedef enum CodebookConfig__codebookType__type2__numberOfBeams {
+       CodebookConfig__codebookType__type2__numberOfBeams_two  = 0,
+       CodebookConfig__codebookType__type2__numberOfBeams_three        = 1,
+       CodebookConfig__codebookType__type2__numberOfBeams_four = 2
+} e_CodebookConfig__codebookType__type2__numberOfBeams;
+
+/* CodebookConfig */
+typedef struct CodebookConfig {
+       struct CodebookConfig__codebookType {
+               CodebookConfig__codebookType_PR present;
+               union CodebookConfig__codebookType_u {
+                       struct CodebookConfig__codebookType__type1 {
+                               struct CodebookConfig__codebookType__type1__subType {
+                                       CodebookConfig__codebookType__type1__subType_PR present;
+                                       union CodebookConfig__codebookType__type1__subType_u {
+                                               struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel {
+                                                       struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts {
+                                                               CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_PR present;
+                                                               union CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts_u {
+                                                                       struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__two {
+                                                                               BIT_STRING_t     twoTX_CodebookSubsetRestriction;
+                                                                               
+                                                                               /* Context for parsing across buffer boundaries */
+                                                                               asn_struct_ctx_t _asn_ctx;
+                                                                       } *two;
+                                                                       struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo {
+                                                                               struct CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2 {
+                                                                                       CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_PR present;
+                                                                                       union CodebookConfig__codebookType__type1__subType__typeI_SinglePanel__nrOfAntennaPorts__moreThanTwo__n1_n2_u {
+                                                                                               BIT_STRING_t     two_one_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     two_two_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     four_one_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     three_two_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     six_one_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     four_two_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     eight_one_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     four_three_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     six_two_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     twelve_one_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     four_four_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     eight_two_TypeI_SinglePanel_Restriction;
+                                                                                               BIT_STRING_t     sixteen_one_TypeI_SinglePanel_Restriction;
+                                                                                       } choice;
+                                                                                       
+                                                                                       /* Context for parsing across buffer boundaries */
+                                                                                       asn_struct_ctx_t _asn_ctx;
+                                                                               } n1_n2;
+                                                                               BIT_STRING_t    *typeI_SinglePanel_codebookSubsetRestriction_i2;        /* OPTIONAL */
+                                                                               
+                                                                               /* Context for parsing across buffer boundaries */
+                                                                               asn_struct_ctx_t _asn_ctx;
+                                                                       } *moreThanTwo;
+                                                               } choice;
+                                                               
+                                                               /* Context for parsing across buffer boundaries */
+                                                               asn_struct_ctx_t _asn_ctx;
+                                                       } nrOfAntennaPorts;
+                                                       BIT_STRING_t     typeI_SinglePanel_ri_Restriction;
+                                                       
+                                                       /* Context for parsing across buffer boundaries */
+                                                       asn_struct_ctx_t _asn_ctx;
+                                               } *typeI_SinglePanel;
+                                               struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel {
+                                                       struct CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2 {
+                                                               CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_PR present;
+                                                               union CodebookConfig__codebookType__type1__subType__typeI_MultiPanel__ng_n1_n2_u {
+                                                                       BIT_STRING_t     two_two_one_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     two_four_one_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     four_two_one_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     two_two_two_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     two_eight_one_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     four_four_one_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     two_four_two_TypeI_MultiPanel_Restriction;
+                                                                       BIT_STRING_t     four_two_two_TypeI_MultiPanel_Restriction;
+                                                               } choice;
+                                                               
+                                                               /* Context for parsing across buffer boundaries */
+                                                               asn_struct_ctx_t _asn_ctx;
+                                                       } ng_n1_n2;
+                                                       BIT_STRING_t     ri_Restriction;
+                                                       
+                                                       /* Context for parsing across buffer boundaries */
+                                                       asn_struct_ctx_t _asn_ctx;
+                                               } *typeI_MultiPanel;
+                                       } choice;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } subType;
+                               long     codebookMode;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *type1;
+                       struct CodebookConfig__codebookType__type2 {
+                               struct CodebookConfig__codebookType__type2__subType {
+                                       CodebookConfig__codebookType__type2__subType_PR present;
+                                       union CodebookConfig__codebookType__type2__subType_u {
+                                               struct CodebookConfig__codebookType__type2__subType__typeII {
+                                                       struct CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction {
+                                                               CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_PR present;
+                                                               union CodebookConfig__codebookType__type2__subType__typeII__n1_n2_codebookSubsetRestriction_u {
+                                                                       BIT_STRING_t     two_one;
+                                                                       BIT_STRING_t     two_two;
+                                                                       BIT_STRING_t     four_one;
+                                                                       BIT_STRING_t     three_two;
+                                                                       BIT_STRING_t     six_one;
+                                                                       BIT_STRING_t     four_two;
+                                                                       BIT_STRING_t     eight_one;
+                                                                       BIT_STRING_t     four_three;
+                                                                       BIT_STRING_t     six_two;
+                                                                       BIT_STRING_t     twelve_one;
+                                                                       BIT_STRING_t     four_four;
+                                                                       BIT_STRING_t     eight_two;
+                                                                       BIT_STRING_t     sixteen_one;
+                                                               } choice;
+                                                               
+                                                               /* Context for parsing across buffer boundaries */
+                                                               asn_struct_ctx_t _asn_ctx;
+                                                       } n1_n2_codebookSubsetRestriction;
+                                                       BIT_STRING_t     typeII_RI_Restriction;
+                                                       
+                                                       /* Context for parsing across buffer boundaries */
+                                                       asn_struct_ctx_t _asn_ctx;
+                                               } *typeII;
+                                               struct CodebookConfig__codebookType__type2__subType__typeII_PortSelection {
+                                                       long    *portSelectionSamplingSize;     /* OPTIONAL */
+                                                       BIT_STRING_t     typeII_PortSelectionRI_Restriction;
+                                                       
+                                                       /* Context for parsing across buffer boundaries */
+                                                       asn_struct_ctx_t _asn_ctx;
+                                               } *typeII_PortSelection;
+                                       } choice;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } subType;
+                               long     phaseAlphabetSize;
+                               BOOLEAN_t        subbandAmplitude;
+                               long     numberOfBeams;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *type2;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } codebookType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CodebookConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_portSelectionSamplingSize_57;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_phaseAlphabetSize_63;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_numberOfBeams_67;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_CodebookConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_CodebookConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_CodebookConfig_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CodebookConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ConfigRestrictInfoSCG.c b/src/codec_utils/RRC/ConfigRestrictInfoSCG.c
new file mode 100644 (file)
index 0000000..a2acfc7
--- /dev/null
@@ -0,0 +1,277 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ConfigRestrictInfoSCG.h"
+
+#include "BandCombinationInfoList.h"
+static int
+memb_maxMeasFreqsSCG_NR_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 <= 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 int
+memb_maxMeasIdentitiesSCG_NR_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 <= 62)) {
+               /* 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_maxMeasFreqsSCG_NR_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxMeasFreqsSCG_NR_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxMeasIdentitiesSCG_NR_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (1..62) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxMeasIdentitiesSCG_NR_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  62 }       /* (1..62) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_powerCoordination_FR1_3[] = {
+       { ATF_POINTER, 3, offsetof(struct ConfigRestrictInfoSCG__powerCoordination_FR1, p_maxNR_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-maxNR-FR1"
+               },
+       { ATF_POINTER, 2, offsetof(struct ConfigRestrictInfoSCG__powerCoordination_FR1, p_maxEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-maxEUTRA"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfigRestrictInfoSCG__powerCoordination_FR1, p_maxUE_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-maxUE-FR1"
+               },
+};
+static const int asn_MAP_powerCoordination_FR1_oms_3[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_powerCoordination_FR1_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_powerCoordination_FR1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* p-maxNR-FR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* p-maxEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* p-maxUE-FR1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_powerCoordination_FR1_specs_3 = {
+       sizeof(struct ConfigRestrictInfoSCG__powerCoordination_FR1),
+       offsetof(struct ConfigRestrictInfoSCG__powerCoordination_FR1, _asn_ctx),
+       asn_MAP_powerCoordination_FR1_tag2el_3,
+       3,      /* Count of tags in the map */
+       asn_MAP_powerCoordination_FR1_oms_3,    /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_powerCoordination_FR1_3 = {
+       "powerCoordination-FR1",
+       "powerCoordination-FR1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_powerCoordination_FR1_tags_3,
+       sizeof(asn_DEF_powerCoordination_FR1_tags_3)
+               /sizeof(asn_DEF_powerCoordination_FR1_tags_3[0]) - 1, /* 1 */
+       asn_DEF_powerCoordination_FR1_tags_3,   /* Same as above */
+       sizeof(asn_DEF_powerCoordination_FR1_tags_3)
+               /sizeof(asn_DEF_powerCoordination_FR1_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_powerCoordination_FR1_3,
+       3,      /* Elements count */
+       &asn_SPC_powerCoordination_FR1_specs_3  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_servCellIndexRangeSCG_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ConfigRestrictInfoSCG__servCellIndexRangeSCG, lowBound),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lowBound"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfigRestrictInfoSCG__servCellIndexRangeSCG, upBound),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "upBound"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_servCellIndexRangeSCG_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_servCellIndexRangeSCG_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lowBound */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* upBound */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_servCellIndexRangeSCG_specs_7 = {
+       sizeof(struct ConfigRestrictInfoSCG__servCellIndexRangeSCG),
+       offsetof(struct ConfigRestrictInfoSCG__servCellIndexRangeSCG, _asn_ctx),
+       asn_MAP_servCellIndexRangeSCG_tag2el_7,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_servCellIndexRangeSCG_7 = {
+       "servCellIndexRangeSCG",
+       "servCellIndexRangeSCG",
+       &asn_OP_SEQUENCE,
+       asn_DEF_servCellIndexRangeSCG_tags_7,
+       sizeof(asn_DEF_servCellIndexRangeSCG_tags_7)
+               /sizeof(asn_DEF_servCellIndexRangeSCG_tags_7[0]) - 1, /* 1 */
+       asn_DEF_servCellIndexRangeSCG_tags_7,   /* Same as above */
+       sizeof(asn_DEF_servCellIndexRangeSCG_tags_7)
+               /sizeof(asn_DEF_servCellIndexRangeSCG_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_servCellIndexRangeSCG_7,
+       2,      /* Elements count */
+       &asn_SPC_servCellIndexRangeSCG_specs_7  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ConfigRestrictInfoSCG_1[] = {
+       { ATF_POINTER, 5, offsetof(struct ConfigRestrictInfoSCG, allowedBC_ListMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "allowedBC-ListMRDC"
+               },
+       { ATF_POINTER, 4, offsetof(struct ConfigRestrictInfoSCG, powerCoordination_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_powerCoordination_FR1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerCoordination-FR1"
+               },
+       { ATF_POINTER, 3, offsetof(struct ConfigRestrictInfoSCG, servCellIndexRangeSCG),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_servCellIndexRangeSCG_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servCellIndexRangeSCG"
+               },
+       { ATF_POINTER, 2, offsetof(struct ConfigRestrictInfoSCG, maxMeasFreqsSCG_NR),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxMeasFreqsSCG_NR_constr_10, &asn_PER_memb_maxMeasFreqsSCG_NR_constr_10,  memb_maxMeasFreqsSCG_NR_constraint_1 },
+               0, 0, /* No default value */
+               "maxMeasFreqsSCG-NR"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfigRestrictInfoSCG, maxMeasIdentitiesSCG_NR),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxMeasIdentitiesSCG_NR_constr_11, &asn_PER_memb_maxMeasIdentitiesSCG_NR_constr_11,  memb_maxMeasIdentitiesSCG_NR_constraint_1 },
+               0, 0, /* No default value */
+               "maxMeasIdentitiesSCG-NR"
+               },
+};
+static const int asn_MAP_ConfigRestrictInfoSCG_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_ConfigRestrictInfoSCG_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigRestrictInfoSCG_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* allowedBC-ListMRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* powerCoordination-FR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* servCellIndexRangeSCG */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxMeasFreqsSCG-NR */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* maxMeasIdentitiesSCG-NR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ConfigRestrictInfoSCG_specs_1 = {
+       sizeof(struct ConfigRestrictInfoSCG),
+       offsetof(struct ConfigRestrictInfoSCG, _asn_ctx),
+       asn_MAP_ConfigRestrictInfoSCG_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_ConfigRestrictInfoSCG_oms_1,    /* Optional members */
+       5, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigRestrictInfoSCG = {
+       "ConfigRestrictInfoSCG",
+       "ConfigRestrictInfoSCG",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ConfigRestrictInfoSCG_tags_1,
+       sizeof(asn_DEF_ConfigRestrictInfoSCG_tags_1)
+               /sizeof(asn_DEF_ConfigRestrictInfoSCG_tags_1[0]), /* 1 */
+       asn_DEF_ConfigRestrictInfoSCG_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ConfigRestrictInfoSCG_tags_1)
+               /sizeof(asn_DEF_ConfigRestrictInfoSCG_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ConfigRestrictInfoSCG_1,
+       5,      /* Elements count */
+       &asn_SPC_ConfigRestrictInfoSCG_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ConfigRestrictInfoSCG.h b/src/codec_utils/RRC/ConfigRestrictInfoSCG.h
new file mode 100644 (file)
index 0000000..3374e4a
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ConfigRestrictInfoSCG_H_
+#define        _ConfigRestrictInfoSCG_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "P-Max.h"
+#include <constr_SEQUENCE.h>
+#include "ServCellIndex.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BandCombinationInfoList;
+
+/* ConfigRestrictInfoSCG */
+typedef struct ConfigRestrictInfoSCG {
+       struct BandCombinationInfoList  *allowedBC_ListMRDC;    /* OPTIONAL */
+       struct ConfigRestrictInfoSCG__powerCoordination_FR1 {
+               P_Max_t *p_maxNR_FR1;   /* OPTIONAL */
+               P_Max_t *p_maxEUTRA;    /* OPTIONAL */
+               P_Max_t *p_maxUE_FR1;   /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *powerCoordination_FR1;
+       struct ConfigRestrictInfoSCG__servCellIndexRangeSCG {
+               ServCellIndex_t  lowBound;
+               ServCellIndex_t  upBound;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *servCellIndexRangeSCG;
+       long    *maxMeasFreqsSCG_NR;    /* OPTIONAL */
+       long    *maxMeasIdentitiesSCG_NR;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ConfigRestrictInfoSCG_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConfigRestrictInfoSCG;
+extern asn_SEQUENCE_specifics_t asn_SPC_ConfigRestrictInfoSCG_specs_1;
+extern asn_TYPE_member_t asn_MBR_ConfigRestrictInfoSCG_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ConfigRestrictInfoSCG_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ConfigRestrictModReqSCG.c b/src/codec_utils/RRC/ConfigRestrictModReqSCG.c
new file mode 100644 (file)
index 0000000..2724d30
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ConfigRestrictModReqSCG.h"
+
+#include "BandCombinationInfoSN.h"
+asn_TYPE_member_t asn_MBR_ConfigRestrictModReqSCG_1[] = {
+       { ATF_POINTER, 2, offsetof(struct ConfigRestrictModReqSCG, requestedBC_MRDC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationInfoSN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "requestedBC-MRDC"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfigRestrictModReqSCG, requestedP_MaxFR1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "requestedP-MaxFR1"
+               },
+};
+static const int asn_MAP_ConfigRestrictModReqSCG_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ConfigRestrictModReqSCG_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfigRestrictModReqSCG_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requestedBC-MRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* requestedP-MaxFR1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ConfigRestrictModReqSCG_specs_1 = {
+       sizeof(struct ConfigRestrictModReqSCG),
+       offsetof(struct ConfigRestrictModReqSCG, _asn_ctx),
+       asn_MAP_ConfigRestrictModReqSCG_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_ConfigRestrictModReqSCG_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfigRestrictModReqSCG = {
+       "ConfigRestrictModReqSCG",
+       "ConfigRestrictModReqSCG",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ConfigRestrictModReqSCG_tags_1,
+       sizeof(asn_DEF_ConfigRestrictModReqSCG_tags_1)
+               /sizeof(asn_DEF_ConfigRestrictModReqSCG_tags_1[0]), /* 1 */
+       asn_DEF_ConfigRestrictModReqSCG_tags_1, /* Same as above */
+       sizeof(asn_DEF_ConfigRestrictModReqSCG_tags_1)
+               /sizeof(asn_DEF_ConfigRestrictModReqSCG_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ConfigRestrictModReqSCG_1,
+       2,      /* Elements count */
+       &asn_SPC_ConfigRestrictModReqSCG_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ConfigRestrictModReqSCG.h b/src/codec_utils/RRC/ConfigRestrictModReqSCG.h
new file mode 100644 (file)
index 0000000..7ccbf85
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ConfigRestrictModReqSCG_H_
+#define        _ConfigRestrictModReqSCG_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "P-Max.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BandCombinationInfoSN;
+
+/* ConfigRestrictModReqSCG */
+typedef struct ConfigRestrictModReqSCG {
+       struct BandCombinationInfoSN    *requestedBC_MRDC;      /* OPTIONAL */
+       P_Max_t *requestedP_MaxFR1;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ConfigRestrictModReqSCG_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConfigRestrictModReqSCG;
+extern asn_SEQUENCE_specifics_t asn_SPC_ConfigRestrictModReqSCG_specs_1;
+extern asn_TYPE_member_t asn_MBR_ConfigRestrictModReqSCG_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ConfigRestrictModReqSCG_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ConfiguredGrantConfig.c b/src/codec_utils/RRC/ConfiguredGrantConfig.c
new file mode 100644 (file)
index 0000000..fd144fb
--- /dev/null
@@ -0,0 +1,1379 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ConfiguredGrantConfig.h"
+
+#include "CG-UCI-OnPUSCH.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.
+ */
+static int
+memb_timeDomainOffset_constraint_85(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 <= 5119)) {
+               /* 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_timeDomainAllocation_constraint_85(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 <= 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_frequencyDomainAllocation_constraint_85(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_antennaPort_constraint_85(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 <= 31)) {
+               /* 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_dmrs_SeqInitialization_constraint_85(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 <= 1)) {
+               /* 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_precodingAndNumberOfLayers_constraint_85(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;
+       }
+}
+
+static int
+memb_srs_ResourceIndicator_constraint_85(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 <= 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_mcsAndTBS_constraint_85(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 <= 31)) {
+               /* 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_frequencyHoppingOffset_constraint_85(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 <= 274)) {
+               /* 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_pathlossReferenceIndex_constraint_85(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 <= 3)) {
+               /* 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_nrofHARQ_Processes_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 <= 16)) {
+               /* 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_configuredGrantTimer_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 <= 64)) {
+               /* 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_frequencyHopping_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyHopping_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mcs_Table_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_Table_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mcs_TableTransformPrecoder_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_TableTransformPrecoder_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_uci_OnPUSCH_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uci_OnPUSCH_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_resourceAllocation_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceAllocation_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rbg_Size_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rbg_Size_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_powerControlLoopToUse_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_powerControlLoopToUse_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_transformPrecoder_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_transformPrecoder_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_repK_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_repK_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_repK_RV_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_repK_RV_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_periodicity_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicity_constr_38 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  44 }       /* (0..44) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDomainOffset_constr_86 CC_NOTUSED = {
+       { 2, 1 }        /* (0..5119) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDomainOffset_constr_86 CC_NOTUSED = {
+       { APC_CONSTRAINED,       13,  13,  0,  5119 }   /* (0..5119) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDomainAllocation_constr_87 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDomainAllocation_constr_87 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyDomainAllocation_constr_88 CC_NOTUSED = {
+       { 0, 0 },
+       18      /* (SIZE(18..18)) */};
+static asn_per_constraints_t asn_PER_memb_frequencyDomainAllocation_constr_88 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_antennaPort_constr_89 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_antennaPort_constr_89 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dmrs_SeqInitialization_constr_90 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_dmrs_SeqInitialization_constr_90 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_precodingAndNumberOfLayers_constr_91 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_precodingAndNumberOfLayers_constr_91 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_ResourceIndicator_constr_92 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceIndicator_constr_92 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mcsAndTBS_constr_93 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_mcsAndTBS_constr_93 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyHoppingOffset_constr_94 CC_NOTUSED = {
+       { 2, 1 }        /* (1..274) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frequencyHoppingOffset_constr_94 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  274 }      /* (1..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pathlossReferenceIndex_constr_95 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_pathlossReferenceIndex_constr_95 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofHARQ_Processes_constr_28 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofHARQ_Processes_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_configuredGrantTimer_constr_84 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_configuredGrantTimer_constr_84 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_frequencyHopping_value2enum_2[] = {
+       { 0,    9,      "intraSlot" },
+       { 1,    9,      "interSlot" }
+};
+static const unsigned int asn_MAP_frequencyHopping_enum2value_2[] = {
+       1,      /* interSlot(1) */
+       0       /* intraSlot(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_frequencyHopping_specs_2 = {
+       asn_MAP_frequencyHopping_value2enum_2,  /* "tag" => N; sorted by tag */
+       asn_MAP_frequencyHopping_enum2value_2,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_frequencyHopping_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_frequencyHopping_2 = {
+       "frequencyHopping",
+       "frequencyHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_frequencyHopping_tags_2,
+       sizeof(asn_DEF_frequencyHopping_tags_2)
+               /sizeof(asn_DEF_frequencyHopping_tags_2[0]) - 1, /* 1 */
+       asn_DEF_frequencyHopping_tags_2,        /* Same as above */
+       sizeof(asn_DEF_frequencyHopping_tags_2)
+               /sizeof(asn_DEF_frequencyHopping_tags_2[0]), /* 2 */
+       { &asn_OER_type_frequencyHopping_constr_2, &asn_PER_type_frequencyHopping_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_frequencyHopping_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_Table_value2enum_6[] = {
+       { 0,    6,      "qam256" },
+       { 1,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_Table_enum2value_6[] = {
+       0,      /* qam256(0) */
+       1       /* qam64LowSE(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_Table_specs_6 = {
+       asn_MAP_mcs_Table_value2enum_6, /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_Table_enum2value_6, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_Table_tags_6[] = {
+       (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_mcs_Table_6 = {
+       "mcs-Table",
+       "mcs-Table",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_Table_tags_6,
+       sizeof(asn_DEF_mcs_Table_tags_6)
+               /sizeof(asn_DEF_mcs_Table_tags_6[0]) - 1, /* 1 */
+       asn_DEF_mcs_Table_tags_6,       /* Same as above */
+       sizeof(asn_DEF_mcs_Table_tags_6)
+               /sizeof(asn_DEF_mcs_Table_tags_6[0]), /* 2 */
+       { &asn_OER_type_mcs_Table_constr_6, &asn_PER_type_mcs_Table_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_Table_specs_6      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_TableTransformPrecoder_value2enum_9[] = {
+       { 0,    6,      "qam256" },
+       { 1,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_TableTransformPrecoder_enum2value_9[] = {
+       0,      /* qam256(0) */
+       1       /* qam64LowSE(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_TableTransformPrecoder_specs_9 = {
+       asn_MAP_mcs_TableTransformPrecoder_value2enum_9,        /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_TableTransformPrecoder_enum2value_9,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_TableTransformPrecoder_tags_9[] = {
+       (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_mcs_TableTransformPrecoder_9 = {
+       "mcs-TableTransformPrecoder",
+       "mcs-TableTransformPrecoder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_TableTransformPrecoder_tags_9,
+       sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_9)
+               /sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_9[0]) - 1, /* 1 */
+       asn_DEF_mcs_TableTransformPrecoder_tags_9,      /* Same as above */
+       sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_9)
+               /sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_9[0]), /* 2 */
+       { &asn_OER_type_mcs_TableTransformPrecoder_constr_9, &asn_PER_type_mcs_TableTransformPrecoder_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_TableTransformPrecoder_specs_9     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uci_OnPUSCH_12[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__uci_OnPUSCH, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ConfiguredGrantConfig__uci_OnPUSCH, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CG_UCI_OnPUSCH,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_uci_OnPUSCH_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_uci_OnPUSCH_specs_12 = {
+       sizeof(struct ConfiguredGrantConfig__uci_OnPUSCH),
+       offsetof(struct ConfiguredGrantConfig__uci_OnPUSCH, _asn_ctx),
+       offsetof(struct ConfiguredGrantConfig__uci_OnPUSCH, present),
+       sizeof(((struct ConfiguredGrantConfig__uci_OnPUSCH *)0)->present),
+       asn_MAP_uci_OnPUSCH_tag2el_12,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uci_OnPUSCH_12 = {
+       "uci-OnPUSCH",
+       "uci-OnPUSCH",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_uci_OnPUSCH_constr_12, &asn_PER_type_uci_OnPUSCH_constr_12, CHOICE_constraint },
+       asn_MBR_uci_OnPUSCH_12,
+       2,      /* Elements count */
+       &asn_SPC_uci_OnPUSCH_specs_12   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceAllocation_value2enum_15[] = {
+       { 0,    23,     "resourceAllocationType0" },
+       { 1,    23,     "resourceAllocationType1" },
+       { 2,    13,     "dynamicSwitch" }
+};
+static const unsigned int asn_MAP_resourceAllocation_enum2value_15[] = {
+       2,      /* dynamicSwitch(2) */
+       0,      /* resourceAllocationType0(0) */
+       1       /* resourceAllocationType1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceAllocation_specs_15 = {
+       asn_MAP_resourceAllocation_value2enum_15,       /* "tag" => N; sorted by tag */
+       asn_MAP_resourceAllocation_enum2value_15,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceAllocation_tags_15[] = {
+       (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_resourceAllocation_15 = {
+       "resourceAllocation",
+       "resourceAllocation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceAllocation_tags_15,
+       sizeof(asn_DEF_resourceAllocation_tags_15)
+               /sizeof(asn_DEF_resourceAllocation_tags_15[0]) - 1, /* 1 */
+       asn_DEF_resourceAllocation_tags_15,     /* Same as above */
+       sizeof(asn_DEF_resourceAllocation_tags_15)
+               /sizeof(asn_DEF_resourceAllocation_tags_15[0]), /* 2 */
+       { &asn_OER_type_resourceAllocation_constr_15, &asn_PER_type_resourceAllocation_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceAllocation_specs_15    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rbg_Size_value2enum_19[] = {
+       { 0,    7,      "config2" }
+};
+static const unsigned int asn_MAP_rbg_Size_enum2value_19[] = {
+       0       /* config2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rbg_Size_specs_19 = {
+       asn_MAP_rbg_Size_value2enum_19, /* "tag" => N; sorted by tag */
+       asn_MAP_rbg_Size_enum2value_19, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rbg_Size_tags_19[] = {
+       (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_rbg_Size_19 = {
+       "rbg-Size",
+       "rbg-Size",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rbg_Size_tags_19,
+       sizeof(asn_DEF_rbg_Size_tags_19)
+               /sizeof(asn_DEF_rbg_Size_tags_19[0]) - 1, /* 1 */
+       asn_DEF_rbg_Size_tags_19,       /* Same as above */
+       sizeof(asn_DEF_rbg_Size_tags_19)
+               /sizeof(asn_DEF_rbg_Size_tags_19[0]), /* 2 */
+       { &asn_OER_type_rbg_Size_constr_19, &asn_PER_type_rbg_Size_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rbg_Size_specs_19      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_powerControlLoopToUse_value2enum_21[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" }
+};
+static const unsigned int asn_MAP_powerControlLoopToUse_enum2value_21[] = {
+       0,      /* n0(0) */
+       1       /* n1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_powerControlLoopToUse_specs_21 = {
+       asn_MAP_powerControlLoopToUse_value2enum_21,    /* "tag" => N; sorted by tag */
+       asn_MAP_powerControlLoopToUse_enum2value_21,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_powerControlLoopToUse_tags_21[] = {
+       (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_powerControlLoopToUse_21 = {
+       "powerControlLoopToUse",
+       "powerControlLoopToUse",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_powerControlLoopToUse_tags_21,
+       sizeof(asn_DEF_powerControlLoopToUse_tags_21)
+               /sizeof(asn_DEF_powerControlLoopToUse_tags_21[0]) - 1, /* 1 */
+       asn_DEF_powerControlLoopToUse_tags_21,  /* Same as above */
+       sizeof(asn_DEF_powerControlLoopToUse_tags_21)
+               /sizeof(asn_DEF_powerControlLoopToUse_tags_21[0]), /* 2 */
+       { &asn_OER_type_powerControlLoopToUse_constr_21, &asn_PER_type_powerControlLoopToUse_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_powerControlLoopToUse_specs_21 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_transformPrecoder_value2enum_25[] = {
+       { 0,    7,      "enabled" },
+       { 1,    8,      "disabled" }
+};
+static const unsigned int asn_MAP_transformPrecoder_enum2value_25[] = {
+       1,      /* disabled(1) */
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_transformPrecoder_specs_25 = {
+       asn_MAP_transformPrecoder_value2enum_25,        /* "tag" => N; sorted by tag */
+       asn_MAP_transformPrecoder_enum2value_25,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_transformPrecoder_tags_25[] = {
+       (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_transformPrecoder_25 = {
+       "transformPrecoder",
+       "transformPrecoder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_transformPrecoder_tags_25,
+       sizeof(asn_DEF_transformPrecoder_tags_25)
+               /sizeof(asn_DEF_transformPrecoder_tags_25[0]) - 1, /* 1 */
+       asn_DEF_transformPrecoder_tags_25,      /* Same as above */
+       sizeof(asn_DEF_transformPrecoder_tags_25)
+               /sizeof(asn_DEF_transformPrecoder_tags_25[0]), /* 2 */
+       { &asn_OER_type_transformPrecoder_constr_25, &asn_PER_type_transformPrecoder_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_transformPrecoder_specs_25     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_repK_value2enum_29[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" }
+};
+static const unsigned int asn_MAP_repK_enum2value_29[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_repK_specs_29 = {
+       asn_MAP_repK_value2enum_29,     /* "tag" => N; sorted by tag */
+       asn_MAP_repK_enum2value_29,     /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_repK_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_repK_29 = {
+       "repK",
+       "repK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_repK_tags_29,
+       sizeof(asn_DEF_repK_tags_29)
+               /sizeof(asn_DEF_repK_tags_29[0]) - 1, /* 1 */
+       asn_DEF_repK_tags_29,   /* Same as above */
+       sizeof(asn_DEF_repK_tags_29)
+               /sizeof(asn_DEF_repK_tags_29[0]), /* 2 */
+       { &asn_OER_type_repK_constr_29, &asn_PER_type_repK_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_repK_specs_29  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_repK_RV_value2enum_34[] = {
+       { 0,    7,      "s1-0231" },
+       { 1,    7,      "s2-0303" },
+       { 2,    7,      "s3-0000" }
+};
+static const unsigned int asn_MAP_repK_RV_enum2value_34[] = {
+       0,      /* s1-0231(0) */
+       1,      /* s2-0303(1) */
+       2       /* s3-0000(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_repK_RV_specs_34 = {
+       asn_MAP_repK_RV_value2enum_34,  /* "tag" => N; sorted by tag */
+       asn_MAP_repK_RV_enum2value_34,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_repK_RV_tags_34[] = {
+       (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_repK_RV_34 = {
+       "repK-RV",
+       "repK-RV",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_repK_RV_tags_34,
+       sizeof(asn_DEF_repK_RV_tags_34)
+               /sizeof(asn_DEF_repK_RV_tags_34[0]) - 1, /* 1 */
+       asn_DEF_repK_RV_tags_34,        /* Same as above */
+       sizeof(asn_DEF_repK_RV_tags_34)
+               /sizeof(asn_DEF_repK_RV_tags_34[0]), /* 2 */
+       { &asn_OER_type_repK_RV_constr_34, &asn_PER_type_repK_RV_constr_34, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_repK_RV_specs_34       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_periodicity_value2enum_38[] = {
+       { 0,    4,      "sym2" },
+       { 1,    4,      "sym7" },
+       { 2,    7,      "sym1x14" },
+       { 3,    7,      "sym2x14" },
+       { 4,    7,      "sym4x14" },
+       { 5,    7,      "sym5x14" },
+       { 6,    7,      "sym8x14" },
+       { 7,    8,      "sym10x14" },
+       { 8,    8,      "sym16x14" },
+       { 9,    8,      "sym20x14" },
+       { 10,   8,      "sym32x14" },
+       { 11,   8,      "sym40x14" },
+       { 12,   8,      "sym64x14" },
+       { 13,   8,      "sym80x14" },
+       { 14,   9,      "sym128x14" },
+       { 15,   9,      "sym160x14" },
+       { 16,   9,      "sym256x14" },
+       { 17,   9,      "sym320x14" },
+       { 18,   9,      "sym512x14" },
+       { 19,   9,      "sym640x14" },
+       { 20,   10,     "sym1024x14" },
+       { 21,   10,     "sym1280x14" },
+       { 22,   10,     "sym2560x14" },
+       { 23,   10,     "sym5120x14" },
+       { 24,   4,      "sym6" },
+       { 25,   7,      "sym1x12" },
+       { 26,   7,      "sym2x12" },
+       { 27,   7,      "sym4x12" },
+       { 28,   7,      "sym5x12" },
+       { 29,   7,      "sym8x12" },
+       { 30,   8,      "sym10x12" },
+       { 31,   8,      "sym16x12" },
+       { 32,   8,      "sym20x12" },
+       { 33,   8,      "sym32x12" },
+       { 34,   8,      "sym40x12" },
+       { 35,   8,      "sym64x12" },
+       { 36,   8,      "sym80x12" },
+       { 37,   9,      "sym128x12" },
+       { 38,   9,      "sym160x12" },
+       { 39,   9,      "sym256x12" },
+       { 40,   9,      "sym320x12" },
+       { 41,   9,      "sym512x12" },
+       { 42,   9,      "sym640x12" },
+       { 43,   10,     "sym1280x12" },
+       { 44,   10,     "sym2560x12" }
+};
+static const unsigned int asn_MAP_periodicity_enum2value_38[] = {
+       20,     /* sym1024x14(20) */
+       30,     /* sym10x12(30) */
+       7,      /* sym10x14(7) */
+       43,     /* sym1280x12(43) */
+       21,     /* sym1280x14(21) */
+       37,     /* sym128x12(37) */
+       14,     /* sym128x14(14) */
+       38,     /* sym160x12(38) */
+       15,     /* sym160x14(15) */
+       31,     /* sym16x12(31) */
+       8,      /* sym16x14(8) */
+       25,     /* sym1x12(25) */
+       2,      /* sym1x14(2) */
+       0,      /* sym2(0) */
+       32,     /* sym20x12(32) */
+       9,      /* sym20x14(9) */
+       44,     /* sym2560x12(44) */
+       22,     /* sym2560x14(22) */
+       39,     /* sym256x12(39) */
+       16,     /* sym256x14(16) */
+       26,     /* sym2x12(26) */
+       3,      /* sym2x14(3) */
+       40,     /* sym320x12(40) */
+       17,     /* sym320x14(17) */
+       33,     /* sym32x12(33) */
+       10,     /* sym32x14(10) */
+       34,     /* sym40x12(34) */
+       11,     /* sym40x14(11) */
+       27,     /* sym4x12(27) */
+       4,      /* sym4x14(4) */
+       23,     /* sym5120x14(23) */
+       41,     /* sym512x12(41) */
+       18,     /* sym512x14(18) */
+       28,     /* sym5x12(28) */
+       5,      /* sym5x14(5) */
+       24,     /* sym6(24) */
+       42,     /* sym640x12(42) */
+       19,     /* sym640x14(19) */
+       35,     /* sym64x12(35) */
+       12,     /* sym64x14(12) */
+       1,      /* sym7(1) */
+       36,     /* sym80x12(36) */
+       13,     /* sym80x14(13) */
+       29,     /* sym8x12(29) */
+       6       /* sym8x14(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_periodicity_specs_38 = {
+       asn_MAP_periodicity_value2enum_38,      /* "tag" => N; sorted by tag */
+       asn_MAP_periodicity_enum2value_38,      /* N => "tag"; sorted by N */
+       45,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_periodicity_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodicity_38 = {
+       "periodicity",
+       "periodicity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_periodicity_tags_38,
+       sizeof(asn_DEF_periodicity_tags_38)
+               /sizeof(asn_DEF_periodicity_tags_38[0]) - 1, /* 1 */
+       asn_DEF_periodicity_tags_38,    /* Same as above */
+       sizeof(asn_DEF_periodicity_tags_38)
+               /sizeof(asn_DEF_periodicity_tags_38[0]), /* 2 */
+       { &asn_OER_type_periodicity_constr_38, &asn_PER_type_periodicity_constr_38, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_periodicity_specs_38   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rrc_ConfiguredUplinkGrant_85[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, timeDomainOffset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDomainOffset_constr_86, &asn_PER_memb_timeDomainOffset_constr_86,  memb_timeDomainOffset_constraint_85 },
+               0, 0, /* No default value */
+               "timeDomainOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, timeDomainAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDomainAllocation_constr_87, &asn_PER_memb_timeDomainAllocation_constr_87,  memb_timeDomainAllocation_constraint_85 },
+               0, 0, /* No default value */
+               "timeDomainAllocation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, frequencyDomainAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_frequencyDomainAllocation_constr_88, &asn_PER_memb_frequencyDomainAllocation_constr_88,  memb_frequencyDomainAllocation_constraint_85 },
+               0, 0, /* No default value */
+               "frequencyDomainAllocation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, antennaPort),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_antennaPort_constr_89, &asn_PER_memb_antennaPort_constr_89,  memb_antennaPort_constraint_85 },
+               0, 0, /* No default value */
+               "antennaPort"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, dmrs_SeqInitialization),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_dmrs_SeqInitialization_constr_90, &asn_PER_memb_dmrs_SeqInitialization_constr_90,  memb_dmrs_SeqInitialization_constraint_85 },
+               0, 0, /* No default value */
+               "dmrs-SeqInitialization"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, precodingAndNumberOfLayers),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_precodingAndNumberOfLayers_constr_91, &asn_PER_memb_precodingAndNumberOfLayers_constr_91,  memb_precodingAndNumberOfLayers_constraint_85 },
+               0, 0, /* No default value */
+               "precodingAndNumberOfLayers"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, srs_ResourceIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_srs_ResourceIndicator_constr_92, &asn_PER_memb_srs_ResourceIndicator_constr_92,  memb_srs_ResourceIndicator_constraint_85 },
+               0, 0, /* No default value */
+               "srs-ResourceIndicator"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, mcsAndTBS),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_mcsAndTBS_constr_93, &asn_PER_memb_mcsAndTBS_constr_93,  memb_mcsAndTBS_constraint_85 },
+               0, 0, /* No default value */
+               "mcsAndTBS"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, frequencyHoppingOffset),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frequencyHoppingOffset_constr_94, &asn_PER_memb_frequencyHoppingOffset_constr_94,  memb_frequencyHoppingOffset_constraint_85 },
+               0, 0, /* No default value */
+               "frequencyHoppingOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, pathlossReferenceIndex),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_pathlossReferenceIndex_constr_95, &asn_PER_memb_pathlossReferenceIndex_constr_95,  memb_pathlossReferenceIndex_constraint_85 },
+               0, 0, /* No default value */
+               "pathlossReferenceIndex"
+               },
+};
+static const int asn_MAP_rrc_ConfiguredUplinkGrant_oms_85[] = { 4, 6, 8 };
+static const ber_tlv_tag_t asn_DEF_rrc_ConfiguredUplinkGrant_tags_85[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_rrc_ConfiguredUplinkGrant_tag2el_85[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeDomainOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeDomainAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* frequencyDomainAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* antennaPort */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dmrs-SeqInitialization */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* precodingAndNumberOfLayers */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* srs-ResourceIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* mcsAndTBS */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* frequencyHoppingOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* pathlossReferenceIndex */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_rrc_ConfiguredUplinkGrant_specs_85 = {
+       sizeof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant),
+       offsetof(struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant, _asn_ctx),
+       asn_MAP_rrc_ConfiguredUplinkGrant_tag2el_85,
+       10,     /* Count of tags in the map */
+       asn_MAP_rrc_ConfiguredUplinkGrant_oms_85,       /* Optional members */
+       3, 0,   /* Root/Additions */
+       10,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rrc_ConfiguredUplinkGrant_85 = {
+       "rrc-ConfiguredUplinkGrant",
+       "rrc-ConfiguredUplinkGrant",
+       &asn_OP_SEQUENCE,
+       asn_DEF_rrc_ConfiguredUplinkGrant_tags_85,
+       sizeof(asn_DEF_rrc_ConfiguredUplinkGrant_tags_85)
+               /sizeof(asn_DEF_rrc_ConfiguredUplinkGrant_tags_85[0]) - 1, /* 1 */
+       asn_DEF_rrc_ConfiguredUplinkGrant_tags_85,      /* Same as above */
+       sizeof(asn_DEF_rrc_ConfiguredUplinkGrant_tags_85)
+               /sizeof(asn_DEF_rrc_ConfiguredUplinkGrant_tags_85[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_rrc_ConfiguredUplinkGrant_85,
+       10,     /* Elements count */
+       &asn_SPC_rrc_ConfiguredUplinkGrant_specs_85     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ConfiguredGrantConfig_1[] = {
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, frequencyHopping),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_frequencyHopping_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyHopping"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, cg_DMRS_Configuration),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DMRS_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cg-DMRS-Configuration"
+               },
+       { ATF_POINTER, 3, offsetof(struct ConfiguredGrantConfig, mcs_Table),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_Table_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-Table"
+               },
+       { ATF_POINTER, 2, offsetof(struct ConfiguredGrantConfig, mcs_TableTransformPrecoder),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_TableTransformPrecoder_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-TableTransformPrecoder"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, uci_OnPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_uci_OnPUSCH_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uci-OnPUSCH"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, resourceAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceAllocation_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceAllocation"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, rbg_Size),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rbg_Size_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rbg-Size"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, powerControlLoopToUse),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_powerControlLoopToUse_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerControlLoopToUse"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, p0_PUSCH_Alpha),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUSCH_AlphaSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p0-PUSCH-Alpha"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, transformPrecoder),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_transformPrecoder_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecoder"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, nrofHARQ_Processes),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofHARQ_Processes_constr_28, &asn_PER_memb_nrofHARQ_Processes_constr_28,  memb_nrofHARQ_Processes_constraint_1 },
+               0, 0, /* No default value */
+               "nrofHARQ-Processes"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, repK),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_repK_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "repK"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, repK_RV),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_repK_RV_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "repK-RV"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConfiguredGrantConfig, periodicity),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_periodicity_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicity"
+               },
+       { ATF_POINTER, 2, offsetof(struct ConfiguredGrantConfig, configuredGrantTimer),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_configuredGrantTimer_constr_84, &asn_PER_memb_configuredGrantTimer_constr_84,  memb_configuredGrantTimer_constraint_1 },
+               0, 0, /* No default value */
+               "configuredGrantTimer"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConfiguredGrantConfig, rrc_ConfiguredUplinkGrant),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               0,
+               &asn_DEF_rrc_ConfiguredUplinkGrant_85,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-ConfiguredUplinkGrant"
+               },
+};
+static const int asn_MAP_ConfiguredGrantConfig_oms_1[] = { 0, 2, 3, 4, 6, 9, 12, 14, 15 };
+static const ber_tlv_tag_t asn_DEF_ConfiguredGrantConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConfiguredGrantConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cg-DMRS-Configuration */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mcs-Table */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* mcs-TableTransformPrecoder */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* uci-OnPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* resourceAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rbg-Size */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* powerControlLoopToUse */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* p0-PUSCH-Alpha */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* transformPrecoder */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* nrofHARQ-Processes */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* repK */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* repK-RV */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* periodicity */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* configuredGrantTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* rrc-ConfiguredUplinkGrant */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ConfiguredGrantConfig_specs_1 = {
+       sizeof(struct ConfiguredGrantConfig),
+       offsetof(struct ConfiguredGrantConfig, _asn_ctx),
+       asn_MAP_ConfiguredGrantConfig_tag2el_1,
+       16,     /* Count of tags in the map */
+       asn_MAP_ConfiguredGrantConfig_oms_1,    /* Optional members */
+       9, 0,   /* Root/Additions */
+       16,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ConfiguredGrantConfig = {
+       "ConfiguredGrantConfig",
+       "ConfiguredGrantConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ConfiguredGrantConfig_tags_1,
+       sizeof(asn_DEF_ConfiguredGrantConfig_tags_1)
+               /sizeof(asn_DEF_ConfiguredGrantConfig_tags_1[0]), /* 1 */
+       asn_DEF_ConfiguredGrantConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ConfiguredGrantConfig_tags_1)
+               /sizeof(asn_DEF_ConfiguredGrantConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ConfiguredGrantConfig_1,
+       16,     /* Elements count */
+       &asn_SPC_ConfiguredGrantConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ConfiguredGrantConfig.h b/src/codec_utils/RRC/ConfiguredGrantConfig.h
new file mode 100644 (file)
index 0000000..6b22340
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ConfiguredGrantConfig_H_
+#define        _ConfiguredGrantConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "DMRS-UplinkConfig.h"
+#include "P0-PUSCH-AlphaSetId.h"
+#include <NativeInteger.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ConfiguredGrantConfig__frequencyHopping {
+       ConfiguredGrantConfig__frequencyHopping_intraSlot       = 0,
+       ConfiguredGrantConfig__frequencyHopping_interSlot       = 1
+} e_ConfiguredGrantConfig__frequencyHopping;
+typedef enum ConfiguredGrantConfig__mcs_Table {
+       ConfiguredGrantConfig__mcs_Table_qam256 = 0,
+       ConfiguredGrantConfig__mcs_Table_qam64LowSE     = 1
+} e_ConfiguredGrantConfig__mcs_Table;
+typedef enum ConfiguredGrantConfig__mcs_TableTransformPrecoder {
+       ConfiguredGrantConfig__mcs_TableTransformPrecoder_qam256        = 0,
+       ConfiguredGrantConfig__mcs_TableTransformPrecoder_qam64LowSE    = 1
+} e_ConfiguredGrantConfig__mcs_TableTransformPrecoder;
+typedef enum ConfiguredGrantConfig__uci_OnPUSCH_PR {
+       ConfiguredGrantConfig__uci_OnPUSCH_PR_NOTHING,  /* No components present */
+       ConfiguredGrantConfig__uci_OnPUSCH_PR_release,
+       ConfiguredGrantConfig__uci_OnPUSCH_PR_setup
+} ConfiguredGrantConfig__uci_OnPUSCH_PR;
+typedef enum ConfiguredGrantConfig__resourceAllocation {
+       ConfiguredGrantConfig__resourceAllocation_resourceAllocationType0       = 0,
+       ConfiguredGrantConfig__resourceAllocation_resourceAllocationType1       = 1,
+       ConfiguredGrantConfig__resourceAllocation_dynamicSwitch = 2
+} e_ConfiguredGrantConfig__resourceAllocation;
+typedef enum ConfiguredGrantConfig__rbg_Size {
+       ConfiguredGrantConfig__rbg_Size_config2 = 0
+} e_ConfiguredGrantConfig__rbg_Size;
+typedef enum ConfiguredGrantConfig__powerControlLoopToUse {
+       ConfiguredGrantConfig__powerControlLoopToUse_n0 = 0,
+       ConfiguredGrantConfig__powerControlLoopToUse_n1 = 1
+} e_ConfiguredGrantConfig__powerControlLoopToUse;
+typedef enum ConfiguredGrantConfig__transformPrecoder {
+       ConfiguredGrantConfig__transformPrecoder_enabled        = 0,
+       ConfiguredGrantConfig__transformPrecoder_disabled       = 1
+} e_ConfiguredGrantConfig__transformPrecoder;
+typedef enum ConfiguredGrantConfig__repK {
+       ConfiguredGrantConfig__repK_n1  = 0,
+       ConfiguredGrantConfig__repK_n2  = 1,
+       ConfiguredGrantConfig__repK_n4  = 2,
+       ConfiguredGrantConfig__repK_n8  = 3
+} e_ConfiguredGrantConfig__repK;
+typedef enum ConfiguredGrantConfig__repK_RV {
+       ConfiguredGrantConfig__repK_RV_s1_0231  = 0,
+       ConfiguredGrantConfig__repK_RV_s2_0303  = 1,
+       ConfiguredGrantConfig__repK_RV_s3_0000  = 2
+} e_ConfiguredGrantConfig__repK_RV;
+typedef enum ConfiguredGrantConfig__periodicity {
+       ConfiguredGrantConfig__periodicity_sym2 = 0,
+       ConfiguredGrantConfig__periodicity_sym7 = 1,
+       ConfiguredGrantConfig__periodicity_sym1x14      = 2,
+       ConfiguredGrantConfig__periodicity_sym2x14      = 3,
+       ConfiguredGrantConfig__periodicity_sym4x14      = 4,
+       ConfiguredGrantConfig__periodicity_sym5x14      = 5,
+       ConfiguredGrantConfig__periodicity_sym8x14      = 6,
+       ConfiguredGrantConfig__periodicity_sym10x14     = 7,
+       ConfiguredGrantConfig__periodicity_sym16x14     = 8,
+       ConfiguredGrantConfig__periodicity_sym20x14     = 9,
+       ConfiguredGrantConfig__periodicity_sym32x14     = 10,
+       ConfiguredGrantConfig__periodicity_sym40x14     = 11,
+       ConfiguredGrantConfig__periodicity_sym64x14     = 12,
+       ConfiguredGrantConfig__periodicity_sym80x14     = 13,
+       ConfiguredGrantConfig__periodicity_sym128x14    = 14,
+       ConfiguredGrantConfig__periodicity_sym160x14    = 15,
+       ConfiguredGrantConfig__periodicity_sym256x14    = 16,
+       ConfiguredGrantConfig__periodicity_sym320x14    = 17,
+       ConfiguredGrantConfig__periodicity_sym512x14    = 18,
+       ConfiguredGrantConfig__periodicity_sym640x14    = 19,
+       ConfiguredGrantConfig__periodicity_sym1024x14   = 20,
+       ConfiguredGrantConfig__periodicity_sym1280x14   = 21,
+       ConfiguredGrantConfig__periodicity_sym2560x14   = 22,
+       ConfiguredGrantConfig__periodicity_sym5120x14   = 23,
+       ConfiguredGrantConfig__periodicity_sym6 = 24,
+       ConfiguredGrantConfig__periodicity_sym1x12      = 25,
+       ConfiguredGrantConfig__periodicity_sym2x12      = 26,
+       ConfiguredGrantConfig__periodicity_sym4x12      = 27,
+       ConfiguredGrantConfig__periodicity_sym5x12      = 28,
+       ConfiguredGrantConfig__periodicity_sym8x12      = 29,
+       ConfiguredGrantConfig__periodicity_sym10x12     = 30,
+       ConfiguredGrantConfig__periodicity_sym16x12     = 31,
+       ConfiguredGrantConfig__periodicity_sym20x12     = 32,
+       ConfiguredGrantConfig__periodicity_sym32x12     = 33,
+       ConfiguredGrantConfig__periodicity_sym40x12     = 34,
+       ConfiguredGrantConfig__periodicity_sym64x12     = 35,
+       ConfiguredGrantConfig__periodicity_sym80x12     = 36,
+       ConfiguredGrantConfig__periodicity_sym128x12    = 37,
+       ConfiguredGrantConfig__periodicity_sym160x12    = 38,
+       ConfiguredGrantConfig__periodicity_sym256x12    = 39,
+       ConfiguredGrantConfig__periodicity_sym320x12    = 40,
+       ConfiguredGrantConfig__periodicity_sym512x12    = 41,
+       ConfiguredGrantConfig__periodicity_sym640x12    = 42,
+       ConfiguredGrantConfig__periodicity_sym1280x12   = 43,
+       ConfiguredGrantConfig__periodicity_sym2560x12   = 44
+} e_ConfiguredGrantConfig__periodicity;
+
+/* Forward declarations */
+struct CG_UCI_OnPUSCH;
+
+/* ConfiguredGrantConfig */
+typedef struct ConfiguredGrantConfig {
+       long    *frequencyHopping;      /* OPTIONAL */
+       DMRS_UplinkConfig_t      cg_DMRS_Configuration;
+       long    *mcs_Table;     /* OPTIONAL */
+       long    *mcs_TableTransformPrecoder;    /* OPTIONAL */
+       struct ConfiguredGrantConfig__uci_OnPUSCH {
+               ConfiguredGrantConfig__uci_OnPUSCH_PR present;
+               union ConfiguredGrantConfig__uci_OnPUSCH_u {
+                       NULL_t   release;
+                       struct CG_UCI_OnPUSCH   *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uci_OnPUSCH;
+       long     resourceAllocation;
+       long    *rbg_Size;      /* OPTIONAL */
+       long     powerControlLoopToUse;
+       P0_PUSCH_AlphaSetId_t    p0_PUSCH_Alpha;
+       long    *transformPrecoder;     /* OPTIONAL */
+       long     nrofHARQ_Processes;
+       long     repK;
+       long    *repK_RV;       /* OPTIONAL */
+       long     periodicity;
+       long    *configuredGrantTimer;  /* OPTIONAL */
+       struct ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant {
+               long     timeDomainOffset;
+               long     timeDomainAllocation;
+               BIT_STRING_t     frequencyDomainAllocation;
+               long     antennaPort;
+               long    *dmrs_SeqInitialization;        /* OPTIONAL */
+               long     precodingAndNumberOfLayers;
+               long    *srs_ResourceIndicator; /* OPTIONAL */
+               long     mcsAndTBS;
+               long    *frequencyHoppingOffset;        /* OPTIONAL */
+               long     pathlossReferenceIndex;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rrc_ConfiguredUplinkGrant;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ConfiguredGrantConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_frequencyHopping_2;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_Table_6;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_TableTransformPrecoder_9;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceAllocation_15; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rbg_Size_19;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_powerControlLoopToUse_21;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_transformPrecoder_25;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_repK_29;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_repK_RV_34;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_periodicity_38;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ConfiguredGrantConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_ConfiguredGrantConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_ConfiguredGrantConfig_1[16];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ConfiguredGrantConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ConnEstFailureControl.c b/src/codec_utils/RRC/ConnEstFailureControl.c
new file mode 100644 (file)
index 0000000..e77fe15
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ConnEstFailureControl.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.
+ */
+static int
+memb_connEstFailOffset_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_connEstFailCount_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_connEstFailCount_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_connEstFailOffsetValidity_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_connEstFailOffsetValidity_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_connEstFailOffset_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_connEstFailOffset_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_connEstFailCount_value2enum_2[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" }
+};
+static const unsigned int asn_MAP_connEstFailCount_enum2value_2[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3       /* n4(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_connEstFailCount_specs_2 = {
+       asn_MAP_connEstFailCount_value2enum_2,  /* "tag" => N; sorted by tag */
+       asn_MAP_connEstFailCount_enum2value_2,  /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_connEstFailCount_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_connEstFailCount_2 = {
+       "connEstFailCount",
+       "connEstFailCount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_connEstFailCount_tags_2,
+       sizeof(asn_DEF_connEstFailCount_tags_2)
+               /sizeof(asn_DEF_connEstFailCount_tags_2[0]) - 1, /* 1 */
+       asn_DEF_connEstFailCount_tags_2,        /* Same as above */
+       sizeof(asn_DEF_connEstFailCount_tags_2)
+               /sizeof(asn_DEF_connEstFailCount_tags_2[0]), /* 2 */
+       { &asn_OER_type_connEstFailCount_constr_2, &asn_PER_type_connEstFailCount_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_connEstFailCount_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_connEstFailOffsetValidity_value2enum_7[] = {
+       { 0,    3,      "s30" },
+       { 1,    3,      "s60" },
+       { 2,    4,      "s120" },
+       { 3,    4,      "s240" },
+       { 4,    4,      "s300" },
+       { 5,    4,      "s420" },
+       { 6,    4,      "s600" },
+       { 7,    4,      "s900" }
+};
+static const unsigned int asn_MAP_connEstFailOffsetValidity_enum2value_7[] = {
+       2,      /* s120(2) */
+       3,      /* s240(3) */
+       0,      /* s30(0) */
+       4,      /* s300(4) */
+       5,      /* s420(5) */
+       1,      /* s60(1) */
+       6,      /* s600(6) */
+       7       /* s900(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_connEstFailOffsetValidity_specs_7 = {
+       asn_MAP_connEstFailOffsetValidity_value2enum_7, /* "tag" => N; sorted by tag */
+       asn_MAP_connEstFailOffsetValidity_enum2value_7, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_connEstFailOffsetValidity_tags_7[] = {
+       (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_connEstFailOffsetValidity_7 = {
+       "connEstFailOffsetValidity",
+       "connEstFailOffsetValidity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_connEstFailOffsetValidity_tags_7,
+       sizeof(asn_DEF_connEstFailOffsetValidity_tags_7)
+               /sizeof(asn_DEF_connEstFailOffsetValidity_tags_7[0]) - 1, /* 1 */
+       asn_DEF_connEstFailOffsetValidity_tags_7,       /* Same as above */
+       sizeof(asn_DEF_connEstFailOffsetValidity_tags_7)
+               /sizeof(asn_DEF_connEstFailOffsetValidity_tags_7[0]), /* 2 */
+       { &asn_OER_type_connEstFailOffsetValidity_constr_7, &asn_PER_type_connEstFailOffsetValidity_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_connEstFailOffsetValidity_specs_7      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ConnEstFailureControl_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ConnEstFailureControl, connEstFailCount),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_connEstFailCount_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "connEstFailCount"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ConnEstFailureControl, connEstFailOffsetValidity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_connEstFailOffsetValidity_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "connEstFailOffsetValidity"
+               },
+       { ATF_POINTER, 1, offsetof(struct ConnEstFailureControl, connEstFailOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_connEstFailOffset_constr_16, &asn_PER_memb_connEstFailOffset_constr_16,  memb_connEstFailOffset_constraint_1 },
+               0, 0, /* No default value */
+               "connEstFailOffset"
+               },
+};
+static const int asn_MAP_ConnEstFailureControl_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_ConnEstFailureControl_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ConnEstFailureControl_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* connEstFailCount */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* connEstFailOffsetValidity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* connEstFailOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ConnEstFailureControl_specs_1 = {
+       sizeof(struct ConnEstFailureControl),
+       offsetof(struct ConnEstFailureControl, _asn_ctx),
+       asn_MAP_ConnEstFailureControl_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_ConnEstFailureControl_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ConnEstFailureControl = {
+       "ConnEstFailureControl",
+       "ConnEstFailureControl",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ConnEstFailureControl_tags_1,
+       sizeof(asn_DEF_ConnEstFailureControl_tags_1)
+               /sizeof(asn_DEF_ConnEstFailureControl_tags_1[0]), /* 1 */
+       asn_DEF_ConnEstFailureControl_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ConnEstFailureControl_tags_1)
+               /sizeof(asn_DEF_ConnEstFailureControl_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ConnEstFailureControl_1,
+       3,      /* Elements count */
+       &asn_SPC_ConnEstFailureControl_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ConnEstFailureControl.h b/src/codec_utils/RRC/ConnEstFailureControl.h
new file mode 100644 (file)
index 0000000..39d1292
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ConnEstFailureControl_H_
+#define        _ConnEstFailureControl_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ConnEstFailureControl__connEstFailCount {
+       ConnEstFailureControl__connEstFailCount_n1      = 0,
+       ConnEstFailureControl__connEstFailCount_n2      = 1,
+       ConnEstFailureControl__connEstFailCount_n3      = 2,
+       ConnEstFailureControl__connEstFailCount_n4      = 3
+} e_ConnEstFailureControl__connEstFailCount;
+typedef enum ConnEstFailureControl__connEstFailOffsetValidity {
+       ConnEstFailureControl__connEstFailOffsetValidity_s30    = 0,
+       ConnEstFailureControl__connEstFailOffsetValidity_s60    = 1,
+       ConnEstFailureControl__connEstFailOffsetValidity_s120   = 2,
+       ConnEstFailureControl__connEstFailOffsetValidity_s240   = 3,
+       ConnEstFailureControl__connEstFailOffsetValidity_s300   = 4,
+       ConnEstFailureControl__connEstFailOffsetValidity_s420   = 5,
+       ConnEstFailureControl__connEstFailOffsetValidity_s600   = 6,
+       ConnEstFailureControl__connEstFailOffsetValidity_s900   = 7
+} e_ConnEstFailureControl__connEstFailOffsetValidity;
+
+/* ConnEstFailureControl */
+typedef struct ConnEstFailureControl {
+       long     connEstFailCount;
+       long     connEstFailOffsetValidity;
+       long    *connEstFailOffset;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ConnEstFailureControl_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_connEstFailCount_2;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_connEstFailOffsetValidity_7;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ConnEstFailureControl;
+extern asn_SEQUENCE_specifics_t asn_SPC_ConnEstFailureControl_specs_1;
+extern asn_TYPE_member_t asn_MBR_ConnEstFailureControl_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ConnEstFailureControl_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ControlResourceSet.c b/src/codec_utils/RRC/ControlResourceSet.c
new file mode 100644 (file)
index 0000000..5dc8901
--- /dev/null
@@ -0,0 +1,748 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ControlResourceSet.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.
+ */
+static int
+memb_shiftIndex_constraint_6(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 <= 274)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_frequencyDomainResources_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 == 45)) {
+               /* 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_duration_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 <= 3)) {
+               /* 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_tci_StatesPDCCH_ToAddList_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 <= 64)) {
+               /* 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_tci_StatesPDCCH_ToReleaseList_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 <= 64)) {
+               /* 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_pdcch_DMRS_ScramblingID_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_reg_BundleSize_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reg_BundleSize_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_interleaverSize_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_interleaverSize_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_shiftIndex_constr_15 CC_NOTUSED = {
+       { 2, 1 }        /* (0..274) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_shiftIndex_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cce_REG_MappingType_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cce_REG_MappingType_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_precoderGranularity_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_precoderGranularity_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_tci_PresentInDCI_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tci_PresentInDCI_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_frequencyDomainResources_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       45      /* (SIZE(45..45)) */};
+static asn_per_constraints_t asn_PER_memb_frequencyDomainResources_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  45,  45 }      /* (SIZE(45..45)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_duration_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_duration_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (1..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pdcch_DMRS_ScramblingID_constr_26 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_pdcch_DMRS_ScramblingID_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_reg_BundleSize_value2enum_7[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n3" },
+       { 2,    2,      "n6" }
+};
+static const unsigned int asn_MAP_reg_BundleSize_enum2value_7[] = {
+       0,      /* n2(0) */
+       1,      /* n3(1) */
+       2       /* n6(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reg_BundleSize_specs_7 = {
+       asn_MAP_reg_BundleSize_value2enum_7,    /* "tag" => N; sorted by tag */
+       asn_MAP_reg_BundleSize_enum2value_7,    /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reg_BundleSize_tags_7[] = {
+       (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_reg_BundleSize_7 = {
+       "reg-BundleSize",
+       "reg-BundleSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reg_BundleSize_tags_7,
+       sizeof(asn_DEF_reg_BundleSize_tags_7)
+               /sizeof(asn_DEF_reg_BundleSize_tags_7[0]) - 1, /* 1 */
+       asn_DEF_reg_BundleSize_tags_7,  /* Same as above */
+       sizeof(asn_DEF_reg_BundleSize_tags_7)
+               /sizeof(asn_DEF_reg_BundleSize_tags_7[0]), /* 2 */
+       { &asn_OER_type_reg_BundleSize_constr_7, &asn_PER_type_reg_BundleSize_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reg_BundleSize_specs_7 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_interleaverSize_value2enum_11[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n3" },
+       { 2,    2,      "n6" }
+};
+static const unsigned int asn_MAP_interleaverSize_enum2value_11[] = {
+       0,      /* n2(0) */
+       1,      /* n3(1) */
+       2       /* n6(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interleaverSize_specs_11 = {
+       asn_MAP_interleaverSize_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_interleaverSize_enum2value_11,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_interleaverSize_tags_11[] = {
+       (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_interleaverSize_11 = {
+       "interleaverSize",
+       "interleaverSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_interleaverSize_tags_11,
+       sizeof(asn_DEF_interleaverSize_tags_11)
+               /sizeof(asn_DEF_interleaverSize_tags_11[0]) - 1, /* 1 */
+       asn_DEF_interleaverSize_tags_11,        /* Same as above */
+       sizeof(asn_DEF_interleaverSize_tags_11)
+               /sizeof(asn_DEF_interleaverSize_tags_11[0]), /* 2 */
+       { &asn_OER_type_interleaverSize_constr_11, &asn_PER_type_interleaverSize_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_interleaverSize_specs_11       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_interleaved_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, reg_BundleSize),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reg_BundleSize_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reg-BundleSize"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, interleaverSize),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_interleaverSize_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interleaverSize"
+               },
+       { ATF_POINTER, 1, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, shiftIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_shiftIndex_constr_15, &asn_PER_memb_shiftIndex_constr_15,  memb_shiftIndex_constraint_6 },
+               0, 0, /* No default value */
+               "shiftIndex"
+               },
+};
+static const int asn_MAP_interleaved_oms_6[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_interleaved_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_interleaved_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reg-BundleSize */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interleaverSize */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* shiftIndex */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_interleaved_specs_6 = {
+       sizeof(struct ControlResourceSet__cce_REG_MappingType__interleaved),
+       offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, _asn_ctx),
+       asn_MAP_interleaved_tag2el_6,
+       3,      /* Count of tags in the map */
+       asn_MAP_interleaved_oms_6,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_interleaved_6 = {
+       "interleaved",
+       "interleaved",
+       &asn_OP_SEQUENCE,
+       asn_DEF_interleaved_tags_6,
+       sizeof(asn_DEF_interleaved_tags_6)
+               /sizeof(asn_DEF_interleaved_tags_6[0]) - 1, /* 1 */
+       asn_DEF_interleaved_tags_6,     /* Same as above */
+       sizeof(asn_DEF_interleaved_tags_6)
+               /sizeof(asn_DEF_interleaved_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_interleaved_6,
+       3,      /* Elements count */
+       &asn_SPC_interleaved_specs_6    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cce_REG_MappingType_5[] = {
+       { ATF_POINTER, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType, choice.interleaved),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_interleaved_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interleaved"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType, choice.nonInterleaved),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonInterleaved"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_cce_REG_MappingType_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interleaved */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonInterleaved */
+};
+static asn_CHOICE_specifics_t asn_SPC_cce_REG_MappingType_specs_5 = {
+       sizeof(struct ControlResourceSet__cce_REG_MappingType),
+       offsetof(struct ControlResourceSet__cce_REG_MappingType, _asn_ctx),
+       offsetof(struct ControlResourceSet__cce_REG_MappingType, present),
+       sizeof(((struct ControlResourceSet__cce_REG_MappingType *)0)->present),
+       asn_MAP_cce_REG_MappingType_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cce_REG_MappingType_5 = {
+       "cce-REG-MappingType",
+       "cce-REG-MappingType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_cce_REG_MappingType_constr_5, &asn_PER_type_cce_REG_MappingType_constr_5, CHOICE_constraint },
+       asn_MBR_cce_REG_MappingType_5,
+       2,      /* Elements count */
+       &asn_SPC_cce_REG_MappingType_specs_5    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_precoderGranularity_value2enum_17[] = {
+       { 0,    16,     "sameAsREG-bundle" },
+       { 1,    16,     "allContiguousRBs" }
+};
+static const unsigned int asn_MAP_precoderGranularity_enum2value_17[] = {
+       1,      /* allContiguousRBs(1) */
+       0       /* sameAsREG-bundle(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_precoderGranularity_specs_17 = {
+       asn_MAP_precoderGranularity_value2enum_17,      /* "tag" => N; sorted by tag */
+       asn_MAP_precoderGranularity_enum2value_17,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_precoderGranularity_tags_17[] = {
+       (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_precoderGranularity_17 = {
+       "precoderGranularity",
+       "precoderGranularity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_precoderGranularity_tags_17,
+       sizeof(asn_DEF_precoderGranularity_tags_17)
+               /sizeof(asn_DEF_precoderGranularity_tags_17[0]) - 1, /* 1 */
+       asn_DEF_precoderGranularity_tags_17,    /* Same as above */
+       sizeof(asn_DEF_precoderGranularity_tags_17)
+               /sizeof(asn_DEF_precoderGranularity_tags_17[0]), /* 2 */
+       { &asn_OER_type_precoderGranularity_constr_17, &asn_PER_type_precoderGranularity_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_precoderGranularity_specs_17   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tci_StatesPDCCH_ToAddList_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tci_StatesPDCCH_ToAddList_specs_20 = {
+       sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList),
+       offsetof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tci_StatesPDCCH_ToAddList_20 = {
+       "tci-StatesPDCCH-ToAddList",
+       "tci-StatesPDCCH-ToAddList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tci_StatesPDCCH_ToAddList_tags_20,
+       sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20)
+               /sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[0]) - 1, /* 1 */
+       asn_DEF_tci_StatesPDCCH_ToAddList_tags_20,      /* Same as above */
+       sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20)
+               /sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[0]), /* 2 */
+       { &asn_OER_type_tci_StatesPDCCH_ToAddList_constr_20, &asn_PER_type_tci_StatesPDCCH_ToAddList_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_tci_StatesPDCCH_ToAddList_20,
+       1,      /* Single element */
+       &asn_SPC_tci_StatesPDCCH_ToAddList_specs_20     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tci_StatesPDCCH_ToReleaseList_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tci_StatesPDCCH_ToReleaseList_specs_22 = {
+       sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList),
+       offsetof(struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tci_StatesPDCCH_ToReleaseList_22 = {
+       "tci-StatesPDCCH-ToReleaseList",
+       "tci-StatesPDCCH-ToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22,
+       sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22)
+               /sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[0]) - 1, /* 1 */
+       asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22,  /* Same as above */
+       sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22)
+               /sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[0]), /* 2 */
+       { &asn_OER_type_tci_StatesPDCCH_ToReleaseList_constr_22, &asn_PER_type_tci_StatesPDCCH_ToReleaseList_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_tci_StatesPDCCH_ToReleaseList_22,
+       1,      /* Single element */
+       &asn_SPC_tci_StatesPDCCH_ToReleaseList_specs_22 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tci_PresentInDCI_value2enum_24[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_tci_PresentInDCI_enum2value_24[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tci_PresentInDCI_specs_24 = {
+       asn_MAP_tci_PresentInDCI_value2enum_24, /* "tag" => N; sorted by tag */
+       asn_MAP_tci_PresentInDCI_enum2value_24, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tci_PresentInDCI_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_tci_PresentInDCI_24 = {
+       "tci-PresentInDCI",
+       "tci-PresentInDCI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tci_PresentInDCI_tags_24,
+       sizeof(asn_DEF_tci_PresentInDCI_tags_24)
+               /sizeof(asn_DEF_tci_PresentInDCI_tags_24[0]) - 1, /* 1 */
+       asn_DEF_tci_PresentInDCI_tags_24,       /* Same as above */
+       sizeof(asn_DEF_tci_PresentInDCI_tags_24)
+               /sizeof(asn_DEF_tci_PresentInDCI_tags_24[0]), /* 2 */
+       { &asn_OER_type_tci_PresentInDCI_constr_24, &asn_PER_type_tci_PresentInDCI_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tci_PresentInDCI_specs_24      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ControlResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, controlResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "controlResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, frequencyDomainResources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_frequencyDomainResources_constr_3, &asn_PER_memb_frequencyDomainResources_constr_3,  memb_frequencyDomainResources_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDomainResources"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, duration),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_duration_constr_4, &asn_PER_memb_duration_constr_4,  memb_duration_constraint_1 },
+               0, 0, /* No default value */
+               "duration"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, cce_REG_MappingType),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_cce_REG_MappingType_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cce-REG-MappingType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, precoderGranularity),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_precoderGranularity_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "precoderGranularity"
+               },
+       { ATF_POINTER, 4, offsetof(struct ControlResourceSet, tci_StatesPDCCH_ToAddList),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_tci_StatesPDCCH_ToAddList_20,
+               0,
+               { &asn_OER_memb_tci_StatesPDCCH_ToAddList_constr_20, &asn_PER_memb_tci_StatesPDCCH_ToAddList_constr_20,  memb_tci_StatesPDCCH_ToAddList_constraint_1 },
+               0, 0, /* No default value */
+               "tci-StatesPDCCH-ToAddList"
+               },
+       { ATF_POINTER, 3, offsetof(struct ControlResourceSet, tci_StatesPDCCH_ToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_tci_StatesPDCCH_ToReleaseList_22,
+               0,
+               { &asn_OER_memb_tci_StatesPDCCH_ToReleaseList_constr_22, &asn_PER_memb_tci_StatesPDCCH_ToReleaseList_constr_22,  memb_tci_StatesPDCCH_ToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "tci-StatesPDCCH-ToReleaseList"
+               },
+       { ATF_POINTER, 2, offsetof(struct ControlResourceSet, tci_PresentInDCI),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tci_PresentInDCI_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tci-PresentInDCI"
+               },
+       { ATF_POINTER, 1, offsetof(struct ControlResourceSet, pdcch_DMRS_ScramblingID),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_pdcch_DMRS_ScramblingID_constr_26, &asn_PER_memb_pdcch_DMRS_ScramblingID_constr_26,  memb_pdcch_DMRS_ScramblingID_constraint_1 },
+               0, 0, /* No default value */
+               "pdcch-DMRS-ScramblingID"
+               },
+};
+static const int asn_MAP_ControlResourceSet_oms_1[] = { 5, 6, 7, 8 };
+static const ber_tlv_tag_t asn_DEF_ControlResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ControlResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyDomainResources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* duration */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cce-REG-MappingType */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* precoderGranularity */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* tci-StatesPDCCH-ToAddList */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tci-StatesPDCCH-ToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* tci-PresentInDCI */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* pdcch-DMRS-ScramblingID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ControlResourceSet_specs_1 = {
+       sizeof(struct ControlResourceSet),
+       offsetof(struct ControlResourceSet, _asn_ctx),
+       asn_MAP_ControlResourceSet_tag2el_1,
+       9,      /* Count of tags in the map */
+       asn_MAP_ControlResourceSet_oms_1,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       9,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ControlResourceSet = {
+       "ControlResourceSet",
+       "ControlResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ControlResourceSet_tags_1,
+       sizeof(asn_DEF_ControlResourceSet_tags_1)
+               /sizeof(asn_DEF_ControlResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_ControlResourceSet_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ControlResourceSet_tags_1)
+               /sizeof(asn_DEF_ControlResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ControlResourceSet_1,
+       9,      /* Elements count */
+       &asn_SPC_ControlResourceSet_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ControlResourceSet.h b/src/codec_utils/RRC/ControlResourceSet.h
new file mode 100644 (file)
index 0000000..7aba188
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ControlResourceSet_H_
+#define        _ControlResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ControlResourceSetId.h"
+#include <BIT_STRING.h>
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+#include "TCI-StateId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ControlResourceSet__cce_REG_MappingType_PR {
+       ControlResourceSet__cce_REG_MappingType_PR_NOTHING,     /* No components present */
+       ControlResourceSet__cce_REG_MappingType_PR_interleaved,
+       ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved
+} ControlResourceSet__cce_REG_MappingType_PR;
+typedef enum ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize {
+       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n2 = 0,
+       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n3 = 1,
+       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6 = 2
+} e_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize;
+typedef enum ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize {
+       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n2        = 0,
+       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n3        = 1,
+       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6        = 2
+} e_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize;
+typedef enum ControlResourceSet__precoderGranularity {
+       ControlResourceSet__precoderGranularity_sameAsREG_bundle        = 0,
+       ControlResourceSet__precoderGranularity_allContiguousRBs        = 1
+} e_ControlResourceSet__precoderGranularity;
+typedef enum ControlResourceSet__tci_PresentInDCI {
+       ControlResourceSet__tci_PresentInDCI_enabled    = 0
+} e_ControlResourceSet__tci_PresentInDCI;
+
+/* ControlResourceSet */
+typedef struct ControlResourceSet {
+       ControlResourceSetId_t   controlResourceSetId;
+       BIT_STRING_t     frequencyDomainResources;
+       long     duration;
+       struct ControlResourceSet__cce_REG_MappingType {
+               ControlResourceSet__cce_REG_MappingType_PR present;
+               union ControlResourceSet__cce_REG_MappingType_u {
+                       struct ControlResourceSet__cce_REG_MappingType__interleaved {
+                               long     reg_BundleSize;
+                               long     interleaverSize;
+                               long    *shiftIndex;    /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *interleaved;
+                       NULL_t   nonInterleaved;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } cce_REG_MappingType;
+       long     precoderGranularity;
+       struct ControlResourceSet__tci_StatesPDCCH_ToAddList {
+               A_SEQUENCE_OF(TCI_StateId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tci_StatesPDCCH_ToAddList;
+       struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList {
+               A_SEQUENCE_OF(TCI_StateId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tci_StatesPDCCH_ToReleaseList;
+       long    *tci_PresentInDCI;      /* OPTIONAL */
+       long    *pdcch_DMRS_ScramblingID;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ControlResourceSet_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reg_BundleSize_7;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_interleaverSize_11;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_precoderGranularity_17;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tci_PresentInDCI_24;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_ControlResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_ControlResourceSet_1[9];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ControlResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ControlResourceSetId.c b/src/codec_utils/RRC/ControlResourceSetId.c
new file mode 100644 (file)
index 0000000..6068980
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ControlResourceSetId.h"
+
+int
+ControlResourceSetId_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 <= 11)) {
+               /* 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_ControlResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..11) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ControlResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ControlResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ControlResourceSetId = {
+       "ControlResourceSetId",
+       "ControlResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_ControlResourceSetId_tags_1,
+       sizeof(asn_DEF_ControlResourceSetId_tags_1)
+               /sizeof(asn_DEF_ControlResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_ControlResourceSetId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ControlResourceSetId_tags_1)
+               /sizeof(asn_DEF_ControlResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_ControlResourceSetId_constr_1, &asn_PER_type_ControlResourceSetId_constr_1, ControlResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ControlResourceSetId.h b/src/codec_utils/RRC/ControlResourceSetId.h
new file mode 100644 (file)
index 0000000..87408e0
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ControlResourceSetId_H_
+#define        _ControlResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ControlResourceSetId */
+typedef long    ControlResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ControlResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSetId;
+asn_struct_free_f ControlResourceSetId_free;
+asn_struct_print_f ControlResourceSetId_print;
+asn_constr_check_f ControlResourceSetId_constraint;
+ber_type_decoder_f ControlResourceSetId_decode_ber;
+der_type_encoder_f ControlResourceSetId_encode_der;
+xer_type_decoder_f ControlResourceSetId_decode_xer;
+xer_type_encoder_f ControlResourceSetId_encode_xer;
+oer_type_decoder_f ControlResourceSetId_decode_oer;
+oer_type_encoder_f ControlResourceSetId_encode_oer;
+per_type_decoder_f ControlResourceSetId_decode_uper;
+per_type_encoder_f ControlResourceSetId_encode_uper;
+per_type_decoder_f ControlResourceSetId_decode_aper;
+per_type_encoder_f ControlResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ControlResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ControlResourceSetZero.c b/src/codec_utils/RRC/ControlResourceSetZero.c
new file mode 100644 (file)
index 0000000..fdd75df
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ControlResourceSetZero.h"
+
+int
+ControlResourceSetZero_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 <= 15)) {
+               /* 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_ControlResourceSetZero_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ControlResourceSetZero_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ControlResourceSetZero_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ControlResourceSetZero = {
+       "ControlResourceSetZero",
+       "ControlResourceSetZero",
+       &asn_OP_NativeInteger,
+       asn_DEF_ControlResourceSetZero_tags_1,
+       sizeof(asn_DEF_ControlResourceSetZero_tags_1)
+               /sizeof(asn_DEF_ControlResourceSetZero_tags_1[0]), /* 1 */
+       asn_DEF_ControlResourceSetZero_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ControlResourceSetZero_tags_1)
+               /sizeof(asn_DEF_ControlResourceSetZero_tags_1[0]), /* 1 */
+       { &asn_OER_type_ControlResourceSetZero_constr_1, &asn_PER_type_ControlResourceSetZero_constr_1, ControlResourceSetZero_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ControlResourceSetZero.h b/src/codec_utils/RRC/ControlResourceSetZero.h
new file mode 100644 (file)
index 0000000..7af45d1
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ControlResourceSetZero_H_
+#define        _ControlResourceSetZero_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ControlResourceSetZero */
+typedef long    ControlResourceSetZero_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ControlResourceSetZero_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSetZero;
+asn_struct_free_f ControlResourceSetZero_free;
+asn_struct_print_f ControlResourceSetZero_print;
+asn_constr_check_f ControlResourceSetZero_constraint;
+ber_type_decoder_f ControlResourceSetZero_decode_ber;
+der_type_encoder_f ControlResourceSetZero_encode_der;
+xer_type_decoder_f ControlResourceSetZero_decode_xer;
+xer_type_encoder_f ControlResourceSetZero_encode_xer;
+oer_type_decoder_f ControlResourceSetZero_decode_oer;
+oer_type_encoder_f ControlResourceSetZero_encode_oer;
+per_type_decoder_f ControlResourceSetZero_decode_uper;
+per_type_encoder_f ControlResourceSetZero_encode_uper;
+per_type_decoder_f ControlResourceSetZero_decode_aper;
+per_type_encoder_f ControlResourceSetZero_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ControlResourceSetZero_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CounterCheck-IEs.c b/src/codec_utils/RRC/CounterCheck-IEs.c
new file mode 100644 (file)
index 0000000..a5d27f1
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CounterCheck-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct CounterCheck_IEs__nonCriticalExtension),
+       offsetof(struct CounterCheck_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CounterCheck_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheck_IEs, drb_CountMSB_InfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_CountMSB_InfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-CountMSB-InfoList"
+               },
+       { ATF_POINTER, 2, offsetof(struct CounterCheck_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct CounterCheck_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_CounterCheck_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CounterCheck_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CounterCheck_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drb-CountMSB-InfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CounterCheck_IEs_specs_1 = {
+       sizeof(struct CounterCheck_IEs),
+       offsetof(struct CounterCheck_IEs, _asn_ctx),
+       asn_MAP_CounterCheck_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CounterCheck_IEs_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CounterCheck_IEs = {
+       "CounterCheck-IEs",
+       "CounterCheck-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CounterCheck_IEs_tags_1,
+       sizeof(asn_DEF_CounterCheck_IEs_tags_1)
+               /sizeof(asn_DEF_CounterCheck_IEs_tags_1[0]), /* 1 */
+       asn_DEF_CounterCheck_IEs_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CounterCheck_IEs_tags_1)
+               /sizeof(asn_DEF_CounterCheck_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CounterCheck_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_CounterCheck_IEs_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CounterCheck-IEs.h b/src/codec_utils/RRC/CounterCheck-IEs.h
new file mode 100644 (file)
index 0000000..0dbfbdb
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CounterCheck_IEs_H_
+#define        _CounterCheck_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-CountMSB-InfoList.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CounterCheck-IEs */
+typedef struct CounterCheck_IEs {
+       DRB_CountMSB_InfoList_t  drb_CountMSB_InfoList;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct CounterCheck_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CounterCheck_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CounterCheck_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_CounterCheck_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_CounterCheck_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CounterCheck_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CounterCheck.c b/src/codec_utils/RRC/CounterCheck.c
new file mode 100644 (file)
index 0000000..416b5f4
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CounterCheck.h"
+
+#include "CounterCheck-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct CounterCheck__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct CounterCheck__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CounterCheck__criticalExtensions, choice.counterCheck),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CounterCheck_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "counterCheck"
+               },
+       { ATF_POINTER, 0, offsetof(struct CounterCheck__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* counterCheck */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct CounterCheck__criticalExtensions),
+       offsetof(struct CounterCheck__criticalExtensions, _asn_ctx),
+       offsetof(struct CounterCheck__criticalExtensions, present),
+       sizeof(((struct CounterCheck__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CounterCheck_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheck, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheck, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CounterCheck_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CounterCheck_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CounterCheck_specs_1 = {
+       sizeof(struct CounterCheck),
+       offsetof(struct CounterCheck, _asn_ctx),
+       asn_MAP_CounterCheck_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CounterCheck = {
+       "CounterCheck",
+       "CounterCheck",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CounterCheck_tags_1,
+       sizeof(asn_DEF_CounterCheck_tags_1)
+               /sizeof(asn_DEF_CounterCheck_tags_1[0]), /* 1 */
+       asn_DEF_CounterCheck_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CounterCheck_tags_1)
+               /sizeof(asn_DEF_CounterCheck_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CounterCheck_1,
+       2,      /* Elements count */
+       &asn_SPC_CounterCheck_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CounterCheck.h b/src/codec_utils/RRC/CounterCheck.h
new file mode 100644 (file)
index 0000000..ca94869
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CounterCheck_H_
+#define        _CounterCheck_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CounterCheck__criticalExtensions_PR {
+       CounterCheck__criticalExtensions_PR_NOTHING,    /* No components present */
+       CounterCheck__criticalExtensions_PR_counterCheck,
+       CounterCheck__criticalExtensions_PR_criticalExtensionsFuture
+} CounterCheck__criticalExtensions_PR;
+
+/* Forward declarations */
+struct CounterCheck_IEs;
+
+/* CounterCheck */
+typedef struct CounterCheck {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct CounterCheck__criticalExtensions {
+               CounterCheck__criticalExtensions_PR present;
+               union CounterCheck__criticalExtensions_u {
+                       struct CounterCheck_IEs *counterCheck;
+                       struct CounterCheck__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CounterCheck_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CounterCheck;
+extern asn_SEQUENCE_specifics_t asn_SPC_CounterCheck_specs_1;
+extern asn_TYPE_member_t asn_MBR_CounterCheck_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CounterCheck_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CounterCheckResponse-IEs.c b/src/codec_utils/RRC/CounterCheckResponse-IEs.c
new file mode 100644 (file)
index 0000000..cbfa1cf
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CounterCheckResponse-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct CounterCheckResponse_IEs__nonCriticalExtension),
+       offsetof(struct CounterCheckResponse_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CounterCheckResponse_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheckResponse_IEs, drb_CountInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_CountInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-CountInfoList"
+               },
+       { ATF_POINTER, 2, offsetof(struct CounterCheckResponse_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct CounterCheckResponse_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_CounterCheckResponse_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_CounterCheckResponse_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CounterCheckResponse_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drb-CountInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CounterCheckResponse_IEs_specs_1 = {
+       sizeof(struct CounterCheckResponse_IEs),
+       offsetof(struct CounterCheckResponse_IEs, _asn_ctx),
+       asn_MAP_CounterCheckResponse_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_CounterCheckResponse_IEs_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CounterCheckResponse_IEs = {
+       "CounterCheckResponse-IEs",
+       "CounterCheckResponse-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CounterCheckResponse_IEs_tags_1,
+       sizeof(asn_DEF_CounterCheckResponse_IEs_tags_1)
+               /sizeof(asn_DEF_CounterCheckResponse_IEs_tags_1[0]), /* 1 */
+       asn_DEF_CounterCheckResponse_IEs_tags_1,        /* Same as above */
+       sizeof(asn_DEF_CounterCheckResponse_IEs_tags_1)
+               /sizeof(asn_DEF_CounterCheckResponse_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CounterCheckResponse_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_CounterCheckResponse_IEs_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CounterCheckResponse-IEs.h b/src/codec_utils/RRC/CounterCheckResponse-IEs.h
new file mode 100644 (file)
index 0000000..e060d51
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CounterCheckResponse_IEs_H_
+#define        _CounterCheckResponse_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-CountInfoList.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CounterCheckResponse-IEs */
+typedef struct CounterCheckResponse_IEs {
+       DRB_CountInfoList_t      drb_CountInfoList;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct CounterCheckResponse_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CounterCheckResponse_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CounterCheckResponse_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_CounterCheckResponse_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_CounterCheckResponse_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CounterCheckResponse_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CounterCheckResponse.c b/src/codec_utils/RRC/CounterCheckResponse.c
new file mode 100644 (file)
index 0000000..9b6e439
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CounterCheckResponse.h"
+
+#include "CounterCheckResponse-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct CounterCheckResponse__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct CounterCheckResponse__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct CounterCheckResponse__criticalExtensions, choice.counterCheckResponse),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CounterCheckResponse_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "counterCheckResponse"
+               },
+       { ATF_POINTER, 0, offsetof(struct CounterCheckResponse__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* counterCheckResponse */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct CounterCheckResponse__criticalExtensions),
+       offsetof(struct CounterCheckResponse__criticalExtensions, _asn_ctx),
+       offsetof(struct CounterCheckResponse__criticalExtensions, present),
+       sizeof(((struct CounterCheckResponse__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CounterCheckResponse_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheckResponse, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CounterCheckResponse, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CounterCheckResponse_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CounterCheckResponse_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CounterCheckResponse_specs_1 = {
+       sizeof(struct CounterCheckResponse),
+       offsetof(struct CounterCheckResponse, _asn_ctx),
+       asn_MAP_CounterCheckResponse_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_CounterCheckResponse = {
+       "CounterCheckResponse",
+       "CounterCheckResponse",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CounterCheckResponse_tags_1,
+       sizeof(asn_DEF_CounterCheckResponse_tags_1)
+               /sizeof(asn_DEF_CounterCheckResponse_tags_1[0]), /* 1 */
+       asn_DEF_CounterCheckResponse_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CounterCheckResponse_tags_1)
+               /sizeof(asn_DEF_CounterCheckResponse_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CounterCheckResponse_1,
+       2,      /* Elements count */
+       &asn_SPC_CounterCheckResponse_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CounterCheckResponse.h b/src/codec_utils/RRC/CounterCheckResponse.h
new file mode 100644 (file)
index 0000000..75cc1b5
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CounterCheckResponse_H_
+#define        _CounterCheckResponse_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CounterCheckResponse__criticalExtensions_PR {
+       CounterCheckResponse__criticalExtensions_PR_NOTHING,    /* No components present */
+       CounterCheckResponse__criticalExtensions_PR_counterCheckResponse,
+       CounterCheckResponse__criticalExtensions_PR_criticalExtensionsFuture
+} CounterCheckResponse__criticalExtensions_PR;
+
+/* Forward declarations */
+struct CounterCheckResponse_IEs;
+
+/* CounterCheckResponse */
+typedef struct CounterCheckResponse {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct CounterCheckResponse__criticalExtensions {
+               CounterCheckResponse__criticalExtensions_PR present;
+               union CounterCheckResponse__criticalExtensions_u {
+                       struct CounterCheckResponse_IEs *counterCheckResponse;
+                       struct CounterCheckResponse__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CounterCheckResponse_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CounterCheckResponse;
+extern asn_SEQUENCE_specifics_t asn_SPC_CounterCheckResponse_specs_1;
+extern asn_TYPE_member_t asn_MBR_CounterCheckResponse_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CounterCheckResponse_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/CrossCarrierSchedulingConfig.c b/src/codec_utils/RRC/CrossCarrierSchedulingConfig.c
new file mode 100644 (file)
index 0000000..6e23101
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "CrossCarrierSchedulingConfig.h"
+
+static int
+memb_cif_InSchedulingCell_constraint_5(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 <= 7)) {
+               /* 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_cif_InSchedulingCell_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (1..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cif_InSchedulingCell_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  7 }        /* (1..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_schedulingCellInfo_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_schedulingCellInfo_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_own_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__own, cif_Presence),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cif-Presence"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_own_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_own_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cif-Presence */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_own_specs_3 = {
+       sizeof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__own),
+       offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__own, _asn_ctx),
+       asn_MAP_own_tag2el_3,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_own_3 = {
+       "own",
+       "own",
+       &asn_OP_SEQUENCE,
+       asn_DEF_own_tags_3,
+       sizeof(asn_DEF_own_tags_3)
+               /sizeof(asn_DEF_own_tags_3[0]) - 1, /* 1 */
+       asn_DEF_own_tags_3,     /* Same as above */
+       sizeof(asn_DEF_own_tags_3)
+               /sizeof(asn_DEF_own_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_own_3,
+       1,      /* Elements count */
+       &asn_SPC_own_specs_3    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_other_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__other, schedulingCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__other, cif_InSchedulingCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cif_InSchedulingCell_constr_7, &asn_PER_memb_cif_InSchedulingCell_constr_7,  memb_cif_InSchedulingCell_constraint_5 },
+               0, 0, /* No default value */
+               "cif-InSchedulingCell"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_other_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_other_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cif-InSchedulingCell */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_other_specs_5 = {
+       sizeof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__other),
+       offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo__other, _asn_ctx),
+       asn_MAP_other_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_other_5 = {
+       "other",
+       "other",
+       &asn_OP_SEQUENCE,
+       asn_DEF_other_tags_5,
+       sizeof(asn_DEF_other_tags_5)
+               /sizeof(asn_DEF_other_tags_5[0]) - 1, /* 1 */
+       asn_DEF_other_tags_5,   /* Same as above */
+       sizeof(asn_DEF_other_tags_5)
+               /sizeof(asn_DEF_other_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_other_5,
+       2,      /* Elements count */
+       &asn_SPC_other_specs_5  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_schedulingCellInfo_2[] = {
+       { ATF_POINTER, 0, offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo, choice.own),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_own_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "own"
+               },
+       { ATF_POINTER, 0, offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo, choice.other),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_other_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "other"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_schedulingCellInfo_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* own */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* other */
+};
+static asn_CHOICE_specifics_t asn_SPC_schedulingCellInfo_specs_2 = {
+       sizeof(struct CrossCarrierSchedulingConfig__schedulingCellInfo),
+       offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo, _asn_ctx),
+       offsetof(struct CrossCarrierSchedulingConfig__schedulingCellInfo, present),
+       sizeof(((struct CrossCarrierSchedulingConfig__schedulingCellInfo *)0)->present),
+       asn_MAP_schedulingCellInfo_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingCellInfo_2 = {
+       "schedulingCellInfo",
+       "schedulingCellInfo",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_schedulingCellInfo_constr_2, &asn_PER_type_schedulingCellInfo_constr_2, CHOICE_constraint },
+       asn_MBR_schedulingCellInfo_2,
+       2,      /* Elements count */
+       &asn_SPC_schedulingCellInfo_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_CrossCarrierSchedulingConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct CrossCarrierSchedulingConfig, schedulingCellInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_schedulingCellInfo_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingCellInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_CrossCarrierSchedulingConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_CrossCarrierSchedulingConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* schedulingCellInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_CrossCarrierSchedulingConfig_specs_1 = {
+       sizeof(struct CrossCarrierSchedulingConfig),
+       offsetof(struct CrossCarrierSchedulingConfig, _asn_ctx),
+       asn_MAP_CrossCarrierSchedulingConfig_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_CrossCarrierSchedulingConfig = {
+       "CrossCarrierSchedulingConfig",
+       "CrossCarrierSchedulingConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_CrossCarrierSchedulingConfig_tags_1,
+       sizeof(asn_DEF_CrossCarrierSchedulingConfig_tags_1)
+               /sizeof(asn_DEF_CrossCarrierSchedulingConfig_tags_1[0]), /* 1 */
+       asn_DEF_CrossCarrierSchedulingConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_CrossCarrierSchedulingConfig_tags_1)
+               /sizeof(asn_DEF_CrossCarrierSchedulingConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_CrossCarrierSchedulingConfig_1,
+       1,      /* Elements count */
+       &asn_SPC_CrossCarrierSchedulingConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/CrossCarrierSchedulingConfig.h b/src/codec_utils/RRC/CrossCarrierSchedulingConfig.h
new file mode 100644 (file)
index 0000000..370d8a5
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _CrossCarrierSchedulingConfig_H_
+#define        _CrossCarrierSchedulingConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+#include "ServCellIndex.h"
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum CrossCarrierSchedulingConfig__schedulingCellInfo_PR {
+       CrossCarrierSchedulingConfig__schedulingCellInfo_PR_NOTHING,    /* No components present */
+       CrossCarrierSchedulingConfig__schedulingCellInfo_PR_own,
+       CrossCarrierSchedulingConfig__schedulingCellInfo_PR_other
+} CrossCarrierSchedulingConfig__schedulingCellInfo_PR;
+
+/* CrossCarrierSchedulingConfig */
+typedef struct CrossCarrierSchedulingConfig {
+       struct CrossCarrierSchedulingConfig__schedulingCellInfo {
+               CrossCarrierSchedulingConfig__schedulingCellInfo_PR present;
+               union CrossCarrierSchedulingConfig__schedulingCellInfo_u {
+                       struct CrossCarrierSchedulingConfig__schedulingCellInfo__own {
+                               BOOLEAN_t        cif_Presence;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *own;
+                       struct CrossCarrierSchedulingConfig__schedulingCellInfo__other {
+                               ServCellIndex_t  schedulingCellId;
+                               long     cif_InSchedulingCell;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *other;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } schedulingCellInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} CrossCarrierSchedulingConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CrossCarrierSchedulingConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_CrossCarrierSchedulingConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_CrossCarrierSchedulingConfig_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _CrossCarrierSchedulingConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-AM-RLC.c b/src/codec_utils/RRC/DL-AM-RLC.c
new file mode 100644 (file)
index 0000000..4f1c840
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-AM-RLC.h"
+
+asn_TYPE_member_t asn_MBR_DL_AM_RLC_1[] = {
+       { ATF_POINTER, 1, offsetof(struct DL_AM_RLC, sn_FieldLength),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SN_FieldLengthAM,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sn-FieldLength"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_AM_RLC, t_Reassembly),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_Reassembly,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-Reassembly"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_AM_RLC, t_StatusProhibit),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_StatusProhibit,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-StatusProhibit"
+               },
+};
+static const int asn_MAP_DL_AM_RLC_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_DL_AM_RLC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_AM_RLC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sn-FieldLength */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t-Reassembly */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* t-StatusProhibit */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DL_AM_RLC_specs_1 = {
+       sizeof(struct DL_AM_RLC),
+       offsetof(struct DL_AM_RLC, _asn_ctx),
+       asn_MAP_DL_AM_RLC_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_DL_AM_RLC_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DL_AM_RLC = {
+       "DL-AM-RLC",
+       "DL-AM-RLC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DL_AM_RLC_tags_1,
+       sizeof(asn_DEF_DL_AM_RLC_tags_1)
+               /sizeof(asn_DEF_DL_AM_RLC_tags_1[0]), /* 1 */
+       asn_DEF_DL_AM_RLC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DL_AM_RLC_tags_1)
+               /sizeof(asn_DEF_DL_AM_RLC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DL_AM_RLC_1,
+       3,      /* Elements count */
+       &asn_SPC_DL_AM_RLC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-AM-RLC.h b/src/codec_utils/RRC/DL-AM-RLC.h
new file mode 100644 (file)
index 0000000..81cb637
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_AM_RLC_H_
+#define        _DL_AM_RLC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SN-FieldLengthAM.h"
+#include "T-Reassembly.h"
+#include "T-StatusProhibit.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DL-AM-RLC */
+typedef struct DL_AM_RLC {
+       SN_FieldLengthAM_t      *sn_FieldLength;        /* OPTIONAL */
+       T_Reassembly_t   t_Reassembly;
+       T_StatusProhibit_t       t_StatusProhibit;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_AM_RLC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_AM_RLC;
+extern asn_SEQUENCE_specifics_t asn_SPC_DL_AM_RLC_specs_1;
+extern asn_TYPE_member_t asn_MBR_DL_AM_RLC_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_AM_RLC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-CCCH-Message.c b/src/codec_utils/RRC/DL-CCCH-Message.c
new file mode 100644 (file)
index 0000000..83244e5
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-CCCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_DL_CCCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DL_CCCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_DL_CCCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DL_CCCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_CCCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_DL_CCCH_Message_specs_1 = {
+       sizeof(struct DL_CCCH_Message),
+       offsetof(struct DL_CCCH_Message, _asn_ctx),
+       asn_MAP_DL_CCCH_Message_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_DL_CCCH_Message = {
+       "DL-CCCH-Message",
+       "DL-CCCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DL_CCCH_Message_tags_1,
+       sizeof(asn_DEF_DL_CCCH_Message_tags_1)
+               /sizeof(asn_DEF_DL_CCCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_DL_CCCH_Message_tags_1, /* Same as above */
+       sizeof(asn_DEF_DL_CCCH_Message_tags_1)
+               /sizeof(asn_DEF_DL_CCCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DL_CCCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_DL_CCCH_Message_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-CCCH-Message.h b/src/codec_utils/RRC/DL-CCCH-Message.h
new file mode 100644 (file)
index 0000000..e4f79f2
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_CCCH_Message_H_
+#define        _DL_CCCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DL-CCCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DL-CCCH-Message */
+typedef struct DL_CCCH_Message {
+       DL_CCCH_MessageType_t    message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_CCCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_CCCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_CCCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-CCCH-MessageType.c b/src/codec_utils/RRC/DL-CCCH-MessageType.c
new file mode 100644 (file)
index 0000000..ca1c6be
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-CCCH-MessageType.h"
+
+#include "RRCReject.h"
+#include "RRCSetup.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_DL_CCCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_DL_CCCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct DL_CCCH_MessageType__c1, choice.rrcReject),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReject,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReject"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_CCCH_MessageType__c1, choice.rrcSetup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetup,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetup"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_CCCH_MessageType__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_CCCH_MessageType__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReject */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rrcSetup */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct DL_CCCH_MessageType__c1),
+       offsetof(struct DL_CCCH_MessageType__c1, _asn_ctx),
+       offsetof(struct DL_CCCH_MessageType__c1, present),
+       sizeof(((struct DL_CCCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_7 = {
+       sizeof(struct DL_CCCH_MessageType__messageClassExtension),
+       offsetof(struct DL_CCCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_7 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_7,
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_7,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_7  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DL_CCCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct DL_CCCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_CCCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_CCCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_DL_CCCH_MessageType_specs_1 = {
+       sizeof(struct DL_CCCH_MessageType),
+       offsetof(struct DL_CCCH_MessageType, _asn_ctx),
+       offsetof(struct DL_CCCH_MessageType, present),
+       sizeof(((struct DL_CCCH_MessageType *)0)->present),
+       asn_MAP_DL_CCCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_DL_CCCH_MessageType = {
+       "DL-CCCH-MessageType",
+       "DL-CCCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_DL_CCCH_MessageType_constr_1, &asn_PER_type_DL_CCCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_DL_CCCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_DL_CCCH_MessageType_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-CCCH-MessageType.h b/src/codec_utils/RRC/DL-CCCH-MessageType.h
new file mode 100644 (file)
index 0000000..923a9f3
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_CCCH_MessageType_H_
+#define        _DL_CCCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DL_CCCH_MessageType_PR {
+       DL_CCCH_MessageType_PR_NOTHING, /* No components present */
+       DL_CCCH_MessageType_PR_c1,
+       DL_CCCH_MessageType_PR_messageClassExtension
+} DL_CCCH_MessageType_PR;
+typedef enum DL_CCCH_MessageType__c1_PR {
+       DL_CCCH_MessageType__c1_PR_NOTHING,     /* No components present */
+       DL_CCCH_MessageType__c1_PR_rrcReject,
+       DL_CCCH_MessageType__c1_PR_rrcSetup,
+       DL_CCCH_MessageType__c1_PR_spare2,
+       DL_CCCH_MessageType__c1_PR_spare1
+} DL_CCCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct RRCReject;
+struct RRCSetup;
+
+/* DL-CCCH-MessageType */
+typedef struct DL_CCCH_MessageType {
+       DL_CCCH_MessageType_PR present;
+       union DL_CCCH_MessageType_u {
+               struct DL_CCCH_MessageType__c1 {
+                       DL_CCCH_MessageType__c1_PR present;
+                       union DL_CCCH_MessageType__c1_u {
+                               struct RRCReject        *rrcReject;
+                               struct RRCSetup *rrcSetup;
+                               NULL_t   spare2;
+                               NULL_t   spare1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct DL_CCCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_CCCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_CCCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_DL_CCCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_DL_CCCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_DL_CCCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_CCCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-DCCH-Message.c b/src/codec_utils/RRC/DL-DCCH-Message.c
new file mode 100644 (file)
index 0000000..c19f637
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-DCCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_DL_DCCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_DL_DCCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DL_DCCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_DCCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_DL_DCCH_Message_specs_1 = {
+       sizeof(struct DL_DCCH_Message),
+       offsetof(struct DL_DCCH_Message, _asn_ctx),
+       asn_MAP_DL_DCCH_Message_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_DL_DCCH_Message = {
+       "DL-DCCH-Message",
+       "DL-DCCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DL_DCCH_Message_tags_1,
+       sizeof(asn_DEF_DL_DCCH_Message_tags_1)
+               /sizeof(asn_DEF_DL_DCCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_DL_DCCH_Message_tags_1, /* Same as above */
+       sizeof(asn_DEF_DL_DCCH_Message_tags_1)
+               /sizeof(asn_DEF_DL_DCCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DL_DCCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_DL_DCCH_Message_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-DCCH-Message.h b/src/codec_utils/RRC/DL-DCCH-Message.h
new file mode 100644 (file)
index 0000000..918584f
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_DCCH_Message_H_
+#define        _DL_DCCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DL-DCCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DL-DCCH-Message */
+typedef struct DL_DCCH_Message {
+       DL_DCCH_MessageType_t    message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_DCCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_DCCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_DCCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-DCCH-MessageType.c b/src/codec_utils/RRC/DL-DCCH-MessageType.c
new file mode 100644 (file)
index 0000000..377b819
--- /dev/null
@@ -0,0 +1,299 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-DCCH-MessageType.h"
+
+#include "RRCReconfiguration.h"
+#include "RRCResume.h"
+#include "RRCRelease.h"
+#include "RRCReestablishment.h"
+#include "SecurityModeCommand.h"
+#include "DLInformationTransfer.h"
+#include "UECapabilityEnquiry.h"
+#include "CounterCheck.h"
+#include "MobilityFromNRCommand.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_DL_DCCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_DL_DCCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.rrcReconfiguration),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfiguration,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReconfiguration"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.rrcResume),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResume,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResume"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.rrcRelease),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCRelease,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcRelease"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.rrcReestablishment),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishment,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishment"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.securityModeCommand),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeCommand,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeCommand"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.dlInformationTransfer),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DLInformationTransfer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dlInformationTransfer"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.ueCapabilityEnquiry),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UECapabilityEnquiry,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueCapabilityEnquiry"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.counterCheck),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CounterCheck,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "counterCheck"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.mobilityFromNRCommand),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MobilityFromNRCommand,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mobilityFromNRCommand"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare7),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare7"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare6),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare6"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare5),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare4),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_DCCH_MessageType__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReconfiguration */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rrcResume */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rrcRelease */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rrcReestablishment */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* securityModeCommand */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dlInformationTransfer */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ueCapabilityEnquiry */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* counterCheck */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* mobilityFromNRCommand */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* spare7 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* spare6 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* spare5 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* spare4 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct DL_DCCH_MessageType__c1),
+       offsetof(struct DL_DCCH_MessageType__c1, _asn_ctx),
+       offsetof(struct DL_DCCH_MessageType__c1, present),
+       sizeof(((struct DL_DCCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       16,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       16,     /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_19[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_19 = {
+       sizeof(struct DL_DCCH_MessageType__messageClassExtension),
+       offsetof(struct DL_DCCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_19 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_19,
+       sizeof(asn_DEF_messageClassExtension_tags_19)
+               /sizeof(asn_DEF_messageClassExtension_tags_19[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_19,  /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_19)
+               /sizeof(asn_DEF_messageClassExtension_tags_19[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_19 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DL_DCCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct DL_DCCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_DCCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_DL_DCCH_MessageType_specs_1 = {
+       sizeof(struct DL_DCCH_MessageType),
+       offsetof(struct DL_DCCH_MessageType, _asn_ctx),
+       offsetof(struct DL_DCCH_MessageType, present),
+       sizeof(((struct DL_DCCH_MessageType *)0)->present),
+       asn_MAP_DL_DCCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_DL_DCCH_MessageType = {
+       "DL-DCCH-MessageType",
+       "DL-DCCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_DL_DCCH_MessageType_constr_1, &asn_PER_type_DL_DCCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_DL_DCCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_DL_DCCH_MessageType_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-DCCH-MessageType.h b/src/codec_utils/RRC/DL-DCCH-MessageType.h
new file mode 100644 (file)
index 0000000..e23b459
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_DCCH_MessageType_H_
+#define        _DL_DCCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DL_DCCH_MessageType_PR {
+       DL_DCCH_MessageType_PR_NOTHING, /* No components present */
+       DL_DCCH_MessageType_PR_c1,
+       DL_DCCH_MessageType_PR_messageClassExtension
+} DL_DCCH_MessageType_PR;
+typedef enum DL_DCCH_MessageType__c1_PR {
+       DL_DCCH_MessageType__c1_PR_NOTHING,     /* No components present */
+       DL_DCCH_MessageType__c1_PR_rrcReconfiguration,
+       DL_DCCH_MessageType__c1_PR_rrcResume,
+       DL_DCCH_MessageType__c1_PR_rrcRelease,
+       DL_DCCH_MessageType__c1_PR_rrcReestablishment,
+       DL_DCCH_MessageType__c1_PR_securityModeCommand,
+       DL_DCCH_MessageType__c1_PR_dlInformationTransfer,
+       DL_DCCH_MessageType__c1_PR_ueCapabilityEnquiry,
+       DL_DCCH_MessageType__c1_PR_counterCheck,
+       DL_DCCH_MessageType__c1_PR_mobilityFromNRCommand,
+       DL_DCCH_MessageType__c1_PR_spare7,
+       DL_DCCH_MessageType__c1_PR_spare6,
+       DL_DCCH_MessageType__c1_PR_spare5,
+       DL_DCCH_MessageType__c1_PR_spare4,
+       DL_DCCH_MessageType__c1_PR_spare3,
+       DL_DCCH_MessageType__c1_PR_spare2,
+       DL_DCCH_MessageType__c1_PR_spare1
+} DL_DCCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct RRCReconfiguration;
+struct RRCResume;
+struct RRCRelease;
+struct RRCReestablishment;
+struct SecurityModeCommand;
+struct DLInformationTransfer;
+struct UECapabilityEnquiry;
+struct CounterCheck;
+struct MobilityFromNRCommand;
+
+/* DL-DCCH-MessageType */
+typedef struct DL_DCCH_MessageType {
+       DL_DCCH_MessageType_PR present;
+       union DL_DCCH_MessageType_u {
+               struct DL_DCCH_MessageType__c1 {
+                       DL_DCCH_MessageType__c1_PR present;
+                       union DL_DCCH_MessageType__c1_u {
+                               struct RRCReconfiguration       *rrcReconfiguration;
+                               struct RRCResume        *rrcResume;
+                               struct RRCRelease       *rrcRelease;
+                               struct RRCReestablishment       *rrcReestablishment;
+                               struct SecurityModeCommand      *securityModeCommand;
+                               struct DLInformationTransfer    *dlInformationTransfer;
+                               struct UECapabilityEnquiry      *ueCapabilityEnquiry;
+                               struct CounterCheck     *counterCheck;
+                               struct MobilityFromNRCommand    *mobilityFromNRCommand;
+                               NULL_t   spare7;
+                               NULL_t   spare6;
+                               NULL_t   spare5;
+                               NULL_t   spare4;
+                               NULL_t   spare3;
+                               NULL_t   spare2;
+                               NULL_t   spare1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct DL_DCCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_DCCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_DCCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_DL_DCCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_DL_DCCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_DL_DCCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_DCCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DL-UM-RLC.c b/src/codec_utils/RRC/DL-UM-RLC.c
new file mode 100644 (file)
index 0000000..93113ad
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DL-UM-RLC.h"
+
+asn_TYPE_member_t asn_MBR_DL_UM_RLC_1[] = {
+       { ATF_POINTER, 1, offsetof(struct DL_UM_RLC, sn_FieldLength),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SN_FieldLengthUM,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sn-FieldLength"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DL_UM_RLC, t_Reassembly),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_Reassembly,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-Reassembly"
+               },
+};
+static const int asn_MAP_DL_UM_RLC_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_DL_UM_RLC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DL_UM_RLC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sn-FieldLength */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* t-Reassembly */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DL_UM_RLC_specs_1 = {
+       sizeof(struct DL_UM_RLC),
+       offsetof(struct DL_UM_RLC, _asn_ctx),
+       asn_MAP_DL_UM_RLC_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_DL_UM_RLC_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DL_UM_RLC = {
+       "DL-UM-RLC",
+       "DL-UM-RLC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DL_UM_RLC_tags_1,
+       sizeof(asn_DEF_DL_UM_RLC_tags_1)
+               /sizeof(asn_DEF_DL_UM_RLC_tags_1[0]), /* 1 */
+       asn_DEF_DL_UM_RLC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DL_UM_RLC_tags_1)
+               /sizeof(asn_DEF_DL_UM_RLC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DL_UM_RLC_1,
+       2,      /* Elements count */
+       &asn_SPC_DL_UM_RLC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DL-UM-RLC.h b/src/codec_utils/RRC/DL-UM-RLC.h
new file mode 100644 (file)
index 0000000..1924768
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DL_UM_RLC_H_
+#define        _DL_UM_RLC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SN-FieldLengthUM.h"
+#include "T-Reassembly.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DL-UM-RLC */
+typedef struct DL_UM_RLC {
+       SN_FieldLengthUM_t      *sn_FieldLength;        /* OPTIONAL */
+       T_Reassembly_t   t_Reassembly;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DL_UM_RLC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DL_UM_RLC;
+extern asn_SEQUENCE_specifics_t asn_SPC_DL_UM_RLC_specs_1;
+extern asn_TYPE_member_t asn_MBR_DL_UM_RLC_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DL_UM_RLC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DLInformationTransfer-IEs.c b/src/codec_utils/RRC/DLInformationTransfer-IEs.c
new file mode 100644 (file)
index 0000000..0831665
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DLInformationTransfer-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct DLInformationTransfer_IEs__nonCriticalExtension),
+       offsetof(struct DLInformationTransfer_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DLInformationTransfer_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct DLInformationTransfer_IEs, dedicatedNAS_Message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DedicatedNAS_Message,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dedicatedNAS-Message"
+               },
+       { ATF_POINTER, 2, offsetof(struct DLInformationTransfer_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct DLInformationTransfer_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_DLInformationTransfer_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_DLInformationTransfer_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DLInformationTransfer_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dedicatedNAS-Message */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DLInformationTransfer_IEs_specs_1 = {
+       sizeof(struct DLInformationTransfer_IEs),
+       offsetof(struct DLInformationTransfer_IEs, _asn_ctx),
+       asn_MAP_DLInformationTransfer_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_DLInformationTransfer_IEs_oms_1,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DLInformationTransfer_IEs = {
+       "DLInformationTransfer-IEs",
+       "DLInformationTransfer-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DLInformationTransfer_IEs_tags_1,
+       sizeof(asn_DEF_DLInformationTransfer_IEs_tags_1)
+               /sizeof(asn_DEF_DLInformationTransfer_IEs_tags_1[0]), /* 1 */
+       asn_DEF_DLInformationTransfer_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DLInformationTransfer_IEs_tags_1)
+               /sizeof(asn_DEF_DLInformationTransfer_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DLInformationTransfer_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_DLInformationTransfer_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DLInformationTransfer-IEs.h b/src/codec_utils/RRC/DLInformationTransfer-IEs.h
new file mode 100644 (file)
index 0000000..be73aa6
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DLInformationTransfer_IEs_H_
+#define        _DLInformationTransfer_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DedicatedNAS-Message.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DLInformationTransfer-IEs */
+typedef struct DLInformationTransfer_IEs {
+       DedicatedNAS_Message_t  *dedicatedNAS_Message;  /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct DLInformationTransfer_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DLInformationTransfer_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DLInformationTransfer_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DLInformationTransfer_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_DLInformationTransfer_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DLInformationTransfer_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DLInformationTransfer.c b/src/codec_utils/RRC/DLInformationTransfer.c
new file mode 100644 (file)
index 0000000..9cf8fd5
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DLInformationTransfer.h"
+
+#include "DLInformationTransfer-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct DLInformationTransfer__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct DLInformationTransfer__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct DLInformationTransfer__criticalExtensions, choice.dlInformationTransfer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DLInformationTransfer_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dlInformationTransfer"
+               },
+       { ATF_POINTER, 0, offsetof(struct DLInformationTransfer__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dlInformationTransfer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct DLInformationTransfer__criticalExtensions),
+       offsetof(struct DLInformationTransfer__criticalExtensions, _asn_ctx),
+       offsetof(struct DLInformationTransfer__criticalExtensions, present),
+       sizeof(((struct DLInformationTransfer__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DLInformationTransfer_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DLInformationTransfer, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DLInformationTransfer, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DLInformationTransfer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DLInformationTransfer_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DLInformationTransfer_specs_1 = {
+       sizeof(struct DLInformationTransfer),
+       offsetof(struct DLInformationTransfer, _asn_ctx),
+       asn_MAP_DLInformationTransfer_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DLInformationTransfer = {
+       "DLInformationTransfer",
+       "DLInformationTransfer",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DLInformationTransfer_tags_1,
+       sizeof(asn_DEF_DLInformationTransfer_tags_1)
+               /sizeof(asn_DEF_DLInformationTransfer_tags_1[0]), /* 1 */
+       asn_DEF_DLInformationTransfer_tags_1,   /* Same as above */
+       sizeof(asn_DEF_DLInformationTransfer_tags_1)
+               /sizeof(asn_DEF_DLInformationTransfer_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DLInformationTransfer_1,
+       2,      /* Elements count */
+       &asn_SPC_DLInformationTransfer_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DLInformationTransfer.h b/src/codec_utils/RRC/DLInformationTransfer.h
new file mode 100644 (file)
index 0000000..db8bee7
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DLInformationTransfer_H_
+#define        _DLInformationTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DLInformationTransfer__criticalExtensions_PR {
+       DLInformationTransfer__criticalExtensions_PR_NOTHING,   /* No components present */
+       DLInformationTransfer__criticalExtensions_PR_dlInformationTransfer,
+       DLInformationTransfer__criticalExtensions_PR_criticalExtensionsFuture
+} DLInformationTransfer__criticalExtensions_PR;
+
+/* Forward declarations */
+struct DLInformationTransfer_IEs;
+
+/* DLInformationTransfer */
+typedef struct DLInformationTransfer {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct DLInformationTransfer__criticalExtensions {
+               DLInformationTransfer__criticalExtensions_PR present;
+               union DLInformationTransfer__criticalExtensions_u {
+                       struct DLInformationTransfer_IEs        *dlInformationTransfer;
+                       struct DLInformationTransfer__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DLInformationTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DLInformationTransfer;
+extern asn_SEQUENCE_specifics_t asn_SPC_DLInformationTransfer_specs_1;
+extern asn_TYPE_member_t asn_MBR_DLInformationTransfer_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DLInformationTransfer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DMRS-DownlinkConfig.c b/src/codec_utils/RRC/DMRS-DownlinkConfig.c
new file mode 100644 (file)
index 0000000..f670ab8
--- /dev/null
@@ -0,0 +1,371 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DMRS-DownlinkConfig.h"
+
+#include "PTRS-DownlinkConfig.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.
+ */
+static int
+memb_scramblingID0_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 >= 0 && 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_scramblingID1_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_dmrs_Type_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_Type_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_AdditionalPosition_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_AdditionalPosition_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxLength_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxLength_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_phaseTrackingRS_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phaseTrackingRS_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_scramblingID0_constr_10 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_scramblingID0_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scramblingID1_constr_11 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_scramblingID1_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_Type_value2enum_2[] = {
+       { 0,    5,      "type2" }
+};
+static const unsigned int asn_MAP_dmrs_Type_enum2value_2[] = {
+       0       /* type2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_Type_specs_2 = {
+       asn_MAP_dmrs_Type_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_Type_enum2value_2, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_Type_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_dmrs_Type_2 = {
+       "dmrs-Type",
+       "dmrs-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_Type_tags_2,
+       sizeof(asn_DEF_dmrs_Type_tags_2)
+               /sizeof(asn_DEF_dmrs_Type_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dmrs_Type_tags_2,       /* Same as above */
+       sizeof(asn_DEF_dmrs_Type_tags_2)
+               /sizeof(asn_DEF_dmrs_Type_tags_2[0]), /* 2 */
+       { &asn_OER_type_dmrs_Type_constr_2, &asn_PER_type_dmrs_Type_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_Type_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_AdditionalPosition_value2enum_4[] = {
+       { 0,    4,      "pos0" },
+       { 1,    4,      "pos1" },
+       { 2,    4,      "pos3" }
+};
+static const unsigned int asn_MAP_dmrs_AdditionalPosition_enum2value_4[] = {
+       0,      /* pos0(0) */
+       1,      /* pos1(1) */
+       2       /* pos3(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_AdditionalPosition_specs_4 = {
+       asn_MAP_dmrs_AdditionalPosition_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_AdditionalPosition_enum2value_4,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_AdditionalPosition_tags_4[] = {
+       (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_dmrs_AdditionalPosition_4 = {
+       "dmrs-AdditionalPosition",
+       "dmrs-AdditionalPosition",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_AdditionalPosition_tags_4,
+       sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4)
+               /sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4[0]) - 1, /* 1 */
+       asn_DEF_dmrs_AdditionalPosition_tags_4, /* Same as above */
+       sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4)
+               /sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4[0]), /* 2 */
+       { &asn_OER_type_dmrs_AdditionalPosition_constr_4, &asn_PER_type_dmrs_AdditionalPosition_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_AdditionalPosition_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxLength_value2enum_8[] = {
+       { 0,    4,      "len2" }
+};
+static const unsigned int asn_MAP_maxLength_enum2value_8[] = {
+       0       /* len2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxLength_specs_8 = {
+       asn_MAP_maxLength_value2enum_8, /* "tag" => N; sorted by tag */
+       asn_MAP_maxLength_enum2value_8, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxLength_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_maxLength_8 = {
+       "maxLength",
+       "maxLength",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxLength_tags_8,
+       sizeof(asn_DEF_maxLength_tags_8)
+               /sizeof(asn_DEF_maxLength_tags_8[0]) - 1, /* 1 */
+       asn_DEF_maxLength_tags_8,       /* Same as above */
+       sizeof(asn_DEF_maxLength_tags_8)
+               /sizeof(asn_DEF_maxLength_tags_8[0]), /* 2 */
+       { &asn_OER_type_maxLength_constr_8, &asn_PER_type_maxLength_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxLength_specs_8      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_phaseTrackingRS_12[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DMRS_DownlinkConfig__phaseTrackingRS, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct DMRS_DownlinkConfig__phaseTrackingRS, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DownlinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_phaseTrackingRS_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_phaseTrackingRS_specs_12 = {
+       sizeof(struct DMRS_DownlinkConfig__phaseTrackingRS),
+       offsetof(struct DMRS_DownlinkConfig__phaseTrackingRS, _asn_ctx),
+       offsetof(struct DMRS_DownlinkConfig__phaseTrackingRS, present),
+       sizeof(((struct DMRS_DownlinkConfig__phaseTrackingRS *)0)->present),
+       asn_MAP_phaseTrackingRS_tag2el_12,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_phaseTrackingRS_12 = {
+       "phaseTrackingRS",
+       "phaseTrackingRS",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_phaseTrackingRS_constr_12, &asn_PER_type_phaseTrackingRS_constr_12, CHOICE_constraint },
+       asn_MBR_phaseTrackingRS_12,
+       2,      /* Elements count */
+       &asn_SPC_phaseTrackingRS_specs_12       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DMRS_DownlinkConfig_1[] = {
+       { ATF_POINTER, 6, offsetof(struct DMRS_DownlinkConfig, dmrs_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_Type_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-Type"
+               },
+       { ATF_POINTER, 5, offsetof(struct DMRS_DownlinkConfig, dmrs_AdditionalPosition),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_AdditionalPosition_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-AdditionalPosition"
+               },
+       { ATF_POINTER, 4, offsetof(struct DMRS_DownlinkConfig, maxLength),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxLength_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxLength"
+               },
+       { ATF_POINTER, 3, offsetof(struct DMRS_DownlinkConfig, scramblingID0),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_scramblingID0_constr_10, &asn_PER_memb_scramblingID0_constr_10,  memb_scramblingID0_constraint_1 },
+               0, 0, /* No default value */
+               "scramblingID0"
+               },
+       { ATF_POINTER, 2, offsetof(struct DMRS_DownlinkConfig, scramblingID1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_scramblingID1_constr_11, &asn_PER_memb_scramblingID1_constr_11,  memb_scramblingID1_constraint_1 },
+               0, 0, /* No default value */
+               "scramblingID1"
+               },
+       { ATF_POINTER, 1, offsetof(struct DMRS_DownlinkConfig, phaseTrackingRS),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_phaseTrackingRS_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phaseTrackingRS"
+               },
+};
+static const int asn_MAP_DMRS_DownlinkConfig_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_DMRS_DownlinkConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DMRS_DownlinkConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dmrs-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dmrs-AdditionalPosition */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxLength */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* scramblingID0 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* scramblingID1 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* phaseTrackingRS */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DMRS_DownlinkConfig_specs_1 = {
+       sizeof(struct DMRS_DownlinkConfig),
+       offsetof(struct DMRS_DownlinkConfig, _asn_ctx),
+       asn_MAP_DMRS_DownlinkConfig_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_DMRS_DownlinkConfig_oms_1,      /* Optional members */
+       6, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DMRS_DownlinkConfig = {
+       "DMRS-DownlinkConfig",
+       "DMRS-DownlinkConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DMRS_DownlinkConfig_tags_1,
+       sizeof(asn_DEF_DMRS_DownlinkConfig_tags_1)
+               /sizeof(asn_DEF_DMRS_DownlinkConfig_tags_1[0]), /* 1 */
+       asn_DEF_DMRS_DownlinkConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_DMRS_DownlinkConfig_tags_1)
+               /sizeof(asn_DEF_DMRS_DownlinkConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DMRS_DownlinkConfig_1,
+       6,      /* Elements count */
+       &asn_SPC_DMRS_DownlinkConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DMRS-DownlinkConfig.h b/src/codec_utils/RRC/DMRS-DownlinkConfig.h
new file mode 100644 (file)
index 0000000..06f025d
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DMRS_DownlinkConfig_H_
+#define        _DMRS_DownlinkConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DMRS_DownlinkConfig__dmrs_Type {
+       DMRS_DownlinkConfig__dmrs_Type_type2    = 0
+} e_DMRS_DownlinkConfig__dmrs_Type;
+typedef enum DMRS_DownlinkConfig__dmrs_AdditionalPosition {
+       DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos0       = 0,
+       DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos1       = 1,
+       DMRS_DownlinkConfig__dmrs_AdditionalPosition_pos3       = 2
+} e_DMRS_DownlinkConfig__dmrs_AdditionalPosition;
+typedef enum DMRS_DownlinkConfig__maxLength {
+       DMRS_DownlinkConfig__maxLength_len2     = 0
+} e_DMRS_DownlinkConfig__maxLength;
+typedef enum DMRS_DownlinkConfig__phaseTrackingRS_PR {
+       DMRS_DownlinkConfig__phaseTrackingRS_PR_NOTHING,        /* No components present */
+       DMRS_DownlinkConfig__phaseTrackingRS_PR_release,
+       DMRS_DownlinkConfig__phaseTrackingRS_PR_setup
+} DMRS_DownlinkConfig__phaseTrackingRS_PR;
+
+/* Forward declarations */
+struct PTRS_DownlinkConfig;
+
+/* DMRS-DownlinkConfig */
+typedef struct DMRS_DownlinkConfig {
+       long    *dmrs_Type;     /* OPTIONAL */
+       long    *dmrs_AdditionalPosition;       /* OPTIONAL */
+       long    *maxLength;     /* OPTIONAL */
+       long    *scramblingID0; /* OPTIONAL */
+       long    *scramblingID1; /* OPTIONAL */
+       struct DMRS_DownlinkConfig__phaseTrackingRS {
+               DMRS_DownlinkConfig__phaseTrackingRS_PR present;
+               union DMRS_DownlinkConfig__phaseTrackingRS_u {
+                       NULL_t   release;
+                       struct PTRS_DownlinkConfig      *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *phaseTrackingRS;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DMRS_DownlinkConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_Type_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_AdditionalPosition_4;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxLength_8;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DMRS_DownlinkConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_DMRS_DownlinkConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_DMRS_DownlinkConfig_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DMRS_DownlinkConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DMRS-UplinkConfig.c b/src/codec_utils/RRC/DMRS-UplinkConfig.c
new file mode 100644 (file)
index 0000000..5e04004
--- /dev/null
@@ -0,0 +1,618 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DMRS-UplinkConfig.h"
+
+#include "PTRS-UplinkConfig.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.
+ */
+static int
+memb_scramblingID0_constraint_13(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 <= 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_scramblingID1_constraint_13(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 <= 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_nPUSCH_Identity_constraint_17(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 <= 1007)) {
+               /* 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_dmrs_Type_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_Type_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_AdditionalPosition_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_AdditionalPosition_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_phaseTrackingRS_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phaseTrackingRS_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxLength_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxLength_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scramblingID0_constr_14 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_scramblingID0_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scramblingID1_constr_15 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_scramblingID1_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sequenceGroupHopping_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sequenceGroupHopping_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sequenceHopping_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sequenceHopping_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nPUSCH_Identity_constr_18 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1007) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nPUSCH_Identity_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1007 }   /* (0..1007) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_Type_value2enum_2[] = {
+       { 0,    5,      "type2" }
+};
+static const unsigned int asn_MAP_dmrs_Type_enum2value_2[] = {
+       0       /* type2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_Type_specs_2 = {
+       asn_MAP_dmrs_Type_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_Type_enum2value_2, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_Type_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_dmrs_Type_2 = {
+       "dmrs-Type",
+       "dmrs-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_Type_tags_2,
+       sizeof(asn_DEF_dmrs_Type_tags_2)
+               /sizeof(asn_DEF_dmrs_Type_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dmrs_Type_tags_2,       /* Same as above */
+       sizeof(asn_DEF_dmrs_Type_tags_2)
+               /sizeof(asn_DEF_dmrs_Type_tags_2[0]), /* 2 */
+       { &asn_OER_type_dmrs_Type_constr_2, &asn_PER_type_dmrs_Type_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_Type_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_AdditionalPosition_value2enum_4[] = {
+       { 0,    4,      "pos0" },
+       { 1,    4,      "pos1" },
+       { 2,    4,      "pos3" }
+};
+static const unsigned int asn_MAP_dmrs_AdditionalPosition_enum2value_4[] = {
+       0,      /* pos0(0) */
+       1,      /* pos1(1) */
+       2       /* pos3(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_AdditionalPosition_specs_4 = {
+       asn_MAP_dmrs_AdditionalPosition_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_AdditionalPosition_enum2value_4,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_AdditionalPosition_tags_4[] = {
+       (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_dmrs_AdditionalPosition_4 = {
+       "dmrs-AdditionalPosition",
+       "dmrs-AdditionalPosition",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_AdditionalPosition_tags_4,
+       sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4)
+               /sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4[0]) - 1, /* 1 */
+       asn_DEF_dmrs_AdditionalPosition_tags_4, /* Same as above */
+       sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4)
+               /sizeof(asn_DEF_dmrs_AdditionalPosition_tags_4[0]), /* 2 */
+       { &asn_OER_type_dmrs_AdditionalPosition_constr_4, &asn_PER_type_dmrs_AdditionalPosition_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_AdditionalPosition_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_phaseTrackingRS_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DMRS_UplinkConfig__phaseTrackingRS, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct DMRS_UplinkConfig__phaseTrackingRS, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_phaseTrackingRS_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_phaseTrackingRS_specs_8 = {
+       sizeof(struct DMRS_UplinkConfig__phaseTrackingRS),
+       offsetof(struct DMRS_UplinkConfig__phaseTrackingRS, _asn_ctx),
+       offsetof(struct DMRS_UplinkConfig__phaseTrackingRS, present),
+       sizeof(((struct DMRS_UplinkConfig__phaseTrackingRS *)0)->present),
+       asn_MAP_phaseTrackingRS_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_phaseTrackingRS_8 = {
+       "phaseTrackingRS",
+       "phaseTrackingRS",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_phaseTrackingRS_constr_8, &asn_PER_type_phaseTrackingRS_constr_8, CHOICE_constraint },
+       asn_MBR_phaseTrackingRS_8,
+       2,      /* Elements count */
+       &asn_SPC_phaseTrackingRS_specs_8        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxLength_value2enum_11[] = {
+       { 0,    4,      "len2" }
+};
+static const unsigned int asn_MAP_maxLength_enum2value_11[] = {
+       0       /* len2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxLength_specs_11 = {
+       asn_MAP_maxLength_value2enum_11,        /* "tag" => N; sorted by tag */
+       asn_MAP_maxLength_enum2value_11,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxLength_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_maxLength_11 = {
+       "maxLength",
+       "maxLength",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxLength_tags_11,
+       sizeof(asn_DEF_maxLength_tags_11)
+               /sizeof(asn_DEF_maxLength_tags_11[0]) - 1, /* 1 */
+       asn_DEF_maxLength_tags_11,      /* Same as above */
+       sizeof(asn_DEF_maxLength_tags_11)
+               /sizeof(asn_DEF_maxLength_tags_11[0]), /* 2 */
+       { &asn_OER_type_maxLength_constr_11, &asn_PER_type_maxLength_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxLength_specs_11     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_transformPrecodingDisabled_13[] = {
+       { ATF_POINTER, 2, offsetof(struct DMRS_UplinkConfig__transformPrecodingDisabled, scramblingID0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_scramblingID0_constr_14, &asn_PER_memb_scramblingID0_constr_14,  memb_scramblingID0_constraint_13 },
+               0, 0, /* No default value */
+               "scramblingID0"
+               },
+       { ATF_POINTER, 1, offsetof(struct DMRS_UplinkConfig__transformPrecodingDisabled, scramblingID1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_scramblingID1_constr_15, &asn_PER_memb_scramblingID1_constr_15,  memb_scramblingID1_constraint_13 },
+               0, 0, /* No default value */
+               "scramblingID1"
+               },
+};
+static const int asn_MAP_transformPrecodingDisabled_oms_13[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_transformPrecodingDisabled_tags_13[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_transformPrecodingDisabled_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scramblingID0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scramblingID1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_transformPrecodingDisabled_specs_13 = {
+       sizeof(struct DMRS_UplinkConfig__transformPrecodingDisabled),
+       offsetof(struct DMRS_UplinkConfig__transformPrecodingDisabled, _asn_ctx),
+       asn_MAP_transformPrecodingDisabled_tag2el_13,
+       2,      /* Count of tags in the map */
+       asn_MAP_transformPrecodingDisabled_oms_13,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transformPrecodingDisabled_13 = {
+       "transformPrecodingDisabled",
+       "transformPrecodingDisabled",
+       &asn_OP_SEQUENCE,
+       asn_DEF_transformPrecodingDisabled_tags_13,
+       sizeof(asn_DEF_transformPrecodingDisabled_tags_13)
+               /sizeof(asn_DEF_transformPrecodingDisabled_tags_13[0]) - 1, /* 1 */
+       asn_DEF_transformPrecodingDisabled_tags_13,     /* Same as above */
+       sizeof(asn_DEF_transformPrecodingDisabled_tags_13)
+               /sizeof(asn_DEF_transformPrecodingDisabled_tags_13[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_transformPrecodingDisabled_13,
+       2,      /* Elements count */
+       &asn_SPC_transformPrecodingDisabled_specs_13    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sequenceGroupHopping_value2enum_19[] = {
+       { 0,    8,      "disabled" }
+};
+static const unsigned int asn_MAP_sequenceGroupHopping_enum2value_19[] = {
+       0       /* disabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sequenceGroupHopping_specs_19 = {
+       asn_MAP_sequenceGroupHopping_value2enum_19,     /* "tag" => N; sorted by tag */
+       asn_MAP_sequenceGroupHopping_enum2value_19,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sequenceGroupHopping_tags_19[] = {
+       (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_sequenceGroupHopping_19 = {
+       "sequenceGroupHopping",
+       "sequenceGroupHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sequenceGroupHopping_tags_19,
+       sizeof(asn_DEF_sequenceGroupHopping_tags_19)
+               /sizeof(asn_DEF_sequenceGroupHopping_tags_19[0]) - 1, /* 1 */
+       asn_DEF_sequenceGroupHopping_tags_19,   /* Same as above */
+       sizeof(asn_DEF_sequenceGroupHopping_tags_19)
+               /sizeof(asn_DEF_sequenceGroupHopping_tags_19[0]), /* 2 */
+       { &asn_OER_type_sequenceGroupHopping_constr_19, &asn_PER_type_sequenceGroupHopping_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sequenceGroupHopping_specs_19  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sequenceHopping_value2enum_21[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_sequenceHopping_enum2value_21[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sequenceHopping_specs_21 = {
+       asn_MAP_sequenceHopping_value2enum_21,  /* "tag" => N; sorted by tag */
+       asn_MAP_sequenceHopping_enum2value_21,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sequenceHopping_tags_21[] = {
+       (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_sequenceHopping_21 = {
+       "sequenceHopping",
+       "sequenceHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sequenceHopping_tags_21,
+       sizeof(asn_DEF_sequenceHopping_tags_21)
+               /sizeof(asn_DEF_sequenceHopping_tags_21[0]) - 1, /* 1 */
+       asn_DEF_sequenceHopping_tags_21,        /* Same as above */
+       sizeof(asn_DEF_sequenceHopping_tags_21)
+               /sizeof(asn_DEF_sequenceHopping_tags_21[0]), /* 2 */
+       { &asn_OER_type_sequenceHopping_constr_21, &asn_PER_type_sequenceHopping_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sequenceHopping_specs_21       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_transformPrecodingEnabled_17[] = {
+       { ATF_POINTER, 3, offsetof(struct DMRS_UplinkConfig__transformPrecodingEnabled, nPUSCH_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nPUSCH_Identity_constr_18, &asn_PER_memb_nPUSCH_Identity_constr_18,  memb_nPUSCH_Identity_constraint_17 },
+               0, 0, /* No default value */
+               "nPUSCH-Identity"
+               },
+       { ATF_POINTER, 2, offsetof(struct DMRS_UplinkConfig__transformPrecodingEnabled, sequenceGroupHopping),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sequenceGroupHopping_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sequenceGroupHopping"
+               },
+       { ATF_POINTER, 1, offsetof(struct DMRS_UplinkConfig__transformPrecodingEnabled, sequenceHopping),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sequenceHopping_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sequenceHopping"
+               },
+};
+static const int asn_MAP_transformPrecodingEnabled_oms_17[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_transformPrecodingEnabled_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_transformPrecodingEnabled_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nPUSCH-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sequenceGroupHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sequenceHopping */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_transformPrecodingEnabled_specs_17 = {
+       sizeof(struct DMRS_UplinkConfig__transformPrecodingEnabled),
+       offsetof(struct DMRS_UplinkConfig__transformPrecodingEnabled, _asn_ctx),
+       asn_MAP_transformPrecodingEnabled_tag2el_17,
+       3,      /* Count of tags in the map */
+       asn_MAP_transformPrecodingEnabled_oms_17,       /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transformPrecodingEnabled_17 = {
+       "transformPrecodingEnabled",
+       "transformPrecodingEnabled",
+       &asn_OP_SEQUENCE,
+       asn_DEF_transformPrecodingEnabled_tags_17,
+       sizeof(asn_DEF_transformPrecodingEnabled_tags_17)
+               /sizeof(asn_DEF_transformPrecodingEnabled_tags_17[0]) - 1, /* 1 */
+       asn_DEF_transformPrecodingEnabled_tags_17,      /* Same as above */
+       sizeof(asn_DEF_transformPrecodingEnabled_tags_17)
+               /sizeof(asn_DEF_transformPrecodingEnabled_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_transformPrecodingEnabled_17,
+       3,      /* Elements count */
+       &asn_SPC_transformPrecodingEnabled_specs_17     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DMRS_UplinkConfig_1[] = {
+       { ATF_POINTER, 6, offsetof(struct DMRS_UplinkConfig, dmrs_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_Type_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-Type"
+               },
+       { ATF_POINTER, 5, offsetof(struct DMRS_UplinkConfig, dmrs_AdditionalPosition),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_AdditionalPosition_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-AdditionalPosition"
+               },
+       { ATF_POINTER, 4, offsetof(struct DMRS_UplinkConfig, phaseTrackingRS),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_phaseTrackingRS_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phaseTrackingRS"
+               },
+       { ATF_POINTER, 3, offsetof(struct DMRS_UplinkConfig, maxLength),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxLength_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxLength"
+               },
+       { ATF_POINTER, 2, offsetof(struct DMRS_UplinkConfig, transformPrecodingDisabled),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_transformPrecodingDisabled_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecodingDisabled"
+               },
+       { ATF_POINTER, 1, offsetof(struct DMRS_UplinkConfig, transformPrecodingEnabled),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_transformPrecodingEnabled_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecodingEnabled"
+               },
+};
+static const int asn_MAP_DMRS_UplinkConfig_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_DMRS_UplinkConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DMRS_UplinkConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dmrs-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dmrs-AdditionalPosition */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* phaseTrackingRS */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxLength */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* transformPrecodingDisabled */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* transformPrecodingEnabled */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DMRS_UplinkConfig_specs_1 = {
+       sizeof(struct DMRS_UplinkConfig),
+       offsetof(struct DMRS_UplinkConfig, _asn_ctx),
+       asn_MAP_DMRS_UplinkConfig_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_DMRS_UplinkConfig_oms_1,        /* Optional members */
+       6, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DMRS_UplinkConfig = {
+       "DMRS-UplinkConfig",
+       "DMRS-UplinkConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DMRS_UplinkConfig_tags_1,
+       sizeof(asn_DEF_DMRS_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_DMRS_UplinkConfig_tags_1[0]), /* 1 */
+       asn_DEF_DMRS_UplinkConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DMRS_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_DMRS_UplinkConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DMRS_UplinkConfig_1,
+       6,      /* Elements count */
+       &asn_SPC_DMRS_UplinkConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DMRS-UplinkConfig.h b/src/codec_utils/RRC/DMRS-UplinkConfig.h
new file mode 100644 (file)
index 0000000..4f0c76a
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DMRS_UplinkConfig_H_
+#define        _DMRS_UplinkConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DMRS_UplinkConfig__dmrs_Type {
+       DMRS_UplinkConfig__dmrs_Type_type2      = 0
+} e_DMRS_UplinkConfig__dmrs_Type;
+typedef enum DMRS_UplinkConfig__dmrs_AdditionalPosition {
+       DMRS_UplinkConfig__dmrs_AdditionalPosition_pos0 = 0,
+       DMRS_UplinkConfig__dmrs_AdditionalPosition_pos1 = 1,
+       DMRS_UplinkConfig__dmrs_AdditionalPosition_pos3 = 2
+} e_DMRS_UplinkConfig__dmrs_AdditionalPosition;
+typedef enum DMRS_UplinkConfig__phaseTrackingRS_PR {
+       DMRS_UplinkConfig__phaseTrackingRS_PR_NOTHING,  /* No components present */
+       DMRS_UplinkConfig__phaseTrackingRS_PR_release,
+       DMRS_UplinkConfig__phaseTrackingRS_PR_setup
+} DMRS_UplinkConfig__phaseTrackingRS_PR;
+typedef enum DMRS_UplinkConfig__maxLength {
+       DMRS_UplinkConfig__maxLength_len2       = 0
+} e_DMRS_UplinkConfig__maxLength;
+typedef enum DMRS_UplinkConfig__transformPrecodingEnabled__sequenceGroupHopping {
+       DMRS_UplinkConfig__transformPrecodingEnabled__sequenceGroupHopping_disabled     = 0
+} e_DMRS_UplinkConfig__transformPrecodingEnabled__sequenceGroupHopping;
+typedef enum DMRS_UplinkConfig__transformPrecodingEnabled__sequenceHopping {
+       DMRS_UplinkConfig__transformPrecodingEnabled__sequenceHopping_enabled   = 0
+} e_DMRS_UplinkConfig__transformPrecodingEnabled__sequenceHopping;
+
+/* Forward declarations */
+struct PTRS_UplinkConfig;
+
+/* DMRS-UplinkConfig */
+typedef struct DMRS_UplinkConfig {
+       long    *dmrs_Type;     /* OPTIONAL */
+       long    *dmrs_AdditionalPosition;       /* OPTIONAL */
+       struct DMRS_UplinkConfig__phaseTrackingRS {
+               DMRS_UplinkConfig__phaseTrackingRS_PR present;
+               union DMRS_UplinkConfig__phaseTrackingRS_u {
+                       NULL_t   release;
+                       struct PTRS_UplinkConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *phaseTrackingRS;
+       long    *maxLength;     /* OPTIONAL */
+       struct DMRS_UplinkConfig__transformPrecodingDisabled {
+               long    *scramblingID0; /* OPTIONAL */
+               long    *scramblingID1; /* OPTIONAL */
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *transformPrecodingDisabled;
+       struct DMRS_UplinkConfig__transformPrecodingEnabled {
+               long    *nPUSCH_Identity;       /* OPTIONAL */
+               long    *sequenceGroupHopping;  /* OPTIONAL */
+               long    *sequenceHopping;       /* OPTIONAL */
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *transformPrecodingEnabled;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DMRS_UplinkConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_Type_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_AdditionalPosition_4;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxLength_11;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sequenceGroupHopping_19;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sequenceHopping_21;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DMRS_UplinkConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_DMRS_UplinkConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_DMRS_UplinkConfig_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DMRS_UplinkConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-CountInfo.c b/src/codec_utils/RRC/DRB-CountInfo.c
new file mode 100644 (file)
index 0000000..fe4a2c2
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-CountInfo.h"
+
+static int
+count_Uplink_3_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
+count_Downlink_4_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_count_Uplink_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 int
+memb_count_Downlink_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_count_Uplink_constr_3 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_type_count_Uplink_constr_3 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_count_Downlink_constr_4 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_type_count_Downlink_constr_4 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_count_Uplink_constr_3 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_count_Uplink_constr_3 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_count_Downlink_constr_4 CC_NOTUSED = {
+       { 4, 1 }        /* (0..4294967295) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_count_Downlink_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       32, -1,  0,  4294967295 }      /* (0..4294967295) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_specifics_t asn_SPC_count_Uplink_specs_3 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_count_Uplink_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_count_Uplink_3 = {
+       "count-Uplink",
+       "count-Uplink",
+       &asn_OP_NativeInteger,
+       asn_DEF_count_Uplink_tags_3,
+       sizeof(asn_DEF_count_Uplink_tags_3)
+               /sizeof(asn_DEF_count_Uplink_tags_3[0]) - 1, /* 1 */
+       asn_DEF_count_Uplink_tags_3,    /* Same as above */
+       sizeof(asn_DEF_count_Uplink_tags_3)
+               /sizeof(asn_DEF_count_Uplink_tags_3[0]), /* 2 */
+       { &asn_OER_type_count_Uplink_constr_3, &asn_PER_type_count_Uplink_constr_3, count_Uplink_3_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_count_Uplink_specs_3   /* Additional specs */
+};
+
+static const asn_INTEGER_specifics_t asn_SPC_count_Downlink_specs_4 = {
+       0,      0,      0,      0,      0,
+       0,      /* Native long size */
+       1       /* Unsigned representation */
+};
+static const ber_tlv_tag_t asn_DEF_count_Downlink_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_count_Downlink_4 = {
+       "count-Downlink",
+       "count-Downlink",
+       &asn_OP_NativeInteger,
+       asn_DEF_count_Downlink_tags_4,
+       sizeof(asn_DEF_count_Downlink_tags_4)
+               /sizeof(asn_DEF_count_Downlink_tags_4[0]) - 1, /* 1 */
+       asn_DEF_count_Downlink_tags_4,  /* Same as above */
+       sizeof(asn_DEF_count_Downlink_tags_4)
+               /sizeof(asn_DEF_count_Downlink_tags_4[0]), /* 2 */
+       { &asn_OER_type_count_Downlink_constr_4, &asn_PER_type_count_Downlink_constr_4, count_Downlink_4_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_count_Downlink_specs_4 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DRB_CountInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountInfo, drb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountInfo, count_Uplink),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_count_Uplink_3,
+               0,
+               { &asn_OER_memb_count_Uplink_constr_3, &asn_PER_memb_count_Uplink_constr_3,  memb_count_Uplink_constraint_1 },
+               0, 0, /* No default value */
+               "count-Uplink"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountInfo, count_Downlink),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_count_Downlink_4,
+               0,
+               { &asn_OER_memb_count_Downlink_constr_4, &asn_PER_memb_count_Downlink_constr_4,  memb_count_Downlink_constraint_1 },
+               0, 0, /* No default value */
+               "count-Downlink"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_CountInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DRB_CountInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drb-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* count-Uplink */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* count-Downlink */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DRB_CountInfo_specs_1 = {
+       sizeof(struct DRB_CountInfo),
+       offsetof(struct DRB_CountInfo, _asn_ctx),
+       asn_MAP_DRB_CountInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_CountInfo = {
+       "DRB-CountInfo",
+       "DRB-CountInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DRB_CountInfo_tags_1,
+       sizeof(asn_DEF_DRB_CountInfo_tags_1)
+               /sizeof(asn_DEF_DRB_CountInfo_tags_1[0]), /* 1 */
+       asn_DEF_DRB_CountInfo_tags_1,   /* Same as above */
+       sizeof(asn_DEF_DRB_CountInfo_tags_1)
+               /sizeof(asn_DEF_DRB_CountInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DRB_CountInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_DRB_CountInfo_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-CountInfo.h b/src/codec_utils/RRC/DRB-CountInfo.h
new file mode 100644 (file)
index 0000000..c8d5109
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_CountInfo_H_
+#define        _DRB_CountInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-Identity.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DRB-CountInfo */
+typedef struct DRB_CountInfo {
+       DRB_Identity_t   drb_Identity;
+       unsigned long    count_Uplink;
+       unsigned long    count_Downlink;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_CountInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_count_Uplink_3;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_count_Downlink_4;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_CountInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_DRB_CountInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_CountInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_CountInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-CountInfoList.c b/src/codec_utils/RRC/DRB-CountInfoList.c
new file mode 100644 (file)
index 0000000..eec5e25
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-CountInfoList.h"
+
+#include "DRB-CountInfo.h"
+static asn_oer_constraints_t asn_OER_type_DRB_CountInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..29)) */};
+asn_per_constraints_t asn_PER_type_DRB_CountInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (SIZE(0..29)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DRB_CountInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_DRB_CountInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_CountInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DRB_CountInfoList_specs_1 = {
+       sizeof(struct DRB_CountInfoList),
+       offsetof(struct DRB_CountInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_CountInfoList = {
+       "DRB-CountInfoList",
+       "DRB-CountInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_DRB_CountInfoList_tags_1,
+       sizeof(asn_DEF_DRB_CountInfoList_tags_1)
+               /sizeof(asn_DEF_DRB_CountInfoList_tags_1[0]), /* 1 */
+       asn_DEF_DRB_CountInfoList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DRB_CountInfoList_tags_1)
+               /sizeof(asn_DEF_DRB_CountInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_DRB_CountInfoList_constr_1, &asn_PER_type_DRB_CountInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_DRB_CountInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_DRB_CountInfoList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-CountInfoList.h b/src/codec_utils/RRC/DRB-CountInfoList.h
new file mode 100644 (file)
index 0000000..919eca7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_CountInfoList_H_
+#define        _DRB_CountInfoList_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 DRB_CountInfo;
+
+/* DRB-CountInfoList */
+typedef struct DRB_CountInfoList {
+       A_SEQUENCE_OF(struct DRB_CountInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_CountInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_CountInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_DRB_CountInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_CountInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_DRB_CountInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_CountInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-CountMSB-Info.c b/src/codec_utils/RRC/DRB-CountMSB-Info.c
new file mode 100644 (file)
index 0000000..b13ae45
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-CountMSB-Info.h"
+
+static int
+memb_countMSB_Uplink_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 >= 0 && value <= 33554431)) {
+               /* 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_countMSB_Downlink_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 >= 0 && value <= 33554431)) {
+               /* 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_countMSB_Uplink_constr_3 CC_NOTUSED = {
+       { 4, 1 }        /* (0..33554431) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_countMSB_Uplink_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       25, -1,  0,  33554431 }        /* (0..33554431) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_countMSB_Downlink_constr_4 CC_NOTUSED = {
+       { 4, 1 }        /* (0..33554431) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_countMSB_Downlink_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       25, -1,  0,  33554431 }        /* (0..33554431) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DRB_CountMSB_Info_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountMSB_Info, drb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountMSB_Info, countMSB_Uplink),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_countMSB_Uplink_constr_3, &asn_PER_memb_countMSB_Uplink_constr_3,  memb_countMSB_Uplink_constraint_1 },
+               0, 0, /* No default value */
+               "countMSB-Uplink"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_CountMSB_Info, countMSB_Downlink),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_countMSB_Downlink_constr_4, &asn_PER_memb_countMSB_Downlink_constr_4,  memb_countMSB_Downlink_constraint_1 },
+               0, 0, /* No default value */
+               "countMSB-Downlink"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_CountMSB_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DRB_CountMSB_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drb-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* countMSB-Uplink */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* countMSB-Downlink */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DRB_CountMSB_Info_specs_1 = {
+       sizeof(struct DRB_CountMSB_Info),
+       offsetof(struct DRB_CountMSB_Info, _asn_ctx),
+       asn_MAP_DRB_CountMSB_Info_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_CountMSB_Info = {
+       "DRB-CountMSB-Info",
+       "DRB-CountMSB-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DRB_CountMSB_Info_tags_1,
+       sizeof(asn_DEF_DRB_CountMSB_Info_tags_1)
+               /sizeof(asn_DEF_DRB_CountMSB_Info_tags_1[0]), /* 1 */
+       asn_DEF_DRB_CountMSB_Info_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DRB_CountMSB_Info_tags_1)
+               /sizeof(asn_DEF_DRB_CountMSB_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DRB_CountMSB_Info_1,
+       3,      /* Elements count */
+       &asn_SPC_DRB_CountMSB_Info_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-CountMSB-Info.h b/src/codec_utils/RRC/DRB-CountMSB-Info.h
new file mode 100644 (file)
index 0000000..f89ceba
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_CountMSB_Info_H_
+#define        _DRB_CountMSB_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-Identity.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DRB-CountMSB-Info */
+typedef struct DRB_CountMSB_Info {
+       DRB_Identity_t   drb_Identity;
+       long     countMSB_Uplink;
+       long     countMSB_Downlink;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_CountMSB_Info_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_CountMSB_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_DRB_CountMSB_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_CountMSB_Info_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_CountMSB_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-CountMSB-InfoList.c b/src/codec_utils/RRC/DRB-CountMSB-InfoList.c
new file mode 100644 (file)
index 0000000..7fad2a3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-CountMSB-InfoList.h"
+
+#include "DRB-CountMSB-Info.h"
+static asn_oer_constraints_t asn_OER_type_DRB_CountMSB_InfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..29)) */};
+asn_per_constraints_t asn_PER_type_DRB_CountMSB_InfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  29 }       /* (SIZE(1..29)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DRB_CountMSB_InfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_DRB_CountMSB_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_CountMSB_InfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DRB_CountMSB_InfoList_specs_1 = {
+       sizeof(struct DRB_CountMSB_InfoList),
+       offsetof(struct DRB_CountMSB_InfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_CountMSB_InfoList = {
+       "DRB-CountMSB-InfoList",
+       "DRB-CountMSB-InfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_DRB_CountMSB_InfoList_tags_1,
+       sizeof(asn_DEF_DRB_CountMSB_InfoList_tags_1)
+               /sizeof(asn_DEF_DRB_CountMSB_InfoList_tags_1[0]), /* 1 */
+       asn_DEF_DRB_CountMSB_InfoList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_DRB_CountMSB_InfoList_tags_1)
+               /sizeof(asn_DEF_DRB_CountMSB_InfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_DRB_CountMSB_InfoList_constr_1, &asn_PER_type_DRB_CountMSB_InfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_DRB_CountMSB_InfoList_1,
+       1,      /* Single element */
+       &asn_SPC_DRB_CountMSB_InfoList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-CountMSB-InfoList.h b/src/codec_utils/RRC/DRB-CountMSB-InfoList.h
new file mode 100644 (file)
index 0000000..fc08e1f
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_CountMSB_InfoList_H_
+#define        _DRB_CountMSB_InfoList_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 DRB_CountMSB_Info;
+
+/* DRB-CountMSB-InfoList */
+typedef struct DRB_CountMSB_InfoList {
+       A_SEQUENCE_OF(struct DRB_CountMSB_Info) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_CountMSB_InfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_CountMSB_InfoList;
+extern asn_SET_OF_specifics_t asn_SPC_DRB_CountMSB_InfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_CountMSB_InfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_DRB_CountMSB_InfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_CountMSB_InfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-Identity.c b/src/codec_utils/RRC/DRB-Identity.c
new file mode 100644 (file)
index 0000000..1b2b1ac
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-Identity.h"
+
+int
+DRB_Identity_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 <= 32)) {
+               /* 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_DRB_Identity_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+asn_per_constraints_t asn_PER_type_DRB_Identity_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_DRB_Identity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_Identity = {
+       "DRB-Identity",
+       "DRB-Identity",
+       &asn_OP_NativeInteger,
+       asn_DEF_DRB_Identity_tags_1,
+       sizeof(asn_DEF_DRB_Identity_tags_1)
+               /sizeof(asn_DEF_DRB_Identity_tags_1[0]), /* 1 */
+       asn_DEF_DRB_Identity_tags_1,    /* Same as above */
+       sizeof(asn_DEF_DRB_Identity_tags_1)
+               /sizeof(asn_DEF_DRB_Identity_tags_1[0]), /* 1 */
+       { &asn_OER_type_DRB_Identity_constr_1, &asn_PER_type_DRB_Identity_constr_1, DRB_Identity_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/DRB-Identity.h b/src/codec_utils/RRC/DRB-Identity.h
new file mode 100644 (file)
index 0000000..afe4ab8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_Identity_H_
+#define        _DRB_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DRB-Identity */
+typedef long    DRB_Identity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_DRB_Identity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_DRB_Identity;
+asn_struct_free_f DRB_Identity_free;
+asn_struct_print_f DRB_Identity_print;
+asn_constr_check_f DRB_Identity_constraint;
+ber_type_decoder_f DRB_Identity_decode_ber;
+der_type_encoder_f DRB_Identity_encode_der;
+xer_type_decoder_f DRB_Identity_decode_xer;
+xer_type_encoder_f DRB_Identity_encode_xer;
+oer_type_decoder_f DRB_Identity_decode_oer;
+oer_type_encoder_f DRB_Identity_encode_oer;
+per_type_decoder_f DRB_Identity_decode_uper;
+per_type_encoder_f DRB_Identity_encode_uper;
+per_type_decoder_f DRB_Identity_decode_aper;
+per_type_encoder_f DRB_Identity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_Identity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-ToAddMod.c b/src/codec_utils/RRC/DRB-ToAddMod.c
new file mode 100644 (file)
index 0000000..323c04c
--- /dev/null
@@ -0,0 +1,278 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-ToAddMod.h"
+
+#include "PDCP-Config.h"
+#include "SDAP-Config.h"
+static int
+memb_eps_BearerIdentity_constraint_2(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 <= 15)) {
+               /* 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 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_memb_eps_BearerIdentity_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_eps_BearerIdentity_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cnAssociation_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cnAssociation_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_reestablishPDCP_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reestablishPDCP_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_recoverPDCP_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_recoverPDCP_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cnAssociation_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_ToAddMod__cnAssociation, choice.eps_BearerIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_eps_BearerIdentity_constr_3, &asn_PER_memb_eps_BearerIdentity_constr_3,  memb_eps_BearerIdentity_constraint_2 },
+               0, 0, /* No default value */
+               "eps-BearerIdentity"
+               },
+       { ATF_POINTER, 0, offsetof(struct DRB_ToAddMod__cnAssociation, choice.sdap_Config),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SDAP_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sdap-Config"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_cnAssociation_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eps-BearerIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sdap-Config */
+};
+static asn_CHOICE_specifics_t asn_SPC_cnAssociation_specs_2 = {
+       sizeof(struct DRB_ToAddMod__cnAssociation),
+       offsetof(struct DRB_ToAddMod__cnAssociation, _asn_ctx),
+       offsetof(struct DRB_ToAddMod__cnAssociation, present),
+       sizeof(((struct DRB_ToAddMod__cnAssociation *)0)->present),
+       asn_MAP_cnAssociation_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cnAssociation_2 = {
+       "cnAssociation",
+       "cnAssociation",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_cnAssociation_constr_2, &asn_PER_type_cnAssociation_constr_2, CHOICE_constraint },
+       asn_MBR_cnAssociation_2,
+       2,      /* Elements count */
+       &asn_SPC_cnAssociation_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reestablishPDCP_value2enum_6[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_reestablishPDCP_enum2value_6[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reestablishPDCP_specs_6 = {
+       asn_MAP_reestablishPDCP_value2enum_6,   /* "tag" => N; sorted by tag */
+       asn_MAP_reestablishPDCP_enum2value_6,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reestablishPDCP_tags_6[] = {
+       (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_reestablishPDCP_6 = {
+       "reestablishPDCP",
+       "reestablishPDCP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reestablishPDCP_tags_6,
+       sizeof(asn_DEF_reestablishPDCP_tags_6)
+               /sizeof(asn_DEF_reestablishPDCP_tags_6[0]) - 1, /* 1 */
+       asn_DEF_reestablishPDCP_tags_6, /* Same as above */
+       sizeof(asn_DEF_reestablishPDCP_tags_6)
+               /sizeof(asn_DEF_reestablishPDCP_tags_6[0]), /* 2 */
+       { &asn_OER_type_reestablishPDCP_constr_6, &asn_PER_type_reestablishPDCP_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reestablishPDCP_specs_6        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_recoverPDCP_value2enum_8[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_recoverPDCP_enum2value_8[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_recoverPDCP_specs_8 = {
+       asn_MAP_recoverPDCP_value2enum_8,       /* "tag" => N; sorted by tag */
+       asn_MAP_recoverPDCP_enum2value_8,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_recoverPDCP_tags_8[] = {
+       (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_recoverPDCP_8 = {
+       "recoverPDCP",
+       "recoverPDCP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_recoverPDCP_tags_8,
+       sizeof(asn_DEF_recoverPDCP_tags_8)
+               /sizeof(asn_DEF_recoverPDCP_tags_8[0]) - 1, /* 1 */
+       asn_DEF_recoverPDCP_tags_8,     /* Same as above */
+       sizeof(asn_DEF_recoverPDCP_tags_8)
+               /sizeof(asn_DEF_recoverPDCP_tags_8[0]), /* 2 */
+       { &asn_OER_type_recoverPDCP_constr_8, &asn_PER_type_recoverPDCP_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_recoverPDCP_specs_8    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DRB_ToAddMod_1[] = {
+       { ATF_POINTER, 1, offsetof(struct DRB_ToAddMod, cnAssociation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_cnAssociation_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cnAssociation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRB_ToAddMod, drb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-Identity"
+               },
+       { ATF_POINTER, 3, offsetof(struct DRB_ToAddMod, reestablishPDCP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reestablishPDCP_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reestablishPDCP"
+               },
+       { ATF_POINTER, 2, offsetof(struct DRB_ToAddMod, recoverPDCP),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_recoverPDCP_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "recoverPDCP"
+               },
+       { ATF_POINTER, 1, offsetof(struct DRB_ToAddMod, pdcp_Config),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCP_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-Config"
+               },
+};
+static const int asn_MAP_DRB_ToAddMod_oms_1[] = { 0, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_DRB_ToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DRB_ToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cnAssociation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drb-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reestablishPDCP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* recoverPDCP */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* pdcp-Config */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DRB_ToAddMod_specs_1 = {
+       sizeof(struct DRB_ToAddMod),
+       offsetof(struct DRB_ToAddMod, _asn_ctx),
+       asn_MAP_DRB_ToAddMod_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_DRB_ToAddMod_oms_1,     /* Optional members */
+       4, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_ToAddMod = {
+       "DRB-ToAddMod",
+       "DRB-ToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DRB_ToAddMod_tags_1,
+       sizeof(asn_DEF_DRB_ToAddMod_tags_1)
+               /sizeof(asn_DEF_DRB_ToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_DRB_ToAddMod_tags_1,    /* Same as above */
+       sizeof(asn_DEF_DRB_ToAddMod_tags_1)
+               /sizeof(asn_DEF_DRB_ToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DRB_ToAddMod_1,
+       5,      /* Elements count */
+       &asn_SPC_DRB_ToAddMod_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-ToAddMod.h b/src/codec_utils/RRC/DRB-ToAddMod.h
new file mode 100644 (file)
index 0000000..9d5b2be
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_ToAddMod_H_
+#define        _DRB_ToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-Identity.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DRB_ToAddMod__cnAssociation_PR {
+       DRB_ToAddMod__cnAssociation_PR_NOTHING, /* No components present */
+       DRB_ToAddMod__cnAssociation_PR_eps_BearerIdentity,
+       DRB_ToAddMod__cnAssociation_PR_sdap_Config
+} DRB_ToAddMod__cnAssociation_PR;
+typedef enum DRB_ToAddMod__reestablishPDCP {
+       DRB_ToAddMod__reestablishPDCP_true      = 0
+} e_DRB_ToAddMod__reestablishPDCP;
+typedef enum DRB_ToAddMod__recoverPDCP {
+       DRB_ToAddMod__recoverPDCP_true  = 0
+} e_DRB_ToAddMod__recoverPDCP;
+
+/* Forward declarations */
+struct PDCP_Config;
+struct SDAP_Config;
+
+/* DRB-ToAddMod */
+typedef struct DRB_ToAddMod {
+       struct DRB_ToAddMod__cnAssociation {
+               DRB_ToAddMod__cnAssociation_PR present;
+               union DRB_ToAddMod__cnAssociation_u {
+                       long     eps_BearerIdentity;
+                       struct SDAP_Config      *sdap_Config;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *cnAssociation;
+       DRB_Identity_t   drb_Identity;
+       long    *reestablishPDCP;       /* OPTIONAL */
+       long    *recoverPDCP;   /* OPTIONAL */
+       struct PDCP_Config      *pdcp_Config;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_ToAddMod_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reestablishPDCP_6;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_recoverPDCP_8; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_ToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_DRB_ToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_ToAddMod_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_ToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-ToAddModList.c b/src/codec_utils/RRC/DRB-ToAddModList.c
new file mode 100644 (file)
index 0000000..ecd38a4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-ToAddModList.h"
+
+#include "DRB-ToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_DRB_ToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..29)) */};
+asn_per_constraints_t asn_PER_type_DRB_ToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  29 }       /* (SIZE(1..29)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DRB_ToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_DRB_ToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_ToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DRB_ToAddModList_specs_1 = {
+       sizeof(struct DRB_ToAddModList),
+       offsetof(struct DRB_ToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_ToAddModList = {
+       "DRB-ToAddModList",
+       "DRB-ToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_DRB_ToAddModList_tags_1,
+       sizeof(asn_DEF_DRB_ToAddModList_tags_1)
+               /sizeof(asn_DEF_DRB_ToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_DRB_ToAddModList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_DRB_ToAddModList_tags_1)
+               /sizeof(asn_DEF_DRB_ToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_DRB_ToAddModList_constr_1, &asn_PER_type_DRB_ToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_DRB_ToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_DRB_ToAddModList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-ToAddModList.h b/src/codec_utils/RRC/DRB-ToAddModList.h
new file mode 100644 (file)
index 0000000..9fb10b2
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_ToAddModList_H_
+#define        _DRB_ToAddModList_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 DRB_ToAddMod;
+
+/* DRB-ToAddModList */
+typedef struct DRB_ToAddModList {
+       A_SEQUENCE_OF(struct DRB_ToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_ToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_ToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_DRB_ToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_ToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_DRB_ToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_ToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRB-ToReleaseList.c b/src/codec_utils/RRC/DRB-ToReleaseList.c
new file mode 100644 (file)
index 0000000..215e9bf
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRB-ToReleaseList.h"
+
+static asn_oer_constraints_t asn_OER_type_DRB_ToReleaseList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..29)) */};
+asn_per_constraints_t asn_PER_type_DRB_ToReleaseList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  29 }       /* (SIZE(1..29)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_DRB_ToReleaseList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_DRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DRB_ToReleaseList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_DRB_ToReleaseList_specs_1 = {
+       sizeof(struct DRB_ToReleaseList),
+       offsetof(struct DRB_ToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_DRB_ToReleaseList = {
+       "DRB-ToReleaseList",
+       "DRB-ToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_DRB_ToReleaseList_tags_1,
+       sizeof(asn_DEF_DRB_ToReleaseList_tags_1)
+               /sizeof(asn_DEF_DRB_ToReleaseList_tags_1[0]), /* 1 */
+       asn_DEF_DRB_ToReleaseList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_DRB_ToReleaseList_tags_1)
+               /sizeof(asn_DEF_DRB_ToReleaseList_tags_1[0]), /* 1 */
+       { &asn_OER_type_DRB_ToReleaseList_constr_1, &asn_PER_type_DRB_ToReleaseList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_DRB_ToReleaseList_1,
+       1,      /* Single element */
+       &asn_SPC_DRB_ToReleaseList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRB-ToReleaseList.h b/src/codec_utils/RRC/DRB-ToReleaseList.h
new file mode 100644 (file)
index 0000000..893340b
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRB_ToReleaseList_H_
+#define        _DRB_ToReleaseList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DRB-Identity.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DRB-ToReleaseList */
+typedef struct DRB_ToReleaseList {
+       A_SEQUENCE_OF(DRB_Identity_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRB_ToReleaseList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DRB_ToReleaseList;
+extern asn_SET_OF_specifics_t asn_SPC_DRB_ToReleaseList_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRB_ToReleaseList_1[1];
+extern asn_per_constraints_t asn_PER_type_DRB_ToReleaseList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRB_ToReleaseList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRX-Config.c b/src/codec_utils/RRC/DRX-Config.c
new file mode 100644 (file)
index 0000000..b036bc9
--- /dev/null
@@ -0,0 +1,1849 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRX-Config.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_subMilliSeconds_constraint_2(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 <= 31)) {
+               /* 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 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_ms10_constraint_138(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 <= 9)) {
+               /* 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_ms20_constraint_138(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 <= 19)) {
+               /* 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_ms32_constraint_138(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 <= 31)) {
+               /* 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_ms40_constraint_138(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 <= 39)) {
+               /* 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_ms60_constraint_138(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 <= 59)) {
+               /* 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_ms64_constraint_138(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;
+       }
+}
+
+static int
+memb_ms70_constraint_138(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 <= 69)) {
+               /* 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_ms80_constraint_138(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 <= 79)) {
+               /* 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_ms128_constraint_138(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 <= 127)) {
+               /* 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_ms160_constraint_138(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 <= 159)) {
+               /* 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_ms256_constraint_138(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;
+       }
+}
+
+static int
+memb_ms320_constraint_138(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 <= 319)) {
+               /* 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_ms512_constraint_138(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 <= 511)) {
+               /* 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_ms640_constraint_138(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 <= 639)) {
+               /* 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_ms1024_constraint_138(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 <= 1023)) {
+               /* 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_ms1280_constraint_138(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 <= 1279)) {
+               /* 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_ms2048_constraint_138(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 <= 2047)) {
+               /* 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_ms2560_constraint_138(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 <= 2559)) {
+               /* 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_ms5120_constraint_138(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 <= 5119)) {
+               /* 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_ms10240_constraint_138(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 <= 10239)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_drx_ShortCycleTimer_constraint_159(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 <= 16)) {
+               /* 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_drx_HARQ_RTT_TimerDL_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 >= 0 && value <= 56)) {
+               /* 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_drx_HARQ_RTT_TimerUL_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 >= 0 && value <= 56)) {
+               /* 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_drx_SlotOffset_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 >= 0 && value <= 31)) {
+               /* 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_milliSeconds_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_milliSeconds_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_subMilliSeconds_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_subMilliSeconds_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (1..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_onDurationTimer_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_onDurationTimer_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_drx_InactivityTimer_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_InactivityTimer_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_RetransmissionTimerDL_constr_72 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_RetransmissionTimerDL_constr_72 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_RetransmissionTimerUL_constr_105 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_RetransmissionTimerUL_constr_105 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms10_constr_139 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms10_constr_139 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms20_constr_140 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms20_constr_140 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms32_constr_141 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms32_constr_141 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms40_constr_142 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms40_constr_142 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms60_constr_143 CC_NOTUSED = {
+       { 1, 1 }        /* (0..59) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms60_constr_143 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  59 }       /* (0..59) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms64_constr_144 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms64_constr_144 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms70_constr_145 CC_NOTUSED = {
+       { 1, 1 }        /* (0..69) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms70_constr_145 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  69 }       /* (0..69) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms80_constr_146 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms80_constr_146 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms128_constr_147 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms128_constr_147 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms160_constr_148 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms160_constr_148 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms256_constr_149 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms256_constr_149 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms320_constr_150 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms320_constr_150 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms512_constr_151 CC_NOTUSED = {
+       { 2, 1 }        /* (0..511) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms512_constr_151 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  511 }      /* (0..511) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms640_constr_152 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms640_constr_152 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms1024_constr_153 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms1024_constr_153 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms1280_constr_154 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1279) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms1280_constr_154 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1279 }   /* (0..1279) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms2048_constr_155 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2047) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms2048_constr_155 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  2047 }   /* (0..2047) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms2560_constr_156 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms2560_constr_156 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2559 }   /* (0..2559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms5120_constr_157 CC_NOTUSED = {
+       { 2, 1 }        /* (0..5119) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms5120_constr_157 CC_NOTUSED = {
+       { APC_CONSTRAINED,       13,  13,  0,  5119 }   /* (0..5119) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms10240_constr_158 CC_NOTUSED = {
+       { 2, 1 }        /* (0..10239) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms10240_constr_158 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  0,  10239 }  /* (0..10239) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_LongCycleStartOffset_constr_138 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_LongCycleStartOffset_constr_138 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_ShortCycle_constr_160 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_ShortCycle_constr_160 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_drx_ShortCycleTimer_constr_193 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_drx_ShortCycleTimer_constr_193 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_drx_HARQ_RTT_TimerDL_constr_70 CC_NOTUSED = {
+       { 1, 1 }        /* (0..56) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_drx_HARQ_RTT_TimerDL_constr_70 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  56 }       /* (0..56) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_drx_HARQ_RTT_TimerUL_constr_71 CC_NOTUSED = {
+       { 1, 1 }        /* (0..56) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_drx_HARQ_RTT_TimerUL_constr_71 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  56 }       /* (0..56) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_drx_SlotOffset_constr_194 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_drx_SlotOffset_constr_194 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_milliSeconds_value2enum_4[] = {
+       { 0,    3,      "ms1" },
+       { 1,    3,      "ms2" },
+       { 2,    3,      "ms3" },
+       { 3,    3,      "ms4" },
+       { 4,    3,      "ms5" },
+       { 5,    3,      "ms6" },
+       { 6,    3,      "ms8" },
+       { 7,    4,      "ms10" },
+       { 8,    4,      "ms20" },
+       { 9,    4,      "ms30" },
+       { 10,   4,      "ms40" },
+       { 11,   4,      "ms50" },
+       { 12,   4,      "ms60" },
+       { 13,   4,      "ms80" },
+       { 14,   5,      "ms100" },
+       { 15,   5,      "ms200" },
+       { 16,   5,      "ms300" },
+       { 17,   5,      "ms400" },
+       { 18,   5,      "ms500" },
+       { 19,   5,      "ms600" },
+       { 20,   5,      "ms800" },
+       { 21,   6,      "ms1000" },
+       { 22,   6,      "ms1200" },
+       { 23,   6,      "ms1600" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_milliSeconds_enum2value_4[] = {
+       0,      /* ms1(0) */
+       7,      /* ms10(7) */
+       14,     /* ms100(14) */
+       21,     /* ms1000(21) */
+       22,     /* ms1200(22) */
+       23,     /* ms1600(23) */
+       1,      /* ms2(1) */
+       8,      /* ms20(8) */
+       15,     /* ms200(15) */
+       2,      /* ms3(2) */
+       9,      /* ms30(9) */
+       16,     /* ms300(16) */
+       3,      /* ms4(3) */
+       10,     /* ms40(10) */
+       17,     /* ms400(17) */
+       4,      /* ms5(4) */
+       11,     /* ms50(11) */
+       18,     /* ms500(18) */
+       5,      /* ms6(5) */
+       12,     /* ms60(12) */
+       19,     /* ms600(19) */
+       6,      /* ms8(6) */
+       13,     /* ms80(13) */
+       20,     /* ms800(20) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24      /* spare8(24) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_milliSeconds_specs_4 = {
+       asn_MAP_milliSeconds_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_milliSeconds_enum2value_4,      /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_milliSeconds_tags_4[] = {
+       (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_milliSeconds_4 = {
+       "milliSeconds",
+       "milliSeconds",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_milliSeconds_tags_4,
+       sizeof(asn_DEF_milliSeconds_tags_4)
+               /sizeof(asn_DEF_milliSeconds_tags_4[0]) - 1, /* 1 */
+       asn_DEF_milliSeconds_tags_4,    /* Same as above */
+       sizeof(asn_DEF_milliSeconds_tags_4)
+               /sizeof(asn_DEF_milliSeconds_tags_4[0]), /* 2 */
+       { &asn_OER_type_milliSeconds_constr_4, &asn_PER_type_milliSeconds_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_milliSeconds_specs_4   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_drx_onDurationTimer_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_onDurationTimer, choice.subMilliSeconds),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_subMilliSeconds_constr_3, &asn_PER_memb_subMilliSeconds_constr_3,  memb_subMilliSeconds_constraint_2 },
+               0, 0, /* No default value */
+               "subMilliSeconds"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_onDurationTimer, choice.milliSeconds),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_milliSeconds_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "milliSeconds"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_drx_onDurationTimer_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* subMilliSeconds */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* milliSeconds */
+};
+static asn_CHOICE_specifics_t asn_SPC_drx_onDurationTimer_specs_2 = {
+       sizeof(struct DRX_Config__drx_onDurationTimer),
+       offsetof(struct DRX_Config__drx_onDurationTimer, _asn_ctx),
+       offsetof(struct DRX_Config__drx_onDurationTimer, present),
+       sizeof(((struct DRX_Config__drx_onDurationTimer *)0)->present),
+       asn_MAP_drx_onDurationTimer_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_drx_onDurationTimer_2 = {
+       "drx-onDurationTimer",
+       "drx-onDurationTimer",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_drx_onDurationTimer_constr_2, &asn_PER_type_drx_onDurationTimer_constr_2, CHOICE_constraint },
+       asn_MBR_drx_onDurationTimer_2,
+       2,      /* Elements count */
+       &asn_SPC_drx_onDurationTimer_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drx_InactivityTimer_value2enum_37[] = {
+       { 0,    3,      "ms0" },
+       { 1,    3,      "ms1" },
+       { 2,    3,      "ms2" },
+       { 3,    3,      "ms3" },
+       { 4,    3,      "ms4" },
+       { 5,    3,      "ms5" },
+       { 6,    3,      "ms6" },
+       { 7,    3,      "ms8" },
+       { 8,    4,      "ms10" },
+       { 9,    4,      "ms20" },
+       { 10,   4,      "ms30" },
+       { 11,   4,      "ms40" },
+       { 12,   4,      "ms50" },
+       { 13,   4,      "ms60" },
+       { 14,   4,      "ms80" },
+       { 15,   5,      "ms100" },
+       { 16,   5,      "ms200" },
+       { 17,   5,      "ms300" },
+       { 18,   5,      "ms500" },
+       { 19,   5,      "ms750" },
+       { 20,   6,      "ms1280" },
+       { 21,   6,      "ms1920" },
+       { 22,   6,      "ms2560" },
+       { 23,   6,      "spare9" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_drx_InactivityTimer_enum2value_37[] = {
+       0,      /* ms0(0) */
+       1,      /* ms1(1) */
+       8,      /* ms10(8) */
+       15,     /* ms100(15) */
+       20,     /* ms1280(20) */
+       21,     /* ms1920(21) */
+       2,      /* ms2(2) */
+       9,      /* ms20(9) */
+       16,     /* ms200(16) */
+       22,     /* ms2560(22) */
+       3,      /* ms3(3) */
+       10,     /* ms30(10) */
+       17,     /* ms300(17) */
+       4,      /* ms4(4) */
+       11,     /* ms40(11) */
+       5,      /* ms5(5) */
+       12,     /* ms50(12) */
+       18,     /* ms500(18) */
+       6,      /* ms6(6) */
+       13,     /* ms60(13) */
+       19,     /* ms750(19) */
+       7,      /* ms8(7) */
+       14,     /* ms80(14) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24,     /* spare8(24) */
+       23      /* spare9(23) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drx_InactivityTimer_specs_37 = {
+       asn_MAP_drx_InactivityTimer_value2enum_37,      /* "tag" => N; sorted by tag */
+       asn_MAP_drx_InactivityTimer_enum2value_37,      /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drx_InactivityTimer_tags_37[] = {
+       (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_drx_InactivityTimer_37 = {
+       "drx-InactivityTimer",
+       "drx-InactivityTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drx_InactivityTimer_tags_37,
+       sizeof(asn_DEF_drx_InactivityTimer_tags_37)
+               /sizeof(asn_DEF_drx_InactivityTimer_tags_37[0]) - 1, /* 1 */
+       asn_DEF_drx_InactivityTimer_tags_37,    /* Same as above */
+       sizeof(asn_DEF_drx_InactivityTimer_tags_37)
+               /sizeof(asn_DEF_drx_InactivityTimer_tags_37[0]), /* 2 */
+       { &asn_OER_type_drx_InactivityTimer_constr_37, &asn_PER_type_drx_InactivityTimer_constr_37, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drx_InactivityTimer_specs_37   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drx_RetransmissionTimerDL_value2enum_72[] = {
+       { 0,    3,      "sl0" },
+       { 1,    3,      "sl1" },
+       { 2,    3,      "sl2" },
+       { 3,    3,      "sl4" },
+       { 4,    3,      "sl6" },
+       { 5,    3,      "sl8" },
+       { 6,    4,      "sl16" },
+       { 7,    4,      "sl24" },
+       { 8,    4,      "sl33" },
+       { 9,    4,      "sl40" },
+       { 10,   4,      "sl64" },
+       { 11,   4,      "sl80" },
+       { 12,   4,      "sl96" },
+       { 13,   5,      "sl112" },
+       { 14,   5,      "sl128" },
+       { 15,   5,      "sl160" },
+       { 16,   5,      "sl320" },
+       { 17,   7,      "spare15" },
+       { 18,   7,      "spare14" },
+       { 19,   7,      "spare13" },
+       { 20,   7,      "spare12" },
+       { 21,   7,      "spare11" },
+       { 22,   7,      "spare10" },
+       { 23,   6,      "spare9" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_drx_RetransmissionTimerDL_enum2value_72[] = {
+       0,      /* sl0(0) */
+       1,      /* sl1(1) */
+       13,     /* sl112(13) */
+       14,     /* sl128(14) */
+       6,      /* sl16(6) */
+       15,     /* sl160(15) */
+       2,      /* sl2(2) */
+       7,      /* sl24(7) */
+       16,     /* sl320(16) */
+       8,      /* sl33(8) */
+       3,      /* sl4(3) */
+       9,      /* sl40(9) */
+       4,      /* sl6(4) */
+       10,     /* sl64(10) */
+       5,      /* sl8(5) */
+       11,     /* sl80(11) */
+       12,     /* sl96(12) */
+       31,     /* spare1(31) */
+       22,     /* spare10(22) */
+       21,     /* spare11(21) */
+       20,     /* spare12(20) */
+       19,     /* spare13(19) */
+       18,     /* spare14(18) */
+       17,     /* spare15(17) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24,     /* spare8(24) */
+       23      /* spare9(23) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drx_RetransmissionTimerDL_specs_72 = {
+       asn_MAP_drx_RetransmissionTimerDL_value2enum_72,        /* "tag" => N; sorted by tag */
+       asn_MAP_drx_RetransmissionTimerDL_enum2value_72,        /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drx_RetransmissionTimerDL_tags_72[] = {
+       (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_drx_RetransmissionTimerDL_72 = {
+       "drx-RetransmissionTimerDL",
+       "drx-RetransmissionTimerDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drx_RetransmissionTimerDL_tags_72,
+       sizeof(asn_DEF_drx_RetransmissionTimerDL_tags_72)
+               /sizeof(asn_DEF_drx_RetransmissionTimerDL_tags_72[0]) - 1, /* 1 */
+       asn_DEF_drx_RetransmissionTimerDL_tags_72,      /* Same as above */
+       sizeof(asn_DEF_drx_RetransmissionTimerDL_tags_72)
+               /sizeof(asn_DEF_drx_RetransmissionTimerDL_tags_72[0]), /* 2 */
+       { &asn_OER_type_drx_RetransmissionTimerDL_constr_72, &asn_PER_type_drx_RetransmissionTimerDL_constr_72, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drx_RetransmissionTimerDL_specs_72     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drx_RetransmissionTimerUL_value2enum_105[] = {
+       { 0,    3,      "sl0" },
+       { 1,    3,      "sl1" },
+       { 2,    3,      "sl2" },
+       { 3,    3,      "sl4" },
+       { 4,    3,      "sl6" },
+       { 5,    3,      "sl8" },
+       { 6,    4,      "sl16" },
+       { 7,    4,      "sl24" },
+       { 8,    4,      "sl33" },
+       { 9,    4,      "sl40" },
+       { 10,   4,      "sl64" },
+       { 11,   4,      "sl80" },
+       { 12,   4,      "sl96" },
+       { 13,   5,      "sl112" },
+       { 14,   5,      "sl128" },
+       { 15,   5,      "sl160" },
+       { 16,   5,      "sl320" },
+       { 17,   7,      "spare15" },
+       { 18,   7,      "spare14" },
+       { 19,   7,      "spare13" },
+       { 20,   7,      "spare12" },
+       { 21,   7,      "spare11" },
+       { 22,   7,      "spare10" },
+       { 23,   6,      "spare9" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_drx_RetransmissionTimerUL_enum2value_105[] = {
+       0,      /* sl0(0) */
+       1,      /* sl1(1) */
+       13,     /* sl112(13) */
+       14,     /* sl128(14) */
+       6,      /* sl16(6) */
+       15,     /* sl160(15) */
+       2,      /* sl2(2) */
+       7,      /* sl24(7) */
+       16,     /* sl320(16) */
+       8,      /* sl33(8) */
+       3,      /* sl4(3) */
+       9,      /* sl40(9) */
+       4,      /* sl6(4) */
+       10,     /* sl64(10) */
+       5,      /* sl8(5) */
+       11,     /* sl80(11) */
+       12,     /* sl96(12) */
+       31,     /* spare1(31) */
+       22,     /* spare10(22) */
+       21,     /* spare11(21) */
+       20,     /* spare12(20) */
+       19,     /* spare13(19) */
+       18,     /* spare14(18) */
+       17,     /* spare15(17) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24,     /* spare8(24) */
+       23      /* spare9(23) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drx_RetransmissionTimerUL_specs_105 = {
+       asn_MAP_drx_RetransmissionTimerUL_value2enum_105,       /* "tag" => N; sorted by tag */
+       asn_MAP_drx_RetransmissionTimerUL_enum2value_105,       /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drx_RetransmissionTimerUL_tags_105[] = {
+       (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_drx_RetransmissionTimerUL_105 = {
+       "drx-RetransmissionTimerUL",
+       "drx-RetransmissionTimerUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drx_RetransmissionTimerUL_tags_105,
+       sizeof(asn_DEF_drx_RetransmissionTimerUL_tags_105)
+               /sizeof(asn_DEF_drx_RetransmissionTimerUL_tags_105[0]) - 1, /* 1 */
+       asn_DEF_drx_RetransmissionTimerUL_tags_105,     /* Same as above */
+       sizeof(asn_DEF_drx_RetransmissionTimerUL_tags_105)
+               /sizeof(asn_DEF_drx_RetransmissionTimerUL_tags_105[0]), /* 2 */
+       { &asn_OER_type_drx_RetransmissionTimerUL_constr_105, &asn_PER_type_drx_RetransmissionTimerUL_constr_105, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drx_RetransmissionTimerUL_specs_105    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_drx_LongCycleStartOffset_138[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms10),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms10_constr_139, &asn_PER_memb_ms10_constr_139,  memb_ms10_constraint_138 },
+               0, 0, /* No default value */
+               "ms10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms20),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms20_constr_140, &asn_PER_memb_ms20_constr_140,  memb_ms20_constraint_138 },
+               0, 0, /* No default value */
+               "ms20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms32),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms32_constr_141, &asn_PER_memb_ms32_constr_141,  memb_ms32_constraint_138 },
+               0, 0, /* No default value */
+               "ms32"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms40),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms40_constr_142, &asn_PER_memb_ms40_constr_142,  memb_ms40_constraint_138 },
+               0, 0, /* No default value */
+               "ms40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms60),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms60_constr_143, &asn_PER_memb_ms60_constr_143,  memb_ms60_constraint_138 },
+               0, 0, /* No default value */
+               "ms60"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms64),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms64_constr_144, &asn_PER_memb_ms64_constr_144,  memb_ms64_constraint_138 },
+               0, 0, /* No default value */
+               "ms64"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms70),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms70_constr_145, &asn_PER_memb_ms70_constr_145,  memb_ms70_constraint_138 },
+               0, 0, /* No default value */
+               "ms70"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms80),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms80_constr_146, &asn_PER_memb_ms80_constr_146,  memb_ms80_constraint_138 },
+               0, 0, /* No default value */
+               "ms80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms128),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms128_constr_147, &asn_PER_memb_ms128_constr_147,  memb_ms128_constraint_138 },
+               0, 0, /* No default value */
+               "ms128"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms160),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms160_constr_148, &asn_PER_memb_ms160_constr_148,  memb_ms160_constraint_138 },
+               0, 0, /* No default value */
+               "ms160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms256),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms256_constr_149, &asn_PER_memb_ms256_constr_149,  memb_ms256_constraint_138 },
+               0, 0, /* No default value */
+               "ms256"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms320),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms320_constr_150, &asn_PER_memb_ms320_constr_150,  memb_ms320_constraint_138 },
+               0, 0, /* No default value */
+               "ms320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms512),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms512_constr_151, &asn_PER_memb_ms512_constr_151,  memb_ms512_constraint_138 },
+               0, 0, /* No default value */
+               "ms512"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms640),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms640_constr_152, &asn_PER_memb_ms640_constr_152,  memb_ms640_constraint_138 },
+               0, 0, /* No default value */
+               "ms640"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms1024),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms1024_constr_153, &asn_PER_memb_ms1024_constr_153,  memb_ms1024_constraint_138 },
+               0, 0, /* No default value */
+               "ms1024"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms1280),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms1280_constr_154, &asn_PER_memb_ms1280_constr_154,  memb_ms1280_constraint_138 },
+               0, 0, /* No default value */
+               "ms1280"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms2048),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms2048_constr_155, &asn_PER_memb_ms2048_constr_155,  memb_ms2048_constraint_138 },
+               0, 0, /* No default value */
+               "ms2048"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms2560),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms2560_constr_156, &asn_PER_memb_ms2560_constr_156,  memb_ms2560_constraint_138 },
+               0, 0, /* No default value */
+               "ms2560"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms5120),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms5120_constr_157, &asn_PER_memb_ms5120_constr_157,  memb_ms5120_constraint_138 },
+               0, 0, /* No default value */
+               "ms5120"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__drx_LongCycleStartOffset, choice.ms10240),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms10240_constr_158, &asn_PER_memb_ms10240_constr_158,  memb_ms10240_constraint_138 },
+               0, 0, /* No default value */
+               "ms10240"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_drx_LongCycleStartOffset_tag2el_138[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ms10 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ms20 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ms32 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ms40 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ms60 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ms64 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ms70 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ms80 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* ms128 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* ms160 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* ms256 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ms320 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* ms512 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* ms640 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* ms1024 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* ms1280 */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* ms2048 */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* ms2560 */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* ms5120 */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 } /* ms10240 */
+};
+static asn_CHOICE_specifics_t asn_SPC_drx_LongCycleStartOffset_specs_138 = {
+       sizeof(struct DRX_Config__drx_LongCycleStartOffset),
+       offsetof(struct DRX_Config__drx_LongCycleStartOffset, _asn_ctx),
+       offsetof(struct DRX_Config__drx_LongCycleStartOffset, present),
+       sizeof(((struct DRX_Config__drx_LongCycleStartOffset *)0)->present),
+       asn_MAP_drx_LongCycleStartOffset_tag2el_138,
+       20,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_drx_LongCycleStartOffset_138 = {
+       "drx-LongCycleStartOffset",
+       "drx-LongCycleStartOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_drx_LongCycleStartOffset_constr_138, &asn_PER_type_drx_LongCycleStartOffset_constr_138, CHOICE_constraint },
+       asn_MBR_drx_LongCycleStartOffset_138,
+       20,     /* Elements count */
+       &asn_SPC_drx_LongCycleStartOffset_specs_138     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drx_ShortCycle_value2enum_160[] = {
+       { 0,    3,      "ms2" },
+       { 1,    3,      "ms3" },
+       { 2,    3,      "ms4" },
+       { 3,    3,      "ms5" },
+       { 4,    3,      "ms6" },
+       { 5,    3,      "ms7" },
+       { 6,    3,      "ms8" },
+       { 7,    4,      "ms10" },
+       { 8,    4,      "ms14" },
+       { 9,    4,      "ms16" },
+       { 10,   4,      "ms20" },
+       { 11,   4,      "ms30" },
+       { 12,   4,      "ms32" },
+       { 13,   4,      "ms35" },
+       { 14,   4,      "ms40" },
+       { 15,   4,      "ms64" },
+       { 16,   4,      "ms80" },
+       { 17,   5,      "ms128" },
+       { 18,   5,      "ms160" },
+       { 19,   5,      "ms256" },
+       { 20,   5,      "ms320" },
+       { 21,   5,      "ms512" },
+       { 22,   5,      "ms640" },
+       { 23,   6,      "spare9" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_drx_ShortCycle_enum2value_160[] = {
+       7,      /* ms10(7) */
+       17,     /* ms128(17) */
+       8,      /* ms14(8) */
+       9,      /* ms16(9) */
+       18,     /* ms160(18) */
+       0,      /* ms2(0) */
+       10,     /* ms20(10) */
+       19,     /* ms256(19) */
+       1,      /* ms3(1) */
+       11,     /* ms30(11) */
+       12,     /* ms32(12) */
+       20,     /* ms320(20) */
+       13,     /* ms35(13) */
+       2,      /* ms4(2) */
+       14,     /* ms40(14) */
+       3,      /* ms5(3) */
+       21,     /* ms512(21) */
+       4,      /* ms6(4) */
+       15,     /* ms64(15) */
+       22,     /* ms640(22) */
+       5,      /* ms7(5) */
+       6,      /* ms8(6) */
+       16,     /* ms80(16) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24,     /* spare8(24) */
+       23      /* spare9(23) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drx_ShortCycle_specs_160 = {
+       asn_MAP_drx_ShortCycle_value2enum_160,  /* "tag" => N; sorted by tag */
+       asn_MAP_drx_ShortCycle_enum2value_160,  /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drx_ShortCycle_tags_160[] = {
+       (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_drx_ShortCycle_160 = {
+       "drx-ShortCycle",
+       "drx-ShortCycle",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drx_ShortCycle_tags_160,
+       sizeof(asn_DEF_drx_ShortCycle_tags_160)
+               /sizeof(asn_DEF_drx_ShortCycle_tags_160[0]) - 1, /* 1 */
+       asn_DEF_drx_ShortCycle_tags_160,        /* Same as above */
+       sizeof(asn_DEF_drx_ShortCycle_tags_160)
+               /sizeof(asn_DEF_drx_ShortCycle_tags_160[0]), /* 2 */
+       { &asn_OER_type_drx_ShortCycle_constr_160, &asn_PER_type_drx_ShortCycle_constr_160, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drx_ShortCycle_specs_160       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_shortDRX_159[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__shortDRX, drx_ShortCycle),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drx_ShortCycle_160,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-ShortCycle"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config__shortDRX, drx_ShortCycleTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_drx_ShortCycleTimer_constr_193, &asn_PER_memb_drx_ShortCycleTimer_constr_193,  memb_drx_ShortCycleTimer_constraint_159 },
+               0, 0, /* No default value */
+               "drx-ShortCycleTimer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_shortDRX_tags_159[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_shortDRX_tag2el_159[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drx-ShortCycle */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* drx-ShortCycleTimer */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_shortDRX_specs_159 = {
+       sizeof(struct DRX_Config__shortDRX),
+       offsetof(struct DRX_Config__shortDRX, _asn_ctx),
+       asn_MAP_shortDRX_tag2el_159,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_shortDRX_159 = {
+       "shortDRX",
+       "shortDRX",
+       &asn_OP_SEQUENCE,
+       asn_DEF_shortDRX_tags_159,
+       sizeof(asn_DEF_shortDRX_tags_159)
+               /sizeof(asn_DEF_shortDRX_tags_159[0]) - 1, /* 1 */
+       asn_DEF_shortDRX_tags_159,      /* Same as above */
+       sizeof(asn_DEF_shortDRX_tags_159)
+               /sizeof(asn_DEF_shortDRX_tags_159[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_shortDRX_159,
+       2,      /* Elements count */
+       &asn_SPC_shortDRX_specs_159     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DRX_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_onDurationTimer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_drx_onDurationTimer_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-onDurationTimer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_InactivityTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drx_InactivityTimer_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-InactivityTimer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_HARQ_RTT_TimerDL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_drx_HARQ_RTT_TimerDL_constr_70, &asn_PER_memb_drx_HARQ_RTT_TimerDL_constr_70,  memb_drx_HARQ_RTT_TimerDL_constraint_1 },
+               0, 0, /* No default value */
+               "drx-HARQ-RTT-TimerDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_HARQ_RTT_TimerUL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_drx_HARQ_RTT_TimerUL_constr_71, &asn_PER_memb_drx_HARQ_RTT_TimerUL_constr_71,  memb_drx_HARQ_RTT_TimerUL_constraint_1 },
+               0, 0, /* No default value */
+               "drx-HARQ-RTT-TimerUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_RetransmissionTimerDL),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drx_RetransmissionTimerDL_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-RetransmissionTimerDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_RetransmissionTimerUL),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drx_RetransmissionTimerUL_105,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-RetransmissionTimerUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_LongCycleStartOffset),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_drx_LongCycleStartOffset_138,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-LongCycleStartOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct DRX_Config, shortDRX),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_shortDRX_159,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortDRX"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Config, drx_SlotOffset),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_drx_SlotOffset_constr_194, &asn_PER_memb_drx_SlotOffset_constr_194,  memb_drx_SlotOffset_constraint_1 },
+               0, 0, /* No default value */
+               "drx-SlotOffset"
+               },
+};
+static const int asn_MAP_DRX_Config_oms_1[] = { 7 };
+static const ber_tlv_tag_t asn_DEF_DRX_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DRX_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drx-onDurationTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* drx-InactivityTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* drx-HARQ-RTT-TimerDL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* drx-HARQ-RTT-TimerUL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* drx-RetransmissionTimerDL */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* drx-RetransmissionTimerUL */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* drx-LongCycleStartOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* shortDRX */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* drx-SlotOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DRX_Config_specs_1 = {
+       sizeof(struct DRX_Config),
+       offsetof(struct DRX_Config, _asn_ctx),
+       asn_MAP_DRX_Config_tag2el_1,
+       9,      /* Count of tags in the map */
+       asn_MAP_DRX_Config_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DRX_Config = {
+       "DRX-Config",
+       "DRX-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DRX_Config_tags_1,
+       sizeof(asn_DEF_DRX_Config_tags_1)
+               /sizeof(asn_DEF_DRX_Config_tags_1[0]), /* 1 */
+       asn_DEF_DRX_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_DRX_Config_tags_1)
+               /sizeof(asn_DEF_DRX_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DRX_Config_1,
+       9,      /* Elements count */
+       &asn_SPC_DRX_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRX-Config.h b/src/codec_utils/RRC/DRX-Config.h
new file mode 100644 (file)
index 0000000..1fa7cf9
--- /dev/null
@@ -0,0 +1,297 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRX_Config_H_
+#define        _DRX_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DRX_Config__drx_onDurationTimer_PR {
+       DRX_Config__drx_onDurationTimer_PR_NOTHING,     /* No components present */
+       DRX_Config__drx_onDurationTimer_PR_subMilliSeconds,
+       DRX_Config__drx_onDurationTimer_PR_milliSeconds
+} DRX_Config__drx_onDurationTimer_PR;
+typedef enum DRX_Config__drx_onDurationTimer__milliSeconds {
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms1       = 0,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms2       = 1,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms3       = 2,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms4       = 3,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms5       = 4,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms6       = 5,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms8       = 6,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms10      = 7,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms20      = 8,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms30      = 9,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms40      = 10,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms50      = 11,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms60      = 12,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms80      = 13,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms100     = 14,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms200     = 15,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms300     = 16,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms400     = 17,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms500     = 18,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms600     = 19,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms800     = 20,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms1000    = 21,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms1200    = 22,
+       DRX_Config__drx_onDurationTimer__milliSeconds_ms1600    = 23,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare8    = 24,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare7    = 25,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare6    = 26,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare5    = 27,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare4    = 28,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare3    = 29,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare2    = 30,
+       DRX_Config__drx_onDurationTimer__milliSeconds_spare1    = 31
+} e_DRX_Config__drx_onDurationTimer__milliSeconds;
+typedef enum DRX_Config__drx_InactivityTimer {
+       DRX_Config__drx_InactivityTimer_ms0     = 0,
+       DRX_Config__drx_InactivityTimer_ms1     = 1,
+       DRX_Config__drx_InactivityTimer_ms2     = 2,
+       DRX_Config__drx_InactivityTimer_ms3     = 3,
+       DRX_Config__drx_InactivityTimer_ms4     = 4,
+       DRX_Config__drx_InactivityTimer_ms5     = 5,
+       DRX_Config__drx_InactivityTimer_ms6     = 6,
+       DRX_Config__drx_InactivityTimer_ms8     = 7,
+       DRX_Config__drx_InactivityTimer_ms10    = 8,
+       DRX_Config__drx_InactivityTimer_ms20    = 9,
+       DRX_Config__drx_InactivityTimer_ms30    = 10,
+       DRX_Config__drx_InactivityTimer_ms40    = 11,
+       DRX_Config__drx_InactivityTimer_ms50    = 12,
+       DRX_Config__drx_InactivityTimer_ms60    = 13,
+       DRX_Config__drx_InactivityTimer_ms80    = 14,
+       DRX_Config__drx_InactivityTimer_ms100   = 15,
+       DRX_Config__drx_InactivityTimer_ms200   = 16,
+       DRX_Config__drx_InactivityTimer_ms300   = 17,
+       DRX_Config__drx_InactivityTimer_ms500   = 18,
+       DRX_Config__drx_InactivityTimer_ms750   = 19,
+       DRX_Config__drx_InactivityTimer_ms1280  = 20,
+       DRX_Config__drx_InactivityTimer_ms1920  = 21,
+       DRX_Config__drx_InactivityTimer_ms2560  = 22,
+       DRX_Config__drx_InactivityTimer_spare9  = 23,
+       DRX_Config__drx_InactivityTimer_spare8  = 24,
+       DRX_Config__drx_InactivityTimer_spare7  = 25,
+       DRX_Config__drx_InactivityTimer_spare6  = 26,
+       DRX_Config__drx_InactivityTimer_spare5  = 27,
+       DRX_Config__drx_InactivityTimer_spare4  = 28,
+       DRX_Config__drx_InactivityTimer_spare3  = 29,
+       DRX_Config__drx_InactivityTimer_spare2  = 30,
+       DRX_Config__drx_InactivityTimer_spare1  = 31
+} e_DRX_Config__drx_InactivityTimer;
+typedef enum DRX_Config__drx_RetransmissionTimerDL {
+       DRX_Config__drx_RetransmissionTimerDL_sl0       = 0,
+       DRX_Config__drx_RetransmissionTimerDL_sl1       = 1,
+       DRX_Config__drx_RetransmissionTimerDL_sl2       = 2,
+       DRX_Config__drx_RetransmissionTimerDL_sl4       = 3,
+       DRX_Config__drx_RetransmissionTimerDL_sl6       = 4,
+       DRX_Config__drx_RetransmissionTimerDL_sl8       = 5,
+       DRX_Config__drx_RetransmissionTimerDL_sl16      = 6,
+       DRX_Config__drx_RetransmissionTimerDL_sl24      = 7,
+       DRX_Config__drx_RetransmissionTimerDL_sl33      = 8,
+       DRX_Config__drx_RetransmissionTimerDL_sl40      = 9,
+       DRX_Config__drx_RetransmissionTimerDL_sl64      = 10,
+       DRX_Config__drx_RetransmissionTimerDL_sl80      = 11,
+       DRX_Config__drx_RetransmissionTimerDL_sl96      = 12,
+       DRX_Config__drx_RetransmissionTimerDL_sl112     = 13,
+       DRX_Config__drx_RetransmissionTimerDL_sl128     = 14,
+       DRX_Config__drx_RetransmissionTimerDL_sl160     = 15,
+       DRX_Config__drx_RetransmissionTimerDL_sl320     = 16,
+       DRX_Config__drx_RetransmissionTimerDL_spare15   = 17,
+       DRX_Config__drx_RetransmissionTimerDL_spare14   = 18,
+       DRX_Config__drx_RetransmissionTimerDL_spare13   = 19,
+       DRX_Config__drx_RetransmissionTimerDL_spare12   = 20,
+       DRX_Config__drx_RetransmissionTimerDL_spare11   = 21,
+       DRX_Config__drx_RetransmissionTimerDL_spare10   = 22,
+       DRX_Config__drx_RetransmissionTimerDL_spare9    = 23,
+       DRX_Config__drx_RetransmissionTimerDL_spare8    = 24,
+       DRX_Config__drx_RetransmissionTimerDL_spare7    = 25,
+       DRX_Config__drx_RetransmissionTimerDL_spare6    = 26,
+       DRX_Config__drx_RetransmissionTimerDL_spare5    = 27,
+       DRX_Config__drx_RetransmissionTimerDL_spare4    = 28,
+       DRX_Config__drx_RetransmissionTimerDL_spare3    = 29,
+       DRX_Config__drx_RetransmissionTimerDL_spare2    = 30,
+       DRX_Config__drx_RetransmissionTimerDL_spare1    = 31
+} e_DRX_Config__drx_RetransmissionTimerDL;
+typedef enum DRX_Config__drx_RetransmissionTimerUL {
+       DRX_Config__drx_RetransmissionTimerUL_sl0       = 0,
+       DRX_Config__drx_RetransmissionTimerUL_sl1       = 1,
+       DRX_Config__drx_RetransmissionTimerUL_sl2       = 2,
+       DRX_Config__drx_RetransmissionTimerUL_sl4       = 3,
+       DRX_Config__drx_RetransmissionTimerUL_sl6       = 4,
+       DRX_Config__drx_RetransmissionTimerUL_sl8       = 5,
+       DRX_Config__drx_RetransmissionTimerUL_sl16      = 6,
+       DRX_Config__drx_RetransmissionTimerUL_sl24      = 7,
+       DRX_Config__drx_RetransmissionTimerUL_sl33      = 8,
+       DRX_Config__drx_RetransmissionTimerUL_sl40      = 9,
+       DRX_Config__drx_RetransmissionTimerUL_sl64      = 10,
+       DRX_Config__drx_RetransmissionTimerUL_sl80      = 11,
+       DRX_Config__drx_RetransmissionTimerUL_sl96      = 12,
+       DRX_Config__drx_RetransmissionTimerUL_sl112     = 13,
+       DRX_Config__drx_RetransmissionTimerUL_sl128     = 14,
+       DRX_Config__drx_RetransmissionTimerUL_sl160     = 15,
+       DRX_Config__drx_RetransmissionTimerUL_sl320     = 16,
+       DRX_Config__drx_RetransmissionTimerUL_spare15   = 17,
+       DRX_Config__drx_RetransmissionTimerUL_spare14   = 18,
+       DRX_Config__drx_RetransmissionTimerUL_spare13   = 19,
+       DRX_Config__drx_RetransmissionTimerUL_spare12   = 20,
+       DRX_Config__drx_RetransmissionTimerUL_spare11   = 21,
+       DRX_Config__drx_RetransmissionTimerUL_spare10   = 22,
+       DRX_Config__drx_RetransmissionTimerUL_spare9    = 23,
+       DRX_Config__drx_RetransmissionTimerUL_spare8    = 24,
+       DRX_Config__drx_RetransmissionTimerUL_spare7    = 25,
+       DRX_Config__drx_RetransmissionTimerUL_spare6    = 26,
+       DRX_Config__drx_RetransmissionTimerUL_spare5    = 27,
+       DRX_Config__drx_RetransmissionTimerUL_spare4    = 28,
+       DRX_Config__drx_RetransmissionTimerUL_spare3    = 29,
+       DRX_Config__drx_RetransmissionTimerUL_spare2    = 30,
+       DRX_Config__drx_RetransmissionTimerUL_spare1    = 31
+} e_DRX_Config__drx_RetransmissionTimerUL;
+typedef enum DRX_Config__drx_LongCycleStartOffset_PR {
+       DRX_Config__drx_LongCycleStartOffset_PR_NOTHING,        /* No components present */
+       DRX_Config__drx_LongCycleStartOffset_PR_ms10,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms20,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms32,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms40,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms60,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms64,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms70,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms80,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms128,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms160,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms256,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms320,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms512,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms640,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms1024,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms1280,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms2048,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms2560,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms5120,
+       DRX_Config__drx_LongCycleStartOffset_PR_ms10240
+} DRX_Config__drx_LongCycleStartOffset_PR;
+typedef enum DRX_Config__shortDRX__drx_ShortCycle {
+       DRX_Config__shortDRX__drx_ShortCycle_ms2        = 0,
+       DRX_Config__shortDRX__drx_ShortCycle_ms3        = 1,
+       DRX_Config__shortDRX__drx_ShortCycle_ms4        = 2,
+       DRX_Config__shortDRX__drx_ShortCycle_ms5        = 3,
+       DRX_Config__shortDRX__drx_ShortCycle_ms6        = 4,
+       DRX_Config__shortDRX__drx_ShortCycle_ms7        = 5,
+       DRX_Config__shortDRX__drx_ShortCycle_ms8        = 6,
+       DRX_Config__shortDRX__drx_ShortCycle_ms10       = 7,
+       DRX_Config__shortDRX__drx_ShortCycle_ms14       = 8,
+       DRX_Config__shortDRX__drx_ShortCycle_ms16       = 9,
+       DRX_Config__shortDRX__drx_ShortCycle_ms20       = 10,
+       DRX_Config__shortDRX__drx_ShortCycle_ms30       = 11,
+       DRX_Config__shortDRX__drx_ShortCycle_ms32       = 12,
+       DRX_Config__shortDRX__drx_ShortCycle_ms35       = 13,
+       DRX_Config__shortDRX__drx_ShortCycle_ms40       = 14,
+       DRX_Config__shortDRX__drx_ShortCycle_ms64       = 15,
+       DRX_Config__shortDRX__drx_ShortCycle_ms80       = 16,
+       DRX_Config__shortDRX__drx_ShortCycle_ms128      = 17,
+       DRX_Config__shortDRX__drx_ShortCycle_ms160      = 18,
+       DRX_Config__shortDRX__drx_ShortCycle_ms256      = 19,
+       DRX_Config__shortDRX__drx_ShortCycle_ms320      = 20,
+       DRX_Config__shortDRX__drx_ShortCycle_ms512      = 21,
+       DRX_Config__shortDRX__drx_ShortCycle_ms640      = 22,
+       DRX_Config__shortDRX__drx_ShortCycle_spare9     = 23,
+       DRX_Config__shortDRX__drx_ShortCycle_spare8     = 24,
+       DRX_Config__shortDRX__drx_ShortCycle_spare7     = 25,
+       DRX_Config__shortDRX__drx_ShortCycle_spare6     = 26,
+       DRX_Config__shortDRX__drx_ShortCycle_spare5     = 27,
+       DRX_Config__shortDRX__drx_ShortCycle_spare4     = 28,
+       DRX_Config__shortDRX__drx_ShortCycle_spare3     = 29,
+       DRX_Config__shortDRX__drx_ShortCycle_spare2     = 30,
+       DRX_Config__shortDRX__drx_ShortCycle_spare1     = 31
+} e_DRX_Config__shortDRX__drx_ShortCycle;
+
+/* DRX-Config */
+typedef struct DRX_Config {
+       struct DRX_Config__drx_onDurationTimer {
+               DRX_Config__drx_onDurationTimer_PR present;
+               union DRX_Config__drx_onDurationTimer_u {
+                       long     subMilliSeconds;
+                       long     milliSeconds;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } drx_onDurationTimer;
+       long     drx_InactivityTimer;
+       long     drx_HARQ_RTT_TimerDL;
+       long     drx_HARQ_RTT_TimerUL;
+       long     drx_RetransmissionTimerDL;
+       long     drx_RetransmissionTimerUL;
+       struct DRX_Config__drx_LongCycleStartOffset {
+               DRX_Config__drx_LongCycleStartOffset_PR present;
+               union DRX_Config__drx_LongCycleStartOffset_u {
+                       long     ms10;
+                       long     ms20;
+                       long     ms32;
+                       long     ms40;
+                       long     ms60;
+                       long     ms64;
+                       long     ms70;
+                       long     ms80;
+                       long     ms128;
+                       long     ms160;
+                       long     ms256;
+                       long     ms320;
+                       long     ms512;
+                       long     ms640;
+                       long     ms1024;
+                       long     ms1280;
+                       long     ms2048;
+                       long     ms2560;
+                       long     ms5120;
+                       long     ms10240;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } drx_LongCycleStartOffset;
+       struct DRX_Config__shortDRX {
+               long     drx_ShortCycle;
+               long     drx_ShortCycleTimer;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *shortDRX;
+       long     drx_SlotOffset;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRX_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_milliSeconds_4;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drx_InactivityTimer_37;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drx_RetransmissionTimerDL_72;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drx_RetransmissionTimerUL_105; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drx_ShortCycle_160;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DRX_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_DRX_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRX_Config_1[9];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRX_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DRX-Info.c b/src/codec_utils/RRC/DRX-Info.c
new file mode 100644 (file)
index 0000000..f1e1bef
--- /dev/null
@@ -0,0 +1,1154 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DRX-Info.h"
+
+static int
+memb_ms10_constraint_2(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 <= 9)) {
+               /* 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_ms20_constraint_2(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 <= 19)) {
+               /* 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_ms32_constraint_2(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 <= 31)) {
+               /* 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_ms40_constraint_2(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 <= 39)) {
+               /* 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_ms60_constraint_2(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 <= 59)) {
+               /* 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_ms64_constraint_2(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;
+       }
+}
+
+static int
+memb_ms70_constraint_2(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 <= 69)) {
+               /* 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_ms80_constraint_2(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 <= 79)) {
+               /* 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_ms128_constraint_2(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 <= 127)) {
+               /* 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_ms160_constraint_2(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 <= 159)) {
+               /* 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_ms256_constraint_2(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;
+       }
+}
+
+static int
+memb_ms320_constraint_2(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 <= 319)) {
+               /* 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_ms512_constraint_2(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 <= 511)) {
+               /* 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_ms640_constraint_2(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 <= 639)) {
+               /* 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_ms1024_constraint_2(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 <= 1023)) {
+               /* 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_ms1280_constraint_2(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 <= 1279)) {
+               /* 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_ms2048_constraint_2(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 <= 2047)) {
+               /* 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_ms2560_constraint_2(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 <= 2559)) {
+               /* 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_ms5120_constraint_2(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 <= 5119)) {
+               /* 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_ms10240_constraint_2(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 <= 10239)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_drx_ShortCycleTimer_constraint_23(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 <= 16)) {
+               /* 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_ms10_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms10_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms20_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms20_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms32_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms32_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms40_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms40_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms60_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..59) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms60_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  59 }       /* (0..59) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms64_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms64_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms70_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..69) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms70_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  69 }       /* (0..69) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms80_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms80_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms128_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms128_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms160_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms160_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms256_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms256_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms320_constr_14 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms320_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms512_constr_15 CC_NOTUSED = {
+       { 2, 1 }        /* (0..511) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms512_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  511 }      /* (0..511) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms640_constr_16 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms640_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms1024_constr_17 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms1024_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms1280_constr_18 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1279) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms1280_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1279 }   /* (0..1279) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms2048_constr_19 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2047) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms2048_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  2047 }   /* (0..2047) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms2560_constr_20 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms2560_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2559 }   /* (0..2559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms5120_constr_21 CC_NOTUSED = {
+       { 2, 1 }        /* (0..5119) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms5120_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       13,  13,  0,  5119 }   /* (0..5119) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ms10240_constr_22 CC_NOTUSED = {
+       { 2, 1 }        /* (0..10239) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ms10240_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  0,  10239 }  /* (0..10239) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_LongCycleStartOffset_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_LongCycleStartOffset_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drx_ShortCycle_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_ShortCycle_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_drx_ShortCycleTimer_constr_57 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_drx_ShortCycleTimer_constr_57 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_drx_LongCycleStartOffset_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms10),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms10_constr_3, &asn_PER_memb_ms10_constr_3,  memb_ms10_constraint_2 },
+               0, 0, /* No default value */
+               "ms10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms20),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms20_constr_4, &asn_PER_memb_ms20_constr_4,  memb_ms20_constraint_2 },
+               0, 0, /* No default value */
+               "ms20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms32),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms32_constr_5, &asn_PER_memb_ms32_constr_5,  memb_ms32_constraint_2 },
+               0, 0, /* No default value */
+               "ms32"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms40),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms40_constr_6, &asn_PER_memb_ms40_constr_6,  memb_ms40_constraint_2 },
+               0, 0, /* No default value */
+               "ms40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms60),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms60_constr_7, &asn_PER_memb_ms60_constr_7,  memb_ms60_constraint_2 },
+               0, 0, /* No default value */
+               "ms60"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms64),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms64_constr_8, &asn_PER_memb_ms64_constr_8,  memb_ms64_constraint_2 },
+               0, 0, /* No default value */
+               "ms64"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms70),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms70_constr_9, &asn_PER_memb_ms70_constr_9,  memb_ms70_constraint_2 },
+               0, 0, /* No default value */
+               "ms70"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms80),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms80_constr_10, &asn_PER_memb_ms80_constr_10,  memb_ms80_constraint_2 },
+               0, 0, /* No default value */
+               "ms80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms128),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms128_constr_11, &asn_PER_memb_ms128_constr_11,  memb_ms128_constraint_2 },
+               0, 0, /* No default value */
+               "ms128"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms160),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms160_constr_12, &asn_PER_memb_ms160_constr_12,  memb_ms160_constraint_2 },
+               0, 0, /* No default value */
+               "ms160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms256),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms256_constr_13, &asn_PER_memb_ms256_constr_13,  memb_ms256_constraint_2 },
+               0, 0, /* No default value */
+               "ms256"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms320),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms320_constr_14, &asn_PER_memb_ms320_constr_14,  memb_ms320_constraint_2 },
+               0, 0, /* No default value */
+               "ms320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms512),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms512_constr_15, &asn_PER_memb_ms512_constr_15,  memb_ms512_constraint_2 },
+               0, 0, /* No default value */
+               "ms512"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms640),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms640_constr_16, &asn_PER_memb_ms640_constr_16,  memb_ms640_constraint_2 },
+               0, 0, /* No default value */
+               "ms640"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms1024),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms1024_constr_17, &asn_PER_memb_ms1024_constr_17,  memb_ms1024_constraint_2 },
+               0, 0, /* No default value */
+               "ms1024"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms1280),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms1280_constr_18, &asn_PER_memb_ms1280_constr_18,  memb_ms1280_constraint_2 },
+               0, 0, /* No default value */
+               "ms1280"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms2048),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms2048_constr_19, &asn_PER_memb_ms2048_constr_19,  memb_ms2048_constraint_2 },
+               0, 0, /* No default value */
+               "ms2048"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms2560),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms2560_constr_20, &asn_PER_memb_ms2560_constr_20,  memb_ms2560_constraint_2 },
+               0, 0, /* No default value */
+               "ms2560"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms5120),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms5120_constr_21, &asn_PER_memb_ms5120_constr_21,  memb_ms5120_constraint_2 },
+               0, 0, /* No default value */
+               "ms5120"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__drx_LongCycleStartOffset, choice.ms10240),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ms10240_constr_22, &asn_PER_memb_ms10240_constr_22,  memb_ms10240_constraint_2 },
+               0, 0, /* No default value */
+               "ms10240"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_drx_LongCycleStartOffset_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ms10 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ms20 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ms32 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ms40 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ms60 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ms64 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ms70 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ms80 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* ms128 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* ms160 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* ms256 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ms320 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* ms512 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* ms640 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* ms1024 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* ms1280 */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* ms2048 */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* ms2560 */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* ms5120 */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 } /* ms10240 */
+};
+static asn_CHOICE_specifics_t asn_SPC_drx_LongCycleStartOffset_specs_2 = {
+       sizeof(struct DRX_Info__drx_LongCycleStartOffset),
+       offsetof(struct DRX_Info__drx_LongCycleStartOffset, _asn_ctx),
+       offsetof(struct DRX_Info__drx_LongCycleStartOffset, present),
+       sizeof(((struct DRX_Info__drx_LongCycleStartOffset *)0)->present),
+       asn_MAP_drx_LongCycleStartOffset_tag2el_2,
+       20,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_drx_LongCycleStartOffset_2 = {
+       "drx-LongCycleStartOffset",
+       "drx-LongCycleStartOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_drx_LongCycleStartOffset_constr_2, &asn_PER_type_drx_LongCycleStartOffset_constr_2, CHOICE_constraint },
+       asn_MBR_drx_LongCycleStartOffset_2,
+       20,     /* Elements count */
+       &asn_SPC_drx_LongCycleStartOffset_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drx_ShortCycle_value2enum_24[] = {
+       { 0,    3,      "ms2" },
+       { 1,    3,      "ms3" },
+       { 2,    3,      "ms4" },
+       { 3,    3,      "ms5" },
+       { 4,    3,      "ms6" },
+       { 5,    3,      "ms7" },
+       { 6,    3,      "ms8" },
+       { 7,    4,      "ms10" },
+       { 8,    4,      "ms14" },
+       { 9,    4,      "ms16" },
+       { 10,   4,      "ms20" },
+       { 11,   4,      "ms30" },
+       { 12,   4,      "ms32" },
+       { 13,   4,      "ms35" },
+       { 14,   4,      "ms40" },
+       { 15,   4,      "ms64" },
+       { 16,   4,      "ms80" },
+       { 17,   5,      "ms128" },
+       { 18,   5,      "ms160" },
+       { 19,   5,      "ms256" },
+       { 20,   5,      "ms320" },
+       { 21,   5,      "ms512" },
+       { 22,   5,      "ms640" },
+       { 23,   6,      "spare9" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_drx_ShortCycle_enum2value_24[] = {
+       7,      /* ms10(7) */
+       17,     /* ms128(17) */
+       8,      /* ms14(8) */
+       9,      /* ms16(9) */
+       18,     /* ms160(18) */
+       0,      /* ms2(0) */
+       10,     /* ms20(10) */
+       19,     /* ms256(19) */
+       1,      /* ms3(1) */
+       11,     /* ms30(11) */
+       12,     /* ms32(12) */
+       20,     /* ms320(20) */
+       13,     /* ms35(13) */
+       2,      /* ms4(2) */
+       14,     /* ms40(14) */
+       3,      /* ms5(3) */
+       21,     /* ms512(21) */
+       4,      /* ms6(4) */
+       15,     /* ms64(15) */
+       22,     /* ms640(22) */
+       5,      /* ms7(5) */
+       6,      /* ms8(6) */
+       16,     /* ms80(16) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24,     /* spare8(24) */
+       23      /* spare9(23) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drx_ShortCycle_specs_24 = {
+       asn_MAP_drx_ShortCycle_value2enum_24,   /* "tag" => N; sorted by tag */
+       asn_MAP_drx_ShortCycle_enum2value_24,   /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drx_ShortCycle_tags_24[] = {
+       (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_drx_ShortCycle_24 = {
+       "drx-ShortCycle",
+       "drx-ShortCycle",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drx_ShortCycle_tags_24,
+       sizeof(asn_DEF_drx_ShortCycle_tags_24)
+               /sizeof(asn_DEF_drx_ShortCycle_tags_24[0]) - 1, /* 1 */
+       asn_DEF_drx_ShortCycle_tags_24, /* Same as above */
+       sizeof(asn_DEF_drx_ShortCycle_tags_24)
+               /sizeof(asn_DEF_drx_ShortCycle_tags_24[0]), /* 2 */
+       { &asn_OER_type_drx_ShortCycle_constr_24, &asn_PER_type_drx_ShortCycle_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drx_ShortCycle_specs_24        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_shortDRX_23[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__shortDRX, drx_ShortCycle),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drx_ShortCycle_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-ShortCycle"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info__shortDRX, drx_ShortCycleTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_drx_ShortCycleTimer_constr_57, &asn_PER_memb_drx_ShortCycleTimer_constr_57,  memb_drx_ShortCycleTimer_constraint_23 },
+               0, 0, /* No default value */
+               "drx-ShortCycleTimer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_shortDRX_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_shortDRX_tag2el_23[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drx-ShortCycle */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* drx-ShortCycleTimer */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_shortDRX_specs_23 = {
+       sizeof(struct DRX_Info__shortDRX),
+       offsetof(struct DRX_Info__shortDRX, _asn_ctx),
+       asn_MAP_shortDRX_tag2el_23,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_shortDRX_23 = {
+       "shortDRX",
+       "shortDRX",
+       &asn_OP_SEQUENCE,
+       asn_DEF_shortDRX_tags_23,
+       sizeof(asn_DEF_shortDRX_tags_23)
+               /sizeof(asn_DEF_shortDRX_tags_23[0]) - 1, /* 1 */
+       asn_DEF_shortDRX_tags_23,       /* Same as above */
+       sizeof(asn_DEF_shortDRX_tags_23)
+               /sizeof(asn_DEF_shortDRX_tags_23[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_shortDRX_23,
+       2,      /* Elements count */
+       &asn_SPC_shortDRX_specs_23      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DRX_Info_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DRX_Info, drx_LongCycleStartOffset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_drx_LongCycleStartOffset_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-LongCycleStartOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct DRX_Info, shortDRX),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_shortDRX_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortDRX"
+               },
+};
+static const int asn_MAP_DRX_Info_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_DRX_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DRX_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drx-LongCycleStartOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* shortDRX */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DRX_Info_specs_1 = {
+       sizeof(struct DRX_Info),
+       offsetof(struct DRX_Info, _asn_ctx),
+       asn_MAP_DRX_Info_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_DRX_Info_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DRX_Info = {
+       "DRX-Info",
+       "DRX-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DRX_Info_tags_1,
+       sizeof(asn_DEF_DRX_Info_tags_1)
+               /sizeof(asn_DEF_DRX_Info_tags_1[0]), /* 1 */
+       asn_DEF_DRX_Info_tags_1,        /* Same as above */
+       sizeof(asn_DEF_DRX_Info_tags_1)
+               /sizeof(asn_DEF_DRX_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DRX_Info_1,
+       2,      /* Elements count */
+       &asn_SPC_DRX_Info_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DRX-Info.h b/src/codec_utils/RRC/DRX-Info.h
new file mode 100644 (file)
index 0000000..5de06ca
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DRX_Info_H_
+#define        _DRX_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DRX_Info__drx_LongCycleStartOffset_PR {
+       DRX_Info__drx_LongCycleStartOffset_PR_NOTHING,  /* No components present */
+       DRX_Info__drx_LongCycleStartOffset_PR_ms10,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms20,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms32,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms40,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms60,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms64,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms70,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms80,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms128,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms160,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms256,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms320,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms512,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms640,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms1024,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms1280,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms2048,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms2560,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms5120,
+       DRX_Info__drx_LongCycleStartOffset_PR_ms10240
+} DRX_Info__drx_LongCycleStartOffset_PR;
+typedef enum DRX_Info__shortDRX__drx_ShortCycle {
+       DRX_Info__shortDRX__drx_ShortCycle_ms2  = 0,
+       DRX_Info__shortDRX__drx_ShortCycle_ms3  = 1,
+       DRX_Info__shortDRX__drx_ShortCycle_ms4  = 2,
+       DRX_Info__shortDRX__drx_ShortCycle_ms5  = 3,
+       DRX_Info__shortDRX__drx_ShortCycle_ms6  = 4,
+       DRX_Info__shortDRX__drx_ShortCycle_ms7  = 5,
+       DRX_Info__shortDRX__drx_ShortCycle_ms8  = 6,
+       DRX_Info__shortDRX__drx_ShortCycle_ms10 = 7,
+       DRX_Info__shortDRX__drx_ShortCycle_ms14 = 8,
+       DRX_Info__shortDRX__drx_ShortCycle_ms16 = 9,
+       DRX_Info__shortDRX__drx_ShortCycle_ms20 = 10,
+       DRX_Info__shortDRX__drx_ShortCycle_ms30 = 11,
+       DRX_Info__shortDRX__drx_ShortCycle_ms32 = 12,
+       DRX_Info__shortDRX__drx_ShortCycle_ms35 = 13,
+       DRX_Info__shortDRX__drx_ShortCycle_ms40 = 14,
+       DRX_Info__shortDRX__drx_ShortCycle_ms64 = 15,
+       DRX_Info__shortDRX__drx_ShortCycle_ms80 = 16,
+       DRX_Info__shortDRX__drx_ShortCycle_ms128        = 17,
+       DRX_Info__shortDRX__drx_ShortCycle_ms160        = 18,
+       DRX_Info__shortDRX__drx_ShortCycle_ms256        = 19,
+       DRX_Info__shortDRX__drx_ShortCycle_ms320        = 20,
+       DRX_Info__shortDRX__drx_ShortCycle_ms512        = 21,
+       DRX_Info__shortDRX__drx_ShortCycle_ms640        = 22,
+       DRX_Info__shortDRX__drx_ShortCycle_spare9       = 23,
+       DRX_Info__shortDRX__drx_ShortCycle_spare8       = 24,
+       DRX_Info__shortDRX__drx_ShortCycle_spare7       = 25,
+       DRX_Info__shortDRX__drx_ShortCycle_spare6       = 26,
+       DRX_Info__shortDRX__drx_ShortCycle_spare5       = 27,
+       DRX_Info__shortDRX__drx_ShortCycle_spare4       = 28,
+       DRX_Info__shortDRX__drx_ShortCycle_spare3       = 29,
+       DRX_Info__shortDRX__drx_ShortCycle_spare2       = 30,
+       DRX_Info__shortDRX__drx_ShortCycle_spare1       = 31
+} e_DRX_Info__shortDRX__drx_ShortCycle;
+
+/* DRX-Info */
+typedef struct DRX_Info {
+       struct DRX_Info__drx_LongCycleStartOffset {
+               DRX_Info__drx_LongCycleStartOffset_PR present;
+               union DRX_Info__drx_LongCycleStartOffset_u {
+                       long     ms10;
+                       long     ms20;
+                       long     ms32;
+                       long     ms40;
+                       long     ms60;
+                       long     ms64;
+                       long     ms70;
+                       long     ms80;
+                       long     ms128;
+                       long     ms160;
+                       long     ms256;
+                       long     ms320;
+                       long     ms512;
+                       long     ms640;
+                       long     ms1024;
+                       long     ms1280;
+                       long     ms2048;
+                       long     ms2560;
+                       long     ms5120;
+                       long     ms10240;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } drx_LongCycleStartOffset;
+       struct DRX_Info__shortDRX {
+               long     drx_ShortCycle;
+               long     drx_ShortCycleTimer;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *shortDRX;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DRX_Info_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_drx_ShortCycle_24;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DRX_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_DRX_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_DRX_Info_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DRX_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DataInactivityTimer.c b/src/codec_utils/RRC/DataInactivityTimer.c
new file mode 100644 (file)
index 0000000..e2255f9
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DataInactivityTimer.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_DataInactivityTimer_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_DataInactivityTimer_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_DataInactivityTimer_value2enum_1[] = {
+       { 0,    2,      "s1" },
+       { 1,    2,      "s2" },
+       { 2,    2,      "s3" },
+       { 3,    2,      "s5" },
+       { 4,    2,      "s7" },
+       { 5,    3,      "s10" },
+       { 6,    3,      "s15" },
+       { 7,    3,      "s20" },
+       { 8,    3,      "s40" },
+       { 9,    3,      "s50" },
+       { 10,   3,      "s60" },
+       { 11,   3,      "s80" },
+       { 12,   4,      "s100" },
+       { 13,   4,      "s120" },
+       { 14,   4,      "s150" },
+       { 15,   4,      "s180" }
+};
+static const unsigned int asn_MAP_DataInactivityTimer_enum2value_1[] = {
+       0,      /* s1(0) */
+       5,      /* s10(5) */
+       12,     /* s100(12) */
+       13,     /* s120(13) */
+       6,      /* s15(6) */
+       14,     /* s150(14) */
+       15,     /* s180(15) */
+       1,      /* s2(1) */
+       7,      /* s20(7) */
+       2,      /* s3(2) */
+       8,      /* s40(8) */
+       3,      /* s5(3) */
+       9,      /* s50(9) */
+       10,     /* s60(10) */
+       4,      /* s7(4) */
+       11      /* s80(11) */
+};
+const asn_INTEGER_specifics_t asn_SPC_DataInactivityTimer_specs_1 = {
+       asn_MAP_DataInactivityTimer_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_DataInactivityTimer_enum2value_1,       /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_DataInactivityTimer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_DataInactivityTimer = {
+       "DataInactivityTimer",
+       "DataInactivityTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_DataInactivityTimer_tags_1,
+       sizeof(asn_DEF_DataInactivityTimer_tags_1)
+               /sizeof(asn_DEF_DataInactivityTimer_tags_1[0]), /* 1 */
+       asn_DEF_DataInactivityTimer_tags_1,     /* Same as above */
+       sizeof(asn_DEF_DataInactivityTimer_tags_1)
+               /sizeof(asn_DEF_DataInactivityTimer_tags_1[0]), /* 1 */
+       { &asn_OER_type_DataInactivityTimer_constr_1, &asn_PER_type_DataInactivityTimer_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_DataInactivityTimer_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DataInactivityTimer.h b/src/codec_utils/RRC/DataInactivityTimer.h
new file mode 100644 (file)
index 0000000..d1db584
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DataInactivityTimer_H_
+#define        _DataInactivityTimer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DataInactivityTimer {
+       DataInactivityTimer_s1  = 0,
+       DataInactivityTimer_s2  = 1,
+       DataInactivityTimer_s3  = 2,
+       DataInactivityTimer_s5  = 3,
+       DataInactivityTimer_s7  = 4,
+       DataInactivityTimer_s10 = 5,
+       DataInactivityTimer_s15 = 6,
+       DataInactivityTimer_s20 = 7,
+       DataInactivityTimer_s40 = 8,
+       DataInactivityTimer_s50 = 9,
+       DataInactivityTimer_s60 = 10,
+       DataInactivityTimer_s80 = 11,
+       DataInactivityTimer_s100        = 12,
+       DataInactivityTimer_s120        = 13,
+       DataInactivityTimer_s150        = 14,
+       DataInactivityTimer_s180        = 15
+} e_DataInactivityTimer;
+
+/* DataInactivityTimer */
+typedef long    DataInactivityTimer_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_DataInactivityTimer_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_DataInactivityTimer;
+extern const asn_INTEGER_specifics_t asn_SPC_DataInactivityTimer_specs_1;
+asn_struct_free_f DataInactivityTimer_free;
+asn_struct_print_f DataInactivityTimer_print;
+asn_constr_check_f DataInactivityTimer_constraint;
+ber_type_decoder_f DataInactivityTimer_decode_ber;
+der_type_encoder_f DataInactivityTimer_encode_der;
+xer_type_decoder_f DataInactivityTimer_decode_xer;
+xer_type_encoder_f DataInactivityTimer_encode_xer;
+oer_type_decoder_f DataInactivityTimer_decode_oer;
+oer_type_encoder_f DataInactivityTimer_encode_oer;
+per_type_decoder_f DataInactivityTimer_decode_uper;
+per_type_encoder_f DataInactivityTimer_encode_uper;
+per_type_decoder_f DataInactivityTimer_decode_aper;
+per_type_encoder_f DataInactivityTimer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DataInactivityTimer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DedicatedNAS-Message.c b/src/codec_utils/RRC/DedicatedNAS-Message.c
new file mode 100644 (file)
index 0000000..2ffd3d6
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DedicatedNAS-Message.h"
+
+/*
+ * This type is implemented using OCTET_STRING,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_DedicatedNAS_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_DedicatedNAS_Message = {
+       "DedicatedNAS-Message",
+       "DedicatedNAS-Message",
+       &asn_OP_OCTET_STRING,
+       asn_DEF_DedicatedNAS_Message_tags_1,
+       sizeof(asn_DEF_DedicatedNAS_Message_tags_1)
+               /sizeof(asn_DEF_DedicatedNAS_Message_tags_1[0]), /* 1 */
+       asn_DEF_DedicatedNAS_Message_tags_1,    /* Same as above */
+       sizeof(asn_DEF_DedicatedNAS_Message_tags_1)
+               /sizeof(asn_DEF_DedicatedNAS_Message_tags_1[0]), /* 1 */
+       { 0, 0, OCTET_STRING_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_OCTET_STRING_specs     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DedicatedNAS-Message.h b/src/codec_utils/RRC/DedicatedNAS-Message.h
new file mode 100644 (file)
index 0000000..3a1797b
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DedicatedNAS_Message_H_
+#define        _DedicatedNAS_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DedicatedNAS-Message */
+typedef OCTET_STRING_t  DedicatedNAS_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DedicatedNAS_Message;
+asn_struct_free_f DedicatedNAS_Message_free;
+asn_struct_print_f DedicatedNAS_Message_print;
+asn_constr_check_f DedicatedNAS_Message_constraint;
+ber_type_decoder_f DedicatedNAS_Message_decode_ber;
+der_type_encoder_f DedicatedNAS_Message_encode_der;
+xer_type_decoder_f DedicatedNAS_Message_decode_xer;
+xer_type_encoder_f DedicatedNAS_Message_encode_xer;
+oer_type_decoder_f DedicatedNAS_Message_decode_oer;
+oer_type_encoder_f DedicatedNAS_Message_encode_oer;
+per_type_decoder_f DedicatedNAS_Message_decode_uper;
+per_type_encoder_f DedicatedNAS_Message_encode_uper;
+per_type_decoder_f DedicatedNAS_Message_decode_aper;
+per_type_encoder_f DedicatedNAS_Message_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DedicatedNAS_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DelayBudgetReport.c b/src/codec_utils/RRC/DelayBudgetReport.c
new file mode 100644 (file)
index 0000000..c66474e
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DelayBudgetReport.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_type1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  16 }       /* (0..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_DelayBudgetReport_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_DelayBudgetReport_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_type1_value2enum_2[] = {
+       { 0,    11,     "msMinus1280" },
+       { 1,    10,     "msMinus640" },
+       { 2,    10,     "msMinus320" },
+       { 3,    10,     "msMinus160" },
+       { 4,    9,      "msMinus80" },
+       { 5,    9,      "msMinus60" },
+       { 6,    9,      "msMinus40" },
+       { 7,    9,      "msMinus20" },
+       { 8,    3,      "ms0" },
+       { 9,    4,      "ms20" },
+       { 10,   4,      "ms40" },
+       { 11,   4,      "ms60" },
+       { 12,   4,      "ms80" },
+       { 13,   5,      "ms160" },
+       { 14,   5,      "ms320" },
+       { 15,   5,      "ms640" },
+       { 16,   6,      "ms1280" }
+};
+static const unsigned int asn_MAP_type1_enum2value_2[] = {
+       8,      /* ms0(8) */
+       16,     /* ms1280(16) */
+       13,     /* ms160(13) */
+       9,      /* ms20(9) */
+       14,     /* ms320(14) */
+       10,     /* ms40(10) */
+       11,     /* ms60(11) */
+       15,     /* ms640(15) */
+       12,     /* ms80(12) */
+       0,      /* msMinus1280(0) */
+       3,      /* msMinus160(3) */
+       7,      /* msMinus20(7) */
+       2,      /* msMinus320(2) */
+       6,      /* msMinus40(6) */
+       5,      /* msMinus60(5) */
+       1,      /* msMinus640(1) */
+       4       /* msMinus80(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type1_specs_2 = {
+       asn_MAP_type1_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_type1_enum2value_2,     /* N => "tag"; sorted by N */
+       17,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type1_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_type1_2 = {
+       "type1",
+       "type1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type1_tags_2,
+       sizeof(asn_DEF_type1_tags_2)
+               /sizeof(asn_DEF_type1_tags_2[0]) - 1, /* 1 */
+       asn_DEF_type1_tags_2,   /* Same as above */
+       sizeof(asn_DEF_type1_tags_2)
+               /sizeof(asn_DEF_type1_tags_2[0]), /* 2 */
+       { &asn_OER_type_type1_constr_2, &asn_PER_type_type1_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type1_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DelayBudgetReport_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DelayBudgetReport, choice.type1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_DelayBudgetReport_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* type1 */
+};
+asn_CHOICE_specifics_t asn_SPC_DelayBudgetReport_specs_1 = {
+       sizeof(struct DelayBudgetReport),
+       offsetof(struct DelayBudgetReport, _asn_ctx),
+       offsetof(struct DelayBudgetReport, present),
+       sizeof(((struct DelayBudgetReport *)0)->present),
+       asn_MAP_DelayBudgetReport_tag2el_1,
+       1,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_DelayBudgetReport = {
+       "DelayBudgetReport",
+       "DelayBudgetReport",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_DelayBudgetReport_constr_1, &asn_PER_type_DelayBudgetReport_constr_1, CHOICE_constraint },
+       asn_MBR_DelayBudgetReport_1,
+       1,      /* Elements count */
+       &asn_SPC_DelayBudgetReport_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DelayBudgetReport.h b/src/codec_utils/RRC/DelayBudgetReport.h
new file mode 100644 (file)
index 0000000..7b154b5
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DelayBudgetReport_H_
+#define        _DelayBudgetReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DelayBudgetReport_PR {
+       DelayBudgetReport_PR_NOTHING,   /* No components present */
+       DelayBudgetReport_PR_type1
+       /* Extensions may appear below */
+       
+} DelayBudgetReport_PR;
+typedef enum DelayBudgetReport__type1 {
+       DelayBudgetReport__type1_msMinus1280    = 0,
+       DelayBudgetReport__type1_msMinus640     = 1,
+       DelayBudgetReport__type1_msMinus320     = 2,
+       DelayBudgetReport__type1_msMinus160     = 3,
+       DelayBudgetReport__type1_msMinus80      = 4,
+       DelayBudgetReport__type1_msMinus60      = 5,
+       DelayBudgetReport__type1_msMinus40      = 6,
+       DelayBudgetReport__type1_msMinus20      = 7,
+       DelayBudgetReport__type1_ms0    = 8,
+       DelayBudgetReport__type1_ms20   = 9,
+       DelayBudgetReport__type1_ms40   = 10,
+       DelayBudgetReport__type1_ms60   = 11,
+       DelayBudgetReport__type1_ms80   = 12,
+       DelayBudgetReport__type1_ms160  = 13,
+       DelayBudgetReport__type1_ms320  = 14,
+       DelayBudgetReport__type1_ms640  = 15,
+       DelayBudgetReport__type1_ms1280 = 16
+} e_DelayBudgetReport__type1;
+
+/* DelayBudgetReport */
+typedef struct DelayBudgetReport {
+       DelayBudgetReport_PR present;
+       union DelayBudgetReport_u {
+               long     type1;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DelayBudgetReport_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_type1_2;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DelayBudgetReport;
+extern asn_CHOICE_specifics_t asn_SPC_DelayBudgetReport_specs_1;
+extern asn_TYPE_member_t asn_MBR_DelayBudgetReport_1[1];
+extern asn_per_constraints_t asn_PER_type_DelayBudgetReport_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DelayBudgetReport_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DownlinkConfigCommon.c b/src/codec_utils/RRC/DownlinkConfigCommon.c
new file mode 100644 (file)
index 0000000..bdd64ab
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DownlinkConfigCommon.h"
+
+#include "FrequencyInfoDL.h"
+#include "BWP-DownlinkCommon.h"
+asn_TYPE_member_t asn_MBR_DownlinkConfigCommon_1[] = {
+       { ATF_POINTER, 2, offsetof(struct DownlinkConfigCommon, frequencyInfoDL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FrequencyInfoDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyInfoDL"
+               },
+       { ATF_POINTER, 1, offsetof(struct DownlinkConfigCommon, initialDownlinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_DownlinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialDownlinkBWP"
+               },
+};
+static const int asn_MAP_DownlinkConfigCommon_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_DownlinkConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DownlinkConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoDL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* initialDownlinkBWP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommon_specs_1 = {
+       sizeof(struct DownlinkConfigCommon),
+       offsetof(struct DownlinkConfigCommon, _asn_ctx),
+       asn_MAP_DownlinkConfigCommon_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_DownlinkConfigCommon_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_DownlinkConfigCommon = {
+       "DownlinkConfigCommon",
+       "DownlinkConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DownlinkConfigCommon_tags_1,
+       sizeof(asn_DEF_DownlinkConfigCommon_tags_1)
+               /sizeof(asn_DEF_DownlinkConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_DownlinkConfigCommon_tags_1,    /* Same as above */
+       sizeof(asn_DEF_DownlinkConfigCommon_tags_1)
+               /sizeof(asn_DEF_DownlinkConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DownlinkConfigCommon_1,
+       2,      /* Elements count */
+       &asn_SPC_DownlinkConfigCommon_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DownlinkConfigCommon.h b/src/codec_utils/RRC/DownlinkConfigCommon.h
new file mode 100644 (file)
index 0000000..bef4bf2
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DownlinkConfigCommon_H_
+#define        _DownlinkConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FrequencyInfoDL;
+struct BWP_DownlinkCommon;
+
+/* DownlinkConfigCommon */
+typedef struct DownlinkConfigCommon {
+       struct FrequencyInfoDL  *frequencyInfoDL;       /* OPTIONAL */
+       struct BWP_DownlinkCommon       *initialDownlinkBWP;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DownlinkConfigCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_DownlinkConfigCommon_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DownlinkConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DownlinkConfigCommonSIB.c b/src/codec_utils/RRC/DownlinkConfigCommonSIB.c
new file mode 100644 (file)
index 0000000..9aa8561
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DownlinkConfigCommonSIB.h"
+
+asn_TYPE_member_t asn_MBR_DownlinkConfigCommonSIB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, frequencyInfoDL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FrequencyInfoDL_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyInfoDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, initialDownlinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_DownlinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialDownlinkBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, bcch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bcch-Config"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, pcch_Config),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pcch-Config"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DownlinkConfigCommonSIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DownlinkConfigCommonSIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoDL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialDownlinkBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bcch-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pcch-Config */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommonSIB_specs_1 = {
+       sizeof(struct DownlinkConfigCommonSIB),
+       offsetof(struct DownlinkConfigCommonSIB, _asn_ctx),
+       asn_MAP_DownlinkConfigCommonSIB_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_DownlinkConfigCommonSIB = {
+       "DownlinkConfigCommonSIB",
+       "DownlinkConfigCommonSIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DownlinkConfigCommonSIB_tags_1,
+       sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1[0]), /* 1 */
+       asn_DEF_DownlinkConfigCommonSIB_tags_1, /* Same as above */
+       sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DownlinkConfigCommonSIB_1,
+       4,      /* Elements count */
+       &asn_SPC_DownlinkConfigCommonSIB_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DownlinkConfigCommonSIB.h b/src/codec_utils/RRC/DownlinkConfigCommonSIB.h
new file mode 100644 (file)
index 0000000..f8607fe
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DownlinkConfigCommonSIB_H_
+#define        _DownlinkConfigCommonSIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FrequencyInfoDL-SIB.h"
+#include "BWP-DownlinkCommon.h"
+#include "BCCH-Config.h"
+#include "PCCH-Config.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* DownlinkConfigCommonSIB */
+typedef struct DownlinkConfigCommonSIB {
+       FrequencyInfoDL_SIB_t    frequencyInfoDL;
+       BWP_DownlinkCommon_t     initialDownlinkBWP;
+       BCCH_Config_t    bcch_Config;
+       PCCH_Config_t    pcch_Config;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DownlinkConfigCommonSIB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkConfigCommonSIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommonSIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_DownlinkConfigCommonSIB_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DownlinkConfigCommonSIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/DownlinkPreemption.c b/src/codec_utils/RRC/DownlinkPreemption.c
new file mode 100644 (file)
index 0000000..4174215
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "DownlinkPreemption.h"
+
+#include "INT-ConfigurationPerServingCell.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_dci_PayloadSize_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 >= 0 && value <= 126)) {
+               /* 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_int_ConfigurationPerServingCell_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 <= 32)) {
+               /* 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_timeFrequencySet_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_timeFrequencySet_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_int_ConfigurationPerServingCell_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_int_ConfigurationPerServingCell_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dci_PayloadSize_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..126) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_dci_PayloadSize_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  126 }      /* (0..126) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_int_ConfigurationPerServingCell_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_int_ConfigurationPerServingCell_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_timeFrequencySet_value2enum_3[] = {
+       { 0,    4,      "set0" },
+       { 1,    4,      "set1" }
+};
+static const unsigned int asn_MAP_timeFrequencySet_enum2value_3[] = {
+       0,      /* set0(0) */
+       1       /* set1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_timeFrequencySet_specs_3 = {
+       asn_MAP_timeFrequencySet_value2enum_3,  /* "tag" => N; sorted by tag */
+       asn_MAP_timeFrequencySet_enum2value_3,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_timeFrequencySet_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_timeFrequencySet_3 = {
+       "timeFrequencySet",
+       "timeFrequencySet",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_timeFrequencySet_tags_3,
+       sizeof(asn_DEF_timeFrequencySet_tags_3)
+               /sizeof(asn_DEF_timeFrequencySet_tags_3[0]) - 1, /* 1 */
+       asn_DEF_timeFrequencySet_tags_3,        /* Same as above */
+       sizeof(asn_DEF_timeFrequencySet_tags_3)
+               /sizeof(asn_DEF_timeFrequencySet_tags_3[0]), /* 2 */
+       { &asn_OER_type_timeFrequencySet_constr_3, &asn_PER_type_timeFrequencySet_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_timeFrequencySet_specs_3       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_int_ConfigurationPerServingCell_7[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_INT_ConfigurationPerServingCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_int_ConfigurationPerServingCell_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_int_ConfigurationPerServingCell_specs_7 = {
+       sizeof(struct DownlinkPreemption__int_ConfigurationPerServingCell),
+       offsetof(struct DownlinkPreemption__int_ConfigurationPerServingCell, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_int_ConfigurationPerServingCell_7 = {
+       "int-ConfigurationPerServingCell",
+       "int-ConfigurationPerServingCell",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_int_ConfigurationPerServingCell_tags_7,
+       sizeof(asn_DEF_int_ConfigurationPerServingCell_tags_7)
+               /sizeof(asn_DEF_int_ConfigurationPerServingCell_tags_7[0]) - 1, /* 1 */
+       asn_DEF_int_ConfigurationPerServingCell_tags_7, /* Same as above */
+       sizeof(asn_DEF_int_ConfigurationPerServingCell_tags_7)
+               /sizeof(asn_DEF_int_ConfigurationPerServingCell_tags_7[0]), /* 2 */
+       { &asn_OER_type_int_ConfigurationPerServingCell_constr_7, &asn_PER_type_int_ConfigurationPerServingCell_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_int_ConfigurationPerServingCell_7,
+       1,      /* Single element */
+       &asn_SPC_int_ConfigurationPerServingCell_specs_7        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_DownlinkPreemption_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkPreemption, int_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "int-RNTI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkPreemption, timeFrequencySet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_timeFrequencySet_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeFrequencySet"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkPreemption, dci_PayloadSize),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_dci_PayloadSize_constr_6, &asn_PER_memb_dci_PayloadSize_constr_6,  memb_dci_PayloadSize_constraint_1 },
+               0, 0, /* No default value */
+               "dci-PayloadSize"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct DownlinkPreemption, int_ConfigurationPerServingCell),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_int_ConfigurationPerServingCell_7,
+               0,
+               { &asn_OER_memb_int_ConfigurationPerServingCell_constr_7, &asn_PER_memb_int_ConfigurationPerServingCell_constr_7,  memb_int_ConfigurationPerServingCell_constraint_1 },
+               0, 0, /* No default value */
+               "int-ConfigurationPerServingCell"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_DownlinkPreemption_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_DownlinkPreemption_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* int-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeFrequencySet */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dci-PayloadSize */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* int-ConfigurationPerServingCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_DownlinkPreemption_specs_1 = {
+       sizeof(struct DownlinkPreemption),
+       offsetof(struct DownlinkPreemption, _asn_ctx),
+       asn_MAP_DownlinkPreemption_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_DownlinkPreemption = {
+       "DownlinkPreemption",
+       "DownlinkPreemption",
+       &asn_OP_SEQUENCE,
+       asn_DEF_DownlinkPreemption_tags_1,
+       sizeof(asn_DEF_DownlinkPreemption_tags_1)
+               /sizeof(asn_DEF_DownlinkPreemption_tags_1[0]), /* 1 */
+       asn_DEF_DownlinkPreemption_tags_1,      /* Same as above */
+       sizeof(asn_DEF_DownlinkPreemption_tags_1)
+               /sizeof(asn_DEF_DownlinkPreemption_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_DownlinkPreemption_1,
+       4,      /* Elements count */
+       &asn_SPC_DownlinkPreemption_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/DownlinkPreemption.h b/src/codec_utils/RRC/DownlinkPreemption.h
new file mode 100644 (file)
index 0000000..9be728a
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _DownlinkPreemption_H_
+#define        _DownlinkPreemption_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RNTI-Value.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum DownlinkPreemption__timeFrequencySet {
+       DownlinkPreemption__timeFrequencySet_set0       = 0,
+       DownlinkPreemption__timeFrequencySet_set1       = 1
+} e_DownlinkPreemption__timeFrequencySet;
+
+/* Forward declarations */
+struct INT_ConfigurationPerServingCell;
+
+/* DownlinkPreemption */
+typedef struct DownlinkPreemption {
+       RNTI_Value_t     int_RNTI;
+       long     timeFrequencySet;
+       long     dci_PayloadSize;
+       struct DownlinkPreemption__int_ConfigurationPerServingCell {
+               A_SEQUENCE_OF(struct INT_ConfigurationPerServingCell) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } int_ConfigurationPerServingCell;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} DownlinkPreemption_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_timeFrequencySet_3;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkPreemption;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkPreemption_specs_1;
+extern asn_TYPE_member_t asn_MBR_DownlinkPreemption_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _DownlinkPreemption_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.c b/src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.c
new file mode 100644 (file)
index 0000000..9e78969
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-AllowedMeasBandwidth.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_EUTRA_AllowedMeasBandwidth_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_EUTRA_AllowedMeasBandwidth_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_EUTRA_AllowedMeasBandwidth_value2enum_1[] = {
+       { 0,    4,      "mbw6" },
+       { 1,    5,      "mbw15" },
+       { 2,    5,      "mbw25" },
+       { 3,    5,      "mbw50" },
+       { 4,    5,      "mbw75" },
+       { 5,    6,      "mbw100" }
+};
+static const unsigned int asn_MAP_EUTRA_AllowedMeasBandwidth_enum2value_1[] = {
+       5,      /* mbw100(5) */
+       1,      /* mbw15(1) */
+       2,      /* mbw25(2) */
+       3,      /* mbw50(3) */
+       0,      /* mbw6(0) */
+       4       /* mbw75(4) */
+};
+const asn_INTEGER_specifics_t asn_SPC_EUTRA_AllowedMeasBandwidth_specs_1 = {
+       asn_MAP_EUTRA_AllowedMeasBandwidth_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_EUTRA_AllowedMeasBandwidth_enum2value_1,        /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_AllowedMeasBandwidth = {
+       "EUTRA-AllowedMeasBandwidth",
+       "EUTRA-AllowedMeasBandwidth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1,
+       sizeof(asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1)
+               /sizeof(asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1)
+               /sizeof(asn_DEF_EUTRA_AllowedMeasBandwidth_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_AllowedMeasBandwidth_constr_1, &asn_PER_type_EUTRA_AllowedMeasBandwidth_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_EUTRA_AllowedMeasBandwidth_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.h b/src/codec_utils/RRC/EUTRA-AllowedMeasBandwidth.h
new file mode 100644 (file)
index 0000000..baf3c93
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_AllowedMeasBandwidth_H_
+#define        _EUTRA_AllowedMeasBandwidth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_AllowedMeasBandwidth {
+       EUTRA_AllowedMeasBandwidth_mbw6 = 0,
+       EUTRA_AllowedMeasBandwidth_mbw15        = 1,
+       EUTRA_AllowedMeasBandwidth_mbw25        = 2,
+       EUTRA_AllowedMeasBandwidth_mbw50        = 3,
+       EUTRA_AllowedMeasBandwidth_mbw75        = 4,
+       EUTRA_AllowedMeasBandwidth_mbw100       = 5
+} e_EUTRA_AllowedMeasBandwidth;
+
+/* EUTRA-AllowedMeasBandwidth */
+typedef long    EUTRA_AllowedMeasBandwidth_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRA_AllowedMeasBandwidth_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_AllowedMeasBandwidth;
+extern const asn_INTEGER_specifics_t asn_SPC_EUTRA_AllowedMeasBandwidth_specs_1;
+asn_struct_free_f EUTRA_AllowedMeasBandwidth_free;
+asn_struct_print_f EUTRA_AllowedMeasBandwidth_print;
+asn_constr_check_f EUTRA_AllowedMeasBandwidth_constraint;
+ber_type_decoder_f EUTRA_AllowedMeasBandwidth_decode_ber;
+der_type_encoder_f EUTRA_AllowedMeasBandwidth_encode_der;
+xer_type_decoder_f EUTRA_AllowedMeasBandwidth_decode_xer;
+xer_type_encoder_f EUTRA_AllowedMeasBandwidth_encode_xer;
+oer_type_decoder_f EUTRA_AllowedMeasBandwidth_decode_oer;
+oer_type_encoder_f EUTRA_AllowedMeasBandwidth_encode_oer;
+per_type_decoder_f EUTRA_AllowedMeasBandwidth_decode_uper;
+per_type_encoder_f EUTRA_AllowedMeasBandwidth_encode_uper;
+per_type_decoder_f EUTRA_AllowedMeasBandwidth_decode_aper;
+per_type_encoder_f EUTRA_AllowedMeasBandwidth_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_AllowedMeasBandwidth_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-BlackCell.c b/src/codec_utils/RRC/EUTRA-BlackCell.c
new file mode 100644 (file)
index 0000000..6a30275
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-BlackCell.h"
+
+asn_TYPE_member_t asn_MBR_EUTRA_BlackCell_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_BlackCell, cellIndexEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_CellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIndexEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_BlackCell, physCellIdRange),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellIdRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellIdRange"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_BlackCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_BlackCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIndexEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* physCellIdRange */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_BlackCell_specs_1 = {
+       sizeof(struct EUTRA_BlackCell),
+       offsetof(struct EUTRA_BlackCell, _asn_ctx),
+       asn_MAP_EUTRA_BlackCell_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_BlackCell = {
+       "EUTRA-BlackCell",
+       "EUTRA-BlackCell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_BlackCell_tags_1,
+       sizeof(asn_DEF_EUTRA_BlackCell_tags_1)
+               /sizeof(asn_DEF_EUTRA_BlackCell_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_BlackCell_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_BlackCell_tags_1)
+               /sizeof(asn_DEF_EUTRA_BlackCell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_BlackCell_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_BlackCell_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-BlackCell.h b/src/codec_utils/RRC/EUTRA-BlackCell.h
new file mode 100644 (file)
index 0000000..a1db145
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_BlackCell_H_
+#define        _EUTRA_BlackCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-CellIndex.h"
+#include "EUTRA-PhysCellIdRange.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-BlackCell */
+typedef struct EUTRA_BlackCell {
+       EUTRA_CellIndex_t        cellIndexEUTRA;
+       EUTRA_PhysCellIdRange_t  physCellIdRange;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_BlackCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_BlackCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_BlackCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_BlackCell_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_BlackCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-Cell.c b/src/codec_utils/RRC/EUTRA-Cell.c
new file mode 100644 (file)
index 0000000..19c8882
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-Cell.h"
+
+asn_TYPE_member_t asn_MBR_EUTRA_Cell_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_Cell, cellIndexEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_CellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIndexEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_Cell, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_Cell, cellIndividualOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIndividualOffset"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_Cell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_Cell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIndexEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellIndividualOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_Cell_specs_1 = {
+       sizeof(struct EUTRA_Cell),
+       offsetof(struct EUTRA_Cell, _asn_ctx),
+       asn_MAP_EUTRA_Cell_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_Cell = {
+       "EUTRA-Cell",
+       "EUTRA-Cell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_Cell_tags_1,
+       sizeof(asn_DEF_EUTRA_Cell_tags_1)
+               /sizeof(asn_DEF_EUTRA_Cell_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_Cell_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EUTRA_Cell_tags_1)
+               /sizeof(asn_DEF_EUTRA_Cell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_Cell_1,
+       3,      /* Elements count */
+       &asn_SPC_EUTRA_Cell_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-Cell.h b/src/codec_utils/RRC/EUTRA-Cell.h
new file mode 100644 (file)
index 0000000..1156a3b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_Cell_H_
+#define        _EUTRA_Cell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-CellIndex.h"
+#include "EUTRA-PhysCellId.h"
+#include "EUTRA-Q-OffsetRange.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-Cell */
+typedef struct EUTRA_Cell {
+       EUTRA_CellIndex_t        cellIndexEUTRA;
+       EUTRA_PhysCellId_t       physCellId;
+       EUTRA_Q_OffsetRange_t    cellIndividualOffset;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_Cell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_Cell;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_Cell_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_Cell_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_Cell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-CellIndex.c b/src/codec_utils/RRC/EUTRA-CellIndex.c
new file mode 100644 (file)
index 0000000..0c83ab9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-CellIndex.h"
+
+int
+EUTRA_CellIndex_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 <= 32)) {
+               /* 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_EUTRA_CellIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+asn_per_constraints_t asn_PER_type_EUTRA_CellIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_CellIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_CellIndex = {
+       "EUTRA-CellIndex",
+       "EUTRA-CellIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_EUTRA_CellIndex_tags_1,
+       sizeof(asn_DEF_EUTRA_CellIndex_tags_1)
+               /sizeof(asn_DEF_EUTRA_CellIndex_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_CellIndex_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_CellIndex_tags_1)
+               /sizeof(asn_DEF_EUTRA_CellIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_CellIndex_constr_1, &asn_PER_type_EUTRA_CellIndex_constr_1, EUTRA_CellIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-CellIndex.h b/src/codec_utils/RRC/EUTRA-CellIndex.h
new file mode 100644 (file)
index 0000000..2adae98
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_CellIndex_H_
+#define        _EUTRA_CellIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-CellIndex */
+typedef long    EUTRA_CellIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRA_CellIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_CellIndex;
+asn_struct_free_f EUTRA_CellIndex_free;
+asn_struct_print_f EUTRA_CellIndex_print;
+asn_constr_check_f EUTRA_CellIndex_constraint;
+ber_type_decoder_f EUTRA_CellIndex_decode_ber;
+der_type_encoder_f EUTRA_CellIndex_encode_der;
+xer_type_decoder_f EUTRA_CellIndex_decode_xer;
+xer_type_encoder_f EUTRA_CellIndex_encode_xer;
+oer_type_decoder_f EUTRA_CellIndex_decode_oer;
+oer_type_encoder_f EUTRA_CellIndex_encode_oer;
+per_type_decoder_f EUTRA_CellIndex_decode_uper;
+per_type_encoder_f EUTRA_CellIndex_encode_uper;
+per_type_decoder_f EUTRA_CellIndex_decode_aper;
+per_type_encoder_f EUTRA_CellIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_CellIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-CellIndexList.c b/src/codec_utils/RRC/EUTRA-CellIndexList.c
new file mode 100644 (file)
index 0000000..5217c59
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-CellIndexList.h"
+
+static asn_oer_constraints_t asn_OER_type_EUTRA_CellIndexList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_CellIndexList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_CellIndexList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_EUTRA_CellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_CellIndexList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_CellIndexList_specs_1 = {
+       sizeof(struct EUTRA_CellIndexList),
+       offsetof(struct EUTRA_CellIndexList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_CellIndexList = {
+       "EUTRA-CellIndexList",
+       "EUTRA-CellIndexList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_CellIndexList_tags_1,
+       sizeof(asn_DEF_EUTRA_CellIndexList_tags_1)
+               /sizeof(asn_DEF_EUTRA_CellIndexList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_CellIndexList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_EUTRA_CellIndexList_tags_1)
+               /sizeof(asn_DEF_EUTRA_CellIndexList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_CellIndexList_constr_1, &asn_PER_type_EUTRA_CellIndexList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_CellIndexList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_CellIndexList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-CellIndexList.h b/src/codec_utils/RRC/EUTRA-CellIndexList.h
new file mode 100644 (file)
index 0000000..13722d2
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_CellIndexList_H_
+#define        _EUTRA_CellIndexList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-CellIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-CellIndexList */
+typedef struct EUTRA_CellIndexList {
+       A_SEQUENCE_OF(EUTRA_CellIndex_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_CellIndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_CellIndexList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_CellIndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_CellIndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_CellIndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_CellIndexList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-FreqBlackCellList.c b/src/codec_utils/RRC/EUTRA-FreqBlackCellList.c
new file mode 100644 (file)
index 0000000..47d00ab
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-FreqBlackCellList.h"
+
+#include "EUTRA-PhysCellIdRange.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_FreqBlackCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_FreqBlackCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_FreqBlackCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_PhysCellIdRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_FreqBlackCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_FreqBlackCellList_specs_1 = {
+       sizeof(struct EUTRA_FreqBlackCellList),
+       offsetof(struct EUTRA_FreqBlackCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqBlackCellList = {
+       "EUTRA-FreqBlackCellList",
+       "EUTRA-FreqBlackCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_FreqBlackCellList_tags_1,
+       sizeof(asn_DEF_EUTRA_FreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqBlackCellList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_FreqBlackCellList_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_FreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqBlackCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_FreqBlackCellList_constr_1, &asn_PER_type_EUTRA_FreqBlackCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_FreqBlackCellList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_FreqBlackCellList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-FreqBlackCellList.h b/src/codec_utils/RRC/EUTRA-FreqBlackCellList.h
new file mode 100644 (file)
index 0000000..074d3ea
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_FreqBlackCellList_H_
+#define        _EUTRA_FreqBlackCellList_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 EUTRA_PhysCellIdRange;
+
+/* EUTRA-FreqBlackCellList */
+typedef struct EUTRA_FreqBlackCellList {
+       A_SEQUENCE_OF(struct EUTRA_PhysCellIdRange) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_FreqBlackCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqBlackCellList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_FreqBlackCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_FreqBlackCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_FreqBlackCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_FreqBlackCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.c b/src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.c
new file mode 100644 (file)
index 0000000..1055b78
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-FreqNeighCellInfo.h"
+
+static int
+memb_q_RxLevMinOffsetCell_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 <= 8)) {
+               /* 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_q_QualMinOffsetCell_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 <= 8)) {
+               /* 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_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_QualMinOffsetCell_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_QualMinOffsetCell_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_FreqNeighCellInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_FreqNeighCellInfo, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_FreqNeighCellInfo, q_OffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-OffsetCell"
+               },
+       { ATF_POINTER, 2, offsetof(struct EUTRA_FreqNeighCellInfo, q_RxLevMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffsetCell_constr_4, &asn_PER_memb_q_RxLevMinOffsetCell_constr_4,  memb_q_RxLevMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffsetCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_FreqNeighCellInfo, q_QualMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_QualMinOffsetCell_constr_5, &asn_PER_memb_q_QualMinOffsetCell_constr_5,  memb_q_QualMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-QualMinOffsetCell"
+               },
+};
+static const int asn_MAP_EUTRA_FreqNeighCellInfo_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_FreqNeighCellInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_FreqNeighCellInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-OffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-RxLevMinOffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* q-QualMinOffsetCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_FreqNeighCellInfo_specs_1 = {
+       sizeof(struct EUTRA_FreqNeighCellInfo),
+       offsetof(struct EUTRA_FreqNeighCellInfo, _asn_ctx),
+       asn_MAP_EUTRA_FreqNeighCellInfo_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_EUTRA_FreqNeighCellInfo_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqNeighCellInfo = {
+       "EUTRA-FreqNeighCellInfo",
+       "EUTRA-FreqNeighCellInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_FreqNeighCellInfo_tags_1,
+       sizeof(asn_DEF_EUTRA_FreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqNeighCellInfo_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_FreqNeighCellInfo_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_FreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqNeighCellInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_FreqNeighCellInfo_1,
+       4,      /* Elements count */
+       &asn_SPC_EUTRA_FreqNeighCellInfo_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.h b/src/codec_utils/RRC/EUTRA-FreqNeighCellInfo.h
new file mode 100644 (file)
index 0000000..29e3515
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_FreqNeighCellInfo_H_
+#define        _EUTRA_FreqNeighCellInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-PhysCellId.h"
+#include "EUTRA-Q-OffsetRange.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-FreqNeighCellInfo */
+typedef struct EUTRA_FreqNeighCellInfo {
+       EUTRA_PhysCellId_t       physCellId;
+       EUTRA_Q_OffsetRange_t    q_OffsetCell;
+       long    *q_RxLevMinOffsetCell;  /* OPTIONAL */
+       long    *q_QualMinOffsetCell;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_FreqNeighCellInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqNeighCellInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_FreqNeighCellInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_FreqNeighCellInfo_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_FreqNeighCellInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-FreqNeighCellList.c b/src/codec_utils/RRC/EUTRA-FreqNeighCellList.c
new file mode 100644 (file)
index 0000000..a9b66ad
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-FreqNeighCellList.h"
+
+#include "EUTRA-FreqNeighCellInfo.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_FreqNeighCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_FreqNeighCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_FreqNeighCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_FreqNeighCellInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_FreqNeighCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_FreqNeighCellList_specs_1 = {
+       sizeof(struct EUTRA_FreqNeighCellList),
+       offsetof(struct EUTRA_FreqNeighCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqNeighCellList = {
+       "EUTRA-FreqNeighCellList",
+       "EUTRA-FreqNeighCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_FreqNeighCellList_tags_1,
+       sizeof(asn_DEF_EUTRA_FreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqNeighCellList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_FreqNeighCellList_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_FreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_EUTRA_FreqNeighCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_FreqNeighCellList_constr_1, &asn_PER_type_EUTRA_FreqNeighCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_FreqNeighCellList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_FreqNeighCellList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-FreqNeighCellList.h b/src/codec_utils/RRC/EUTRA-FreqNeighCellList.h
new file mode 100644 (file)
index 0000000..d685b4a
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_FreqNeighCellList_H_
+#define        _EUTRA_FreqNeighCellList_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 EUTRA_FreqNeighCellInfo;
+
+/* EUTRA-FreqNeighCellList */
+typedef struct EUTRA_FreqNeighCellList {
+       A_SEQUENCE_OF(struct EUTRA_FreqNeighCellInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_FreqNeighCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_FreqNeighCellList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_FreqNeighCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_FreqNeighCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_FreqNeighCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_FreqNeighCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.c b/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.c
new file mode 100644 (file)
index 0000000..df8b079
--- /dev/null
@@ -0,0 +1,442 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-MBSFN-SubframeConfig.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_oneFrame_constraint_10(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;
+       }
+}
+
+static int
+memb_fourFrames_constraint_10(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 == 24)) {
+               /* 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_oneFrame_constraint_13(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 == 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 int
+memb_fourFrames_constraint_13(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;
+       }
+}
+
+static int
+memb_radioframeAllocationOffset_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 >= 0 && value <= 7)) {
+               /* 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_radioframeAllocationPeriod_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_radioframeAllocationPeriod_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_oneFrame_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_oneFrame_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_fourFrames_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+static asn_per_constraints_t asn_PER_memb_fourFrames_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subframeAllocation1_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subframeAllocation1_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_oneFrame_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_oneFrame_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_fourFrames_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_fourFrames_constr_15 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_subframeAllocation2_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subframeAllocation2_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_radioframeAllocationOffset_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_radioframeAllocationOffset_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_radioframeAllocationPeriod_value2enum_2[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" },
+       { 4,    3,      "n16" },
+       { 5,    3,      "n32" }
+};
+static const unsigned int asn_MAP_radioframeAllocationPeriod_enum2value_2[] = {
+       0,      /* n1(0) */
+       4,      /* n16(4) */
+       1,      /* n2(1) */
+       5,      /* n32(5) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_radioframeAllocationPeriod_specs_2 = {
+       asn_MAP_radioframeAllocationPeriod_value2enum_2,        /* "tag" => N; sorted by tag */
+       asn_MAP_radioframeAllocationPeriod_enum2value_2,        /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_radioframeAllocationPeriod_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_radioframeAllocationPeriod_2 = {
+       "radioframeAllocationPeriod",
+       "radioframeAllocationPeriod",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_radioframeAllocationPeriod_tags_2,
+       sizeof(asn_DEF_radioframeAllocationPeriod_tags_2)
+               /sizeof(asn_DEF_radioframeAllocationPeriod_tags_2[0]) - 1, /* 1 */
+       asn_DEF_radioframeAllocationPeriod_tags_2,      /* Same as above */
+       sizeof(asn_DEF_radioframeAllocationPeriod_tags_2)
+               /sizeof(asn_DEF_radioframeAllocationPeriod_tags_2[0]), /* 2 */
+       { &asn_OER_type_radioframeAllocationPeriod_constr_2, &asn_PER_type_radioframeAllocationPeriod_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_radioframeAllocationPeriod_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_subframeAllocation1_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1, choice.oneFrame),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_oneFrame_constr_11, &asn_PER_memb_oneFrame_constr_11,  memb_oneFrame_constraint_10 },
+               0, 0, /* No default value */
+               "oneFrame"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1, choice.fourFrames),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_fourFrames_constr_12, &asn_PER_memb_fourFrames_constr_12,  memb_fourFrames_constraint_10 },
+               0, 0, /* No default value */
+               "fourFrames"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_subframeAllocation1_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneFrame */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fourFrames */
+};
+static asn_CHOICE_specifics_t asn_SPC_subframeAllocation1_specs_10 = {
+       sizeof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1),
+       offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1, _asn_ctx),
+       offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1, present),
+       sizeof(((struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1 *)0)->present),
+       asn_MAP_subframeAllocation1_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_subframeAllocation1_10 = {
+       "subframeAllocation1",
+       "subframeAllocation1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_subframeAllocation1_constr_10, &asn_PER_type_subframeAllocation1_constr_10, CHOICE_constraint },
+       asn_MBR_subframeAllocation1_10,
+       2,      /* Elements count */
+       &asn_SPC_subframeAllocation1_specs_10   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_subframeAllocation2_13[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2, choice.oneFrame),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_oneFrame_constr_14, &asn_PER_memb_oneFrame_constr_14,  memb_oneFrame_constraint_13 },
+               0, 0, /* No default value */
+               "oneFrame"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2, choice.fourFrames),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_fourFrames_constr_15, &asn_PER_memb_fourFrames_constr_15,  memb_fourFrames_constraint_13 },
+               0, 0, /* No default value */
+               "fourFrames"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_subframeAllocation2_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneFrame */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fourFrames */
+};
+static asn_CHOICE_specifics_t asn_SPC_subframeAllocation2_specs_13 = {
+       sizeof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2),
+       offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2, _asn_ctx),
+       offsetof(struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2, present),
+       sizeof(((struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2 *)0)->present),
+       asn_MAP_subframeAllocation2_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_subframeAllocation2_13 = {
+       "subframeAllocation2",
+       "subframeAllocation2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_subframeAllocation2_constr_13, &asn_PER_type_subframeAllocation2_constr_13, CHOICE_constraint },
+       asn_MBR_subframeAllocation2_13,
+       2,      /* Elements count */
+       &asn_SPC_subframeAllocation2_specs_13   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EUTRA_MBSFN_SubframeConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig, radioframeAllocationPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_radioframeAllocationPeriod_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioframeAllocationPeriod"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig, radioframeAllocationOffset),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_radioframeAllocationOffset_constr_9, &asn_PER_memb_radioframeAllocationOffset_constr_9,  memb_radioframeAllocationOffset_constraint_1 },
+               0, 0, /* No default value */
+               "radioframeAllocationOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MBSFN_SubframeConfig, subframeAllocation1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_subframeAllocation1_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subframeAllocation1"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_MBSFN_SubframeConfig, subframeAllocation2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_subframeAllocation2_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subframeAllocation2"
+               },
+};
+static const int asn_MAP_EUTRA_MBSFN_SubframeConfig_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_MBSFN_SubframeConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioframeAllocationPeriod */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* radioframeAllocationOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subframeAllocation1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* subframeAllocation2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_MBSFN_SubframeConfig_specs_1 = {
+       sizeof(struct EUTRA_MBSFN_SubframeConfig),
+       offsetof(struct EUTRA_MBSFN_SubframeConfig, _asn_ctx),
+       asn_MAP_EUTRA_MBSFN_SubframeConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_EUTRA_MBSFN_SubframeConfig_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_MBSFN_SubframeConfig = {
+       "EUTRA-MBSFN-SubframeConfig",
+       "EUTRA-MBSFN-SubframeConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1,
+       sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1)
+               /sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1)
+               /sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_MBSFN_SubframeConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_EUTRA_MBSFN_SubframeConfig_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.h b/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfig.h
new file mode 100644 (file)
index 0000000..6aa120e
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_MBSFN_SubframeConfig_H_
+#define        _EUTRA_MBSFN_SubframeConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod {
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n1       = 0,
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n2       = 1,
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n4       = 2,
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n8       = 3,
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n16      = 4,
+       EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod_n32      = 5
+} e_EUTRA_MBSFN_SubframeConfig__radioframeAllocationPeriod;
+typedef enum EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR {
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR_NOTHING,     /* No components present */
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR_oneFrame,
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR_fourFrames
+} EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR;
+typedef enum EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR {
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR_NOTHING,     /* No components present */
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR_oneFrame,
+       EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR_fourFrames
+} EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR;
+
+/* EUTRA-MBSFN-SubframeConfig */
+typedef struct EUTRA_MBSFN_SubframeConfig {
+       long     radioframeAllocationPeriod;
+       long     radioframeAllocationOffset;
+       struct EUTRA_MBSFN_SubframeConfig__subframeAllocation1 {
+               EUTRA_MBSFN_SubframeConfig__subframeAllocation1_PR present;
+               union EUTRA_MBSFN_SubframeConfig__subframeAllocation1_u {
+                       BIT_STRING_t     oneFrame;
+                       BIT_STRING_t     fourFrames;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } subframeAllocation1;
+       struct EUTRA_MBSFN_SubframeConfig__subframeAllocation2 {
+               EUTRA_MBSFN_SubframeConfig__subframeAllocation2_PR present;
+               union EUTRA_MBSFN_SubframeConfig__subframeAllocation2_u {
+                       BIT_STRING_t     oneFrame;
+                       BIT_STRING_t     fourFrames;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *subframeAllocation2;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_MBSFN_SubframeConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_radioframeAllocationPeriod_2;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_MBSFN_SubframeConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_MBSFN_SubframeConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_MBSFN_SubframeConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_MBSFN_SubframeConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.c b/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.c
new file mode 100644 (file)
index 0000000..a67c0d3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-MBSFN-SubframeConfigList.h"
+
+#include "EUTRA-MBSFN-SubframeConfig.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_MBSFN_SubframeConfigList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_MBSFN_SubframeConfigList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_MBSFN_SubframeConfigList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_MBSFN_SubframeConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_MBSFN_SubframeConfigList_specs_1 = {
+       sizeof(struct EUTRA_MBSFN_SubframeConfigList),
+       offsetof(struct EUTRA_MBSFN_SubframeConfigList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_MBSFN_SubframeConfigList = {
+       "EUTRA-MBSFN-SubframeConfigList",
+       "EUTRA-MBSFN-SubframeConfigList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1,
+       sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1)
+               /sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1)
+               /sizeof(asn_DEF_EUTRA_MBSFN_SubframeConfigList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_MBSFN_SubframeConfigList_constr_1, &asn_PER_type_EUTRA_MBSFN_SubframeConfigList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_MBSFN_SubframeConfigList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_MBSFN_SubframeConfigList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.h b/src/codec_utils/RRC/EUTRA-MBSFN-SubframeConfigList.h
new file mode 100644 (file)
index 0000000..8961d92
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_MBSFN_SubframeConfigList_H_
+#define        _EUTRA_MBSFN_SubframeConfigList_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 EUTRA_MBSFN_SubframeConfig;
+
+/* EUTRA-MBSFN-SubframeConfigList */
+typedef struct EUTRA_MBSFN_SubframeConfigList {
+       A_SEQUENCE_OF(struct EUTRA_MBSFN_SubframeConfig) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_MBSFN_SubframeConfigList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_MBSFN_SubframeConfigList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_MBSFN_SubframeConfigList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_MBSFN_SubframeConfigList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_MBSFN_SubframeConfigList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_MBSFN_SubframeConfigList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-MultiBandInfo.c b/src/codec_utils/RRC/EUTRA-MultiBandInfo.c
new file mode 100644 (file)
index 0000000..9c1a2fa
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-MultiBandInfo.h"
+
+#include "EUTRA-NS-PmaxList.h"
+asn_TYPE_member_t asn_MBR_EUTRA_MultiBandInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_MultiBandInfo, eutra_FreqBandIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-FreqBandIndicator"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_MultiBandInfo, eutra_NS_PmaxList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_NS_PmaxList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-NS-PmaxList"
+               },
+};
+static const int asn_MAP_EUTRA_MultiBandInfo_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_MultiBandInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_MultiBandInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra-FreqBandIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eutra-NS-PmaxList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_MultiBandInfo_specs_1 = {
+       sizeof(struct EUTRA_MultiBandInfo),
+       offsetof(struct EUTRA_MultiBandInfo, _asn_ctx),
+       asn_MAP_EUTRA_MultiBandInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_EUTRA_MultiBandInfo_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_MultiBandInfo = {
+       "EUTRA-MultiBandInfo",
+       "EUTRA-MultiBandInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_MultiBandInfo_tags_1,
+       sizeof(asn_DEF_EUTRA_MultiBandInfo_tags_1)
+               /sizeof(asn_DEF_EUTRA_MultiBandInfo_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_MultiBandInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_EUTRA_MultiBandInfo_tags_1)
+               /sizeof(asn_DEF_EUTRA_MultiBandInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_MultiBandInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_MultiBandInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-MultiBandInfo.h b/src/codec_utils/RRC/EUTRA-MultiBandInfo.h
new file mode 100644 (file)
index 0000000..1bcd34e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_MultiBandInfo_H_
+#define        _EUTRA_MultiBandInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorEUTRA.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct EUTRA_NS_PmaxList;
+
+/* EUTRA-MultiBandInfo */
+typedef struct EUTRA_MultiBandInfo {
+       FreqBandIndicatorEUTRA_t         eutra_FreqBandIndicator;
+       struct EUTRA_NS_PmaxList        *eutra_NS_PmaxList;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_MultiBandInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_MultiBandInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_MultiBandInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_MultiBandInfo_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_MultiBandInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-MultiBandInfoList.c b/src/codec_utils/RRC/EUTRA-MultiBandInfoList.c
new file mode 100644 (file)
index 0000000..a894197
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-MultiBandInfoList.h"
+
+#include "EUTRA-MultiBandInfo.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_MultiBandInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_MultiBandInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_MultiBandInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_MultiBandInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_MultiBandInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_MultiBandInfoList_specs_1 = {
+       sizeof(struct EUTRA_MultiBandInfoList),
+       offsetof(struct EUTRA_MultiBandInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_MultiBandInfoList = {
+       "EUTRA-MultiBandInfoList",
+       "EUTRA-MultiBandInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_MultiBandInfoList_tags_1,
+       sizeof(asn_DEF_EUTRA_MultiBandInfoList_tags_1)
+               /sizeof(asn_DEF_EUTRA_MultiBandInfoList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_MultiBandInfoList_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_MultiBandInfoList_tags_1)
+               /sizeof(asn_DEF_EUTRA_MultiBandInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_MultiBandInfoList_constr_1, &asn_PER_type_EUTRA_MultiBandInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_MultiBandInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_MultiBandInfoList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-MultiBandInfoList.h b/src/codec_utils/RRC/EUTRA-MultiBandInfoList.h
new file mode 100644 (file)
index 0000000..4106cfa
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_MultiBandInfoList_H_
+#define        _EUTRA_MultiBandInfoList_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 EUTRA_MultiBandInfo;
+
+/* EUTRA-MultiBandInfoList */
+typedef struct EUTRA_MultiBandInfoList {
+       A_SEQUENCE_OF(struct EUTRA_MultiBandInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_MultiBandInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_MultiBandInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_MultiBandInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_MultiBandInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_MultiBandInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_MultiBandInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-NS-PmaxList.c b/src/codec_utils/RRC/EUTRA-NS-PmaxList.c
new file mode 100644 (file)
index 0000000..e67ddf2
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-NS-PmaxList.h"
+
+#include "EUTRA-NS-PmaxValue.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_NS_PmaxList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_NS_PmaxList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_NS_PmaxList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_NS_PmaxValue,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_NS_PmaxList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_NS_PmaxList_specs_1 = {
+       sizeof(struct EUTRA_NS_PmaxList),
+       offsetof(struct EUTRA_NS_PmaxList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_NS_PmaxList = {
+       "EUTRA-NS-PmaxList",
+       "EUTRA-NS-PmaxList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_NS_PmaxList_tags_1,
+       sizeof(asn_DEF_EUTRA_NS_PmaxList_tags_1)
+               /sizeof(asn_DEF_EUTRA_NS_PmaxList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_NS_PmaxList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_EUTRA_NS_PmaxList_tags_1)
+               /sizeof(asn_DEF_EUTRA_NS_PmaxList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_NS_PmaxList_constr_1, &asn_PER_type_EUTRA_NS_PmaxList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_NS_PmaxList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_NS_PmaxList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-NS-PmaxList.h b/src/codec_utils/RRC/EUTRA-NS-PmaxList.h
new file mode 100644 (file)
index 0000000..c43eebc
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_NS_PmaxList_H_
+#define        _EUTRA_NS_PmaxList_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 EUTRA_NS_PmaxValue;
+
+/* EUTRA-NS-PmaxList */
+typedef struct EUTRA_NS_PmaxList {
+       A_SEQUENCE_OF(struct EUTRA_NS_PmaxValue) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_NS_PmaxList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_NS_PmaxList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_NS_PmaxList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_NS_PmaxList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_NS_PmaxList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_NS_PmaxList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-NS-PmaxValue.c b/src/codec_utils/RRC/EUTRA-NS-PmaxValue.c
new file mode 100644 (file)
index 0000000..5b3c255
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-NS-PmaxValue.h"
+
+static int
+memb_additionalPmax_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 >= -30 && value <= 33)) {
+               /* 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_additionalSpectrumEmission_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 <= 288)) {
+               /* 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_additionalPmax_constr_2 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..33) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_additionalPmax_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  33 }      /* (-30..33) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_additionalSpectrumEmission_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (1..288) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_additionalSpectrumEmission_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  288 }      /* (1..288) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_NS_PmaxValue_1[] = {
+       { ATF_POINTER, 2, offsetof(struct EUTRA_NS_PmaxValue, additionalPmax),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_additionalPmax_constr_2, &asn_PER_memb_additionalPmax_constr_2,  memb_additionalPmax_constraint_1 },
+               0, 0, /* No default value */
+               "additionalPmax"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_NS_PmaxValue, additionalSpectrumEmission),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_additionalSpectrumEmission_constr_3, &asn_PER_memb_additionalSpectrumEmission_constr_3,  memb_additionalSpectrumEmission_constraint_1 },
+               0, 0, /* No default value */
+               "additionalSpectrumEmission"
+               },
+};
+static const int asn_MAP_EUTRA_NS_PmaxValue_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_NS_PmaxValue_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_NS_PmaxValue_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalPmax */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* additionalSpectrumEmission */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_NS_PmaxValue_specs_1 = {
+       sizeof(struct EUTRA_NS_PmaxValue),
+       offsetof(struct EUTRA_NS_PmaxValue, _asn_ctx),
+       asn_MAP_EUTRA_NS_PmaxValue_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_EUTRA_NS_PmaxValue_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_NS_PmaxValue = {
+       "EUTRA-NS-PmaxValue",
+       "EUTRA-NS-PmaxValue",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_NS_PmaxValue_tags_1,
+       sizeof(asn_DEF_EUTRA_NS_PmaxValue_tags_1)
+               /sizeof(asn_DEF_EUTRA_NS_PmaxValue_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_NS_PmaxValue_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EUTRA_NS_PmaxValue_tags_1)
+               /sizeof(asn_DEF_EUTRA_NS_PmaxValue_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_NS_PmaxValue_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_NS_PmaxValue_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-NS-PmaxValue.h b/src/codec_utils/RRC/EUTRA-NS-PmaxValue.h
new file mode 100644 (file)
index 0000000..613b2c8
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_NS_PmaxValue_H_
+#define        _EUTRA_NS_PmaxValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-NS-PmaxValue */
+typedef struct EUTRA_NS_PmaxValue {
+       long    *additionalPmax;        /* OPTIONAL */
+       long    *additionalSpectrumEmission;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_NS_PmaxValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_NS_PmaxValue;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_NS_PmaxValue_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_NS_PmaxValue_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_NS_PmaxValue_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-Parameters.c b/src/codec_utils/RRC/EUTRA-Parameters.c
new file mode 100644 (file)
index 0000000..5d29b0a
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-Parameters.h"
+
+#include "EUTRA-ParametersCommon.h"
+#include "EUTRA-ParametersXDD-Diff.h"
+static int
+memb_supportedBandListEUTRA_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 <= 256)) {
+               /* 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_supportedBandListEUTRA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..256)) */};
+static asn_per_constraints_t asn_PER_type_supportedBandListEUTRA_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (SIZE(1..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_supportedBandListEUTRA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..256)) */};
+static asn_per_constraints_t asn_PER_memb_supportedBandListEUTRA_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (SIZE(1..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_supportedBandListEUTRA_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_supportedBandListEUTRA_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_supportedBandListEUTRA_specs_2 = {
+       sizeof(struct EUTRA_Parameters__supportedBandListEUTRA),
+       offsetof(struct EUTRA_Parameters__supportedBandListEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_supportedBandListEUTRA_2 = {
+       "supportedBandListEUTRA",
+       "supportedBandListEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_supportedBandListEUTRA_tags_2,
+       sizeof(asn_DEF_supportedBandListEUTRA_tags_2)
+               /sizeof(asn_DEF_supportedBandListEUTRA_tags_2[0]) - 1, /* 1 */
+       asn_DEF_supportedBandListEUTRA_tags_2,  /* Same as above */
+       sizeof(asn_DEF_supportedBandListEUTRA_tags_2)
+               /sizeof(asn_DEF_supportedBandListEUTRA_tags_2[0]), /* 2 */
+       { &asn_OER_type_supportedBandListEUTRA_constr_2, &asn_PER_type_supportedBandListEUTRA_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_supportedBandListEUTRA_2,
+       1,      /* Single element */
+       &asn_SPC_supportedBandListEUTRA_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EUTRA_Parameters_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_Parameters, supportedBandListEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_supportedBandListEUTRA_2,
+               0,
+               { &asn_OER_memb_supportedBandListEUTRA_constr_2, &asn_PER_memb_supportedBandListEUTRA_constr_2,  memb_supportedBandListEUTRA_constraint_1 },
+               0, 0, /* No default value */
+               "supportedBandListEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct EUTRA_Parameters, eutra_ParametersCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_ParametersCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-ParametersCommon"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_Parameters, eutra_ParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_ParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-ParametersXDD-Diff"
+               },
+};
+static const int asn_MAP_EUTRA_Parameters_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedBandListEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eutra-ParametersCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* eutra-ParametersXDD-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_Parameters_specs_1 = {
+       sizeof(struct EUTRA_Parameters),
+       offsetof(struct EUTRA_Parameters, _asn_ctx),
+       asn_MAP_EUTRA_Parameters_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_EUTRA_Parameters_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_Parameters = {
+       "EUTRA-Parameters",
+       "EUTRA-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_Parameters_tags_1,
+       sizeof(asn_DEF_EUTRA_Parameters_tags_1)
+               /sizeof(asn_DEF_EUTRA_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_Parameters_tags_1,        /* Same as above */
+       sizeof(asn_DEF_EUTRA_Parameters_tags_1)
+               /sizeof(asn_DEF_EUTRA_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_Parameters_1,
+       3,      /* Elements count */
+       &asn_SPC_EUTRA_Parameters_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-Parameters.h b/src/codec_utils/RRC/EUTRA-Parameters.h
new file mode 100644 (file)
index 0000000..e9b1141
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_Parameters_H_
+#define        _EUTRA_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorEUTRA.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct EUTRA_ParametersCommon;
+struct EUTRA_ParametersXDD_Diff;
+
+/* EUTRA-Parameters */
+typedef struct EUTRA_Parameters {
+       struct EUTRA_Parameters__supportedBandListEUTRA {
+               A_SEQUENCE_OF(FreqBandIndicatorEUTRA_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } supportedBandListEUTRA;
+       struct EUTRA_ParametersCommon   *eutra_ParametersCommon;        /* OPTIONAL */
+       struct EUTRA_ParametersXDD_Diff *eutra_ParametersXDD_Diff;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_Parameters_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-ParametersCommon.c b/src/codec_utils/RRC/EUTRA-ParametersCommon.c
new file mode 100644 (file)
index 0000000..2c60121
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-ParametersCommon.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.
+ */
+static int
+memb_modifiedMPR_BehaviorEUTRA_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 == 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_type_mfbi_EUTRA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mfbi_EUTRA_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_multiNS_Pmax_EUTRA_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multiNS_Pmax_EUTRA_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rs_SINR_MeasEUTRA_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rs_SINR_MeasEUTRA_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_modifiedMPR_BehaviorEUTRA_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_modifiedMPR_BehaviorEUTRA_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_mfbi_EUTRA_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_mfbi_EUTRA_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mfbi_EUTRA_specs_2 = {
+       asn_MAP_mfbi_EUTRA_value2enum_2,        /* "tag" => N; sorted by tag */
+       asn_MAP_mfbi_EUTRA_enum2value_2,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mfbi_EUTRA_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_mfbi_EUTRA_2 = {
+       "mfbi-EUTRA",
+       "mfbi-EUTRA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mfbi_EUTRA_tags_2,
+       sizeof(asn_DEF_mfbi_EUTRA_tags_2)
+               /sizeof(asn_DEF_mfbi_EUTRA_tags_2[0]) - 1, /* 1 */
+       asn_DEF_mfbi_EUTRA_tags_2,      /* Same as above */
+       sizeof(asn_DEF_mfbi_EUTRA_tags_2)
+               /sizeof(asn_DEF_mfbi_EUTRA_tags_2[0]), /* 2 */
+       { &asn_OER_type_mfbi_EUTRA_constr_2, &asn_PER_type_mfbi_EUTRA_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mfbi_EUTRA_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_multiNS_Pmax_EUTRA_value2enum_5[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multiNS_Pmax_EUTRA_enum2value_5[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multiNS_Pmax_EUTRA_specs_5 = {
+       asn_MAP_multiNS_Pmax_EUTRA_value2enum_5,        /* "tag" => N; sorted by tag */
+       asn_MAP_multiNS_Pmax_EUTRA_enum2value_5,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multiNS_Pmax_EUTRA_tags_5[] = {
+       (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_multiNS_Pmax_EUTRA_5 = {
+       "multiNS-Pmax-EUTRA",
+       "multiNS-Pmax-EUTRA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multiNS_Pmax_EUTRA_tags_5,
+       sizeof(asn_DEF_multiNS_Pmax_EUTRA_tags_5)
+               /sizeof(asn_DEF_multiNS_Pmax_EUTRA_tags_5[0]) - 1, /* 1 */
+       asn_DEF_multiNS_Pmax_EUTRA_tags_5,      /* Same as above */
+       sizeof(asn_DEF_multiNS_Pmax_EUTRA_tags_5)
+               /sizeof(asn_DEF_multiNS_Pmax_EUTRA_tags_5[0]), /* 2 */
+       { &asn_OER_type_multiNS_Pmax_EUTRA_constr_5, &asn_PER_type_multiNS_Pmax_EUTRA_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multiNS_Pmax_EUTRA_specs_5     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rs_SINR_MeasEUTRA_value2enum_7[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_rs_SINR_MeasEUTRA_enum2value_7[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rs_SINR_MeasEUTRA_specs_7 = {
+       asn_MAP_rs_SINR_MeasEUTRA_value2enum_7, /* "tag" => N; sorted by tag */
+       asn_MAP_rs_SINR_MeasEUTRA_enum2value_7, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rs_SINR_MeasEUTRA_tags_7[] = {
+       (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_rs_SINR_MeasEUTRA_7 = {
+       "rs-SINR-MeasEUTRA",
+       "rs-SINR-MeasEUTRA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rs_SINR_MeasEUTRA_tags_7,
+       sizeof(asn_DEF_rs_SINR_MeasEUTRA_tags_7)
+               /sizeof(asn_DEF_rs_SINR_MeasEUTRA_tags_7[0]) - 1, /* 1 */
+       asn_DEF_rs_SINR_MeasEUTRA_tags_7,       /* Same as above */
+       sizeof(asn_DEF_rs_SINR_MeasEUTRA_tags_7)
+               /sizeof(asn_DEF_rs_SINR_MeasEUTRA_tags_7[0]), /* 2 */
+       { &asn_OER_type_rs_SINR_MeasEUTRA_constr_7, &asn_PER_type_rs_SINR_MeasEUTRA_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rs_SINR_MeasEUTRA_specs_7      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EUTRA_ParametersCommon_1[] = {
+       { ATF_POINTER, 4, offsetof(struct EUTRA_ParametersCommon, mfbi_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mfbi_EUTRA_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mfbi-EUTRA"
+               },
+       { ATF_POINTER, 3, offsetof(struct EUTRA_ParametersCommon, modifiedMPR_BehaviorEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_modifiedMPR_BehaviorEUTRA_constr_4, &asn_PER_memb_modifiedMPR_BehaviorEUTRA_constr_4,  memb_modifiedMPR_BehaviorEUTRA_constraint_1 },
+               0, 0, /* No default value */
+               "modifiedMPR-BehaviorEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct EUTRA_ParametersCommon, multiNS_Pmax_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multiNS_Pmax_EUTRA_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multiNS-Pmax-EUTRA"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_ParametersCommon, rs_SINR_MeasEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rs_SINR_MeasEUTRA_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rs-SINR-MeasEUTRA"
+               },
+};
+static const int asn_MAP_EUTRA_ParametersCommon_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_ParametersCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_ParametersCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mfbi-EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* modifiedMPR-BehaviorEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* multiNS-Pmax-EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* rs-SINR-MeasEUTRA */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_ParametersCommon_specs_1 = {
+       sizeof(struct EUTRA_ParametersCommon),
+       offsetof(struct EUTRA_ParametersCommon, _asn_ctx),
+       asn_MAP_EUTRA_ParametersCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_EUTRA_ParametersCommon_oms_1,   /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_ParametersCommon = {
+       "EUTRA-ParametersCommon",
+       "EUTRA-ParametersCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_ParametersCommon_tags_1,
+       sizeof(asn_DEF_EUTRA_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_EUTRA_ParametersCommon_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_ParametersCommon_tags_1,  /* Same as above */
+       sizeof(asn_DEF_EUTRA_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_EUTRA_ParametersCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_ParametersCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_EUTRA_ParametersCommon_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-ParametersCommon.h b/src/codec_utils/RRC/EUTRA-ParametersCommon.h
new file mode 100644 (file)
index 0000000..fdb98df
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_ParametersCommon_H_
+#define        _EUTRA_ParametersCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_ParametersCommon__mfbi_EUTRA {
+       EUTRA_ParametersCommon__mfbi_EUTRA_supported    = 0
+} e_EUTRA_ParametersCommon__mfbi_EUTRA;
+typedef enum EUTRA_ParametersCommon__multiNS_Pmax_EUTRA {
+       EUTRA_ParametersCommon__multiNS_Pmax_EUTRA_supported    = 0
+} e_EUTRA_ParametersCommon__multiNS_Pmax_EUTRA;
+typedef enum EUTRA_ParametersCommon__rs_SINR_MeasEUTRA {
+       EUTRA_ParametersCommon__rs_SINR_MeasEUTRA_supported     = 0
+} e_EUTRA_ParametersCommon__rs_SINR_MeasEUTRA;
+
+/* EUTRA-ParametersCommon */
+typedef struct EUTRA_ParametersCommon {
+       long    *mfbi_EUTRA;    /* OPTIONAL */
+       BIT_STRING_t    *modifiedMPR_BehaviorEUTRA;     /* OPTIONAL */
+       long    *multiNS_Pmax_EUTRA;    /* OPTIONAL */
+       long    *rs_SINR_MeasEUTRA;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_ParametersCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_mfbi_EUTRA_2;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_multiNS_Pmax_EUTRA_5;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rs_SINR_MeasEUTRA_7;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_ParametersCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_ParametersCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_ParametersCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_ParametersCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.c b/src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.c
new file mode 100644 (file)
index 0000000..20f65e0
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-ParametersXDD-Diff.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_rsrqMeasWidebandEUTRA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rsrqMeasWidebandEUTRA_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rsrqMeasWidebandEUTRA_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_rsrqMeasWidebandEUTRA_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rsrqMeasWidebandEUTRA_specs_2 = {
+       asn_MAP_rsrqMeasWidebandEUTRA_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_rsrqMeasWidebandEUTRA_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rsrqMeasWidebandEUTRA_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_rsrqMeasWidebandEUTRA_2 = {
+       "rsrqMeasWidebandEUTRA",
+       "rsrqMeasWidebandEUTRA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rsrqMeasWidebandEUTRA_tags_2,
+       sizeof(asn_DEF_rsrqMeasWidebandEUTRA_tags_2)
+               /sizeof(asn_DEF_rsrqMeasWidebandEUTRA_tags_2[0]) - 1, /* 1 */
+       asn_DEF_rsrqMeasWidebandEUTRA_tags_2,   /* Same as above */
+       sizeof(asn_DEF_rsrqMeasWidebandEUTRA_tags_2)
+               /sizeof(asn_DEF_rsrqMeasWidebandEUTRA_tags_2[0]), /* 2 */
+       { &asn_OER_type_rsrqMeasWidebandEUTRA_constr_2, &asn_PER_type_rsrqMeasWidebandEUTRA_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rsrqMeasWidebandEUTRA_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EUTRA_ParametersXDD_Diff_1[] = {
+       { ATF_POINTER, 1, offsetof(struct EUTRA_ParametersXDD_Diff, rsrqMeasWidebandEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rsrqMeasWidebandEUTRA_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrqMeasWidebandEUTRA"
+               },
+};
+static const int asn_MAP_EUTRA_ParametersXDD_Diff_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_ParametersXDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_ParametersXDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rsrqMeasWidebandEUTRA */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_ParametersXDD_Diff_specs_1 = {
+       sizeof(struct EUTRA_ParametersXDD_Diff),
+       offsetof(struct EUTRA_ParametersXDD_Diff, _asn_ctx),
+       asn_MAP_EUTRA_ParametersXDD_Diff_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_EUTRA_ParametersXDD_Diff_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_ParametersXDD_Diff = {
+       "EUTRA-ParametersXDD-Diff",
+       "EUTRA-ParametersXDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_ParametersXDD_Diff_tags_1,
+       sizeof(asn_DEF_EUTRA_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_EUTRA_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_ParametersXDD_Diff_tags_1,        /* Same as above */
+       sizeof(asn_DEF_EUTRA_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_EUTRA_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_ParametersXDD_Diff_1,
+       1,      /* Elements count */
+       &asn_SPC_EUTRA_ParametersXDD_Diff_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.h b/src/codec_utils/RRC/EUTRA-ParametersXDD-Diff.h
new file mode 100644 (file)
index 0000000..40057b0
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_ParametersXDD_Diff_H_
+#define        _EUTRA_ParametersXDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_ParametersXDD_Diff__rsrqMeasWidebandEUTRA {
+       EUTRA_ParametersXDD_Diff__rsrqMeasWidebandEUTRA_supported       = 0
+} e_EUTRA_ParametersXDD_Diff__rsrqMeasWidebandEUTRA;
+
+/* EUTRA-ParametersXDD-Diff */
+typedef struct EUTRA_ParametersXDD_Diff {
+       long    *rsrqMeasWidebandEUTRA; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_ParametersXDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_rsrqMeasWidebandEUTRA_2;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_ParametersXDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_ParametersXDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_ParametersXDD_Diff_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_ParametersXDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-PhysCellId.c b/src/codec_utils/RRC/EUTRA-PhysCellId.c
new file mode 100644 (file)
index 0000000..1ef3146
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-PhysCellId.h"
+
+int
+EUTRA_PhysCellId_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 <= 503)) {
+               /* 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_EUTRA_PhysCellId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..503) */,
+       -1};
+asn_per_constraints_t asn_PER_type_EUTRA_PhysCellId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  503 }      /* (0..503) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_PhysCellId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_PhysCellId = {
+       "EUTRA-PhysCellId",
+       "EUTRA-PhysCellId",
+       &asn_OP_NativeInteger,
+       asn_DEF_EUTRA_PhysCellId_tags_1,
+       sizeof(asn_DEF_EUTRA_PhysCellId_tags_1)
+               /sizeof(asn_DEF_EUTRA_PhysCellId_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_PhysCellId_tags_1,        /* Same as above */
+       sizeof(asn_DEF_EUTRA_PhysCellId_tags_1)
+               /sizeof(asn_DEF_EUTRA_PhysCellId_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_PhysCellId_constr_1, &asn_PER_type_EUTRA_PhysCellId_constr_1, EUTRA_PhysCellId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-PhysCellId.h b/src/codec_utils/RRC/EUTRA-PhysCellId.h
new file mode 100644 (file)
index 0000000..29d7e44
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_PhysCellId_H_
+#define        _EUTRA_PhysCellId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-PhysCellId */
+typedef long    EUTRA_PhysCellId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRA_PhysCellId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_PhysCellId;
+asn_struct_free_f EUTRA_PhysCellId_free;
+asn_struct_print_f EUTRA_PhysCellId_print;
+asn_constr_check_f EUTRA_PhysCellId_constraint;
+ber_type_decoder_f EUTRA_PhysCellId_decode_ber;
+der_type_encoder_f EUTRA_PhysCellId_encode_der;
+xer_type_decoder_f EUTRA_PhysCellId_decode_xer;
+xer_type_encoder_f EUTRA_PhysCellId_encode_xer;
+oer_type_decoder_f EUTRA_PhysCellId_decode_oer;
+oer_type_encoder_f EUTRA_PhysCellId_encode_oer;
+per_type_decoder_f EUTRA_PhysCellId_decode_uper;
+per_type_encoder_f EUTRA_PhysCellId_encode_uper;
+per_type_decoder_f EUTRA_PhysCellId_decode_aper;
+per_type_encoder_f EUTRA_PhysCellId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_PhysCellId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-PhysCellIdRange.c b/src/codec_utils/RRC/EUTRA-PhysCellIdRange.c
new file mode 100644 (file)
index 0000000..5108fe3
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-PhysCellIdRange.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_range_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_range_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_range_value2enum_3[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n24" },
+       { 5,    3,      "n32" },
+       { 6,    3,      "n48" },
+       { 7,    3,      "n64" },
+       { 8,    3,      "n84" },
+       { 9,    3,      "n96" },
+       { 10,   4,      "n128" },
+       { 11,   4,      "n168" },
+       { 12,   4,      "n252" },
+       { 13,   4,      "n504" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_range_enum2value_3[] = {
+       2,      /* n12(2) */
+       10,     /* n128(10) */
+       3,      /* n16(3) */
+       11,     /* n168(11) */
+       4,      /* n24(4) */
+       12,     /* n252(12) */
+       5,      /* n32(5) */
+       0,      /* n4(0) */
+       6,      /* n48(6) */
+       13,     /* n504(13) */
+       7,      /* n64(7) */
+       1,      /* n8(1) */
+       8,      /* n84(8) */
+       9,      /* n96(9) */
+       15,     /* spare1(15) */
+       14      /* spare2(14) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_range_specs_3 = {
+       asn_MAP_range_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_range_enum2value_3,     /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_range_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_range_3 = {
+       "range",
+       "range",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_range_tags_3,
+       sizeof(asn_DEF_range_tags_3)
+               /sizeof(asn_DEF_range_tags_3[0]) - 1, /* 1 */
+       asn_DEF_range_tags_3,   /* Same as above */
+       sizeof(asn_DEF_range_tags_3)
+               /sizeof(asn_DEF_range_tags_3[0]), /* 2 */
+       { &asn_OER_type_range_constr_3, &asn_PER_type_range_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_range_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EUTRA_PhysCellIdRange_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_PhysCellIdRange, start),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "start"
+               },
+       { ATF_POINTER, 1, offsetof(struct EUTRA_PhysCellIdRange, range),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_range_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "range"
+               },
+};
+static const int asn_MAP_EUTRA_PhysCellIdRange_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_EUTRA_PhysCellIdRange_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_PhysCellIdRange_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* start */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* range */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_PhysCellIdRange_specs_1 = {
+       sizeof(struct EUTRA_PhysCellIdRange),
+       offsetof(struct EUTRA_PhysCellIdRange, _asn_ctx),
+       asn_MAP_EUTRA_PhysCellIdRange_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_EUTRA_PhysCellIdRange_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_PhysCellIdRange = {
+       "EUTRA-PhysCellIdRange",
+       "EUTRA-PhysCellIdRange",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_PhysCellIdRange_tags_1,
+       sizeof(asn_DEF_EUTRA_PhysCellIdRange_tags_1)
+               /sizeof(asn_DEF_EUTRA_PhysCellIdRange_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_PhysCellIdRange_tags_1,   /* Same as above */
+       sizeof(asn_DEF_EUTRA_PhysCellIdRange_tags_1)
+               /sizeof(asn_DEF_EUTRA_PhysCellIdRange_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_PhysCellIdRange_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_PhysCellIdRange_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-PhysCellIdRange.h b/src/codec_utils/RRC/EUTRA-PhysCellIdRange.h
new file mode 100644 (file)
index 0000000..8231507
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_PhysCellIdRange_H_
+#define        _EUTRA_PhysCellIdRange_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-PhysCellId.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_PhysCellIdRange__range {
+       EUTRA_PhysCellIdRange__range_n4 = 0,
+       EUTRA_PhysCellIdRange__range_n8 = 1,
+       EUTRA_PhysCellIdRange__range_n12        = 2,
+       EUTRA_PhysCellIdRange__range_n16        = 3,
+       EUTRA_PhysCellIdRange__range_n24        = 4,
+       EUTRA_PhysCellIdRange__range_n32        = 5,
+       EUTRA_PhysCellIdRange__range_n48        = 6,
+       EUTRA_PhysCellIdRange__range_n64        = 7,
+       EUTRA_PhysCellIdRange__range_n84        = 8,
+       EUTRA_PhysCellIdRange__range_n96        = 9,
+       EUTRA_PhysCellIdRange__range_n128       = 10,
+       EUTRA_PhysCellIdRange__range_n168       = 11,
+       EUTRA_PhysCellIdRange__range_n252       = 12,
+       EUTRA_PhysCellIdRange__range_n504       = 13,
+       EUTRA_PhysCellIdRange__range_spare2     = 14,
+       EUTRA_PhysCellIdRange__range_spare1     = 15
+} e_EUTRA_PhysCellIdRange__range;
+
+/* EUTRA-PhysCellIdRange */
+typedef struct EUTRA_PhysCellIdRange {
+       EUTRA_PhysCellId_t       start;
+       long    *range; /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_PhysCellIdRange_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_range_3;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_PhysCellIdRange;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_PhysCellIdRange_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_PhysCellIdRange_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_PhysCellIdRange_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.c b/src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.c
new file mode 100644 (file)
index 0000000..67fdd3c
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-PresenceAntennaPort1.h"
+
+/*
+ * This type is implemented using BOOLEAN,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_EUTRA_PresenceAntennaPort1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (1 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_PresenceAntennaPort1 = {
+       "EUTRA-PresenceAntennaPort1",
+       "EUTRA-PresenceAntennaPort1",
+       &asn_OP_BOOLEAN,
+       asn_DEF_EUTRA_PresenceAntennaPort1_tags_1,
+       sizeof(asn_DEF_EUTRA_PresenceAntennaPort1_tags_1)
+               /sizeof(asn_DEF_EUTRA_PresenceAntennaPort1_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_PresenceAntennaPort1_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EUTRA_PresenceAntennaPort1_tags_1)
+               /sizeof(asn_DEF_EUTRA_PresenceAntennaPort1_tags_1[0]), /* 1 */
+       { 0, 0, BOOLEAN_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.h b/src/codec_utils/RRC/EUTRA-PresenceAntennaPort1.h
new file mode 100644 (file)
index 0000000..0d2b6fc
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_PresenceAntennaPort1_H_
+#define        _EUTRA_PresenceAntennaPort1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-PresenceAntennaPort1 */
+typedef BOOLEAN_t       EUTRA_PresenceAntennaPort1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_PresenceAntennaPort1;
+asn_struct_free_f EUTRA_PresenceAntennaPort1_free;
+asn_struct_print_f EUTRA_PresenceAntennaPort1_print;
+asn_constr_check_f EUTRA_PresenceAntennaPort1_constraint;
+ber_type_decoder_f EUTRA_PresenceAntennaPort1_decode_ber;
+der_type_encoder_f EUTRA_PresenceAntennaPort1_encode_der;
+xer_type_decoder_f EUTRA_PresenceAntennaPort1_decode_xer;
+xer_type_encoder_f EUTRA_PresenceAntennaPort1_encode_xer;
+oer_type_decoder_f EUTRA_PresenceAntennaPort1_decode_oer;
+oer_type_encoder_f EUTRA_PresenceAntennaPort1_encode_oer;
+per_type_decoder_f EUTRA_PresenceAntennaPort1_decode_uper;
+per_type_encoder_f EUTRA_PresenceAntennaPort1_encode_uper;
+per_type_decoder_f EUTRA_PresenceAntennaPort1_decode_aper;
+per_type_encoder_f EUTRA_PresenceAntennaPort1_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_PresenceAntennaPort1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-Q-OffsetRange.c b/src/codec_utils/RRC/EUTRA-Q-OffsetRange.c
new file mode 100644 (file)
index 0000000..de9247c
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-Q-OffsetRange.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_EUTRA_Q_OffsetRange_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_EUTRA_Q_OffsetRange_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  30 }       /* (0..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_EUTRA_Q_OffsetRange_value2enum_1[] = {
+       { 0,    5,      "dB-24" },
+       { 1,    5,      "dB-22" },
+       { 2,    5,      "dB-20" },
+       { 3,    5,      "dB-18" },
+       { 4,    5,      "dB-16" },
+       { 5,    5,      "dB-14" },
+       { 6,    5,      "dB-12" },
+       { 7,    5,      "dB-10" },
+       { 8,    4,      "dB-8" },
+       { 9,    4,      "dB-6" },
+       { 10,   4,      "dB-5" },
+       { 11,   4,      "dB-4" },
+       { 12,   4,      "dB-3" },
+       { 13,   4,      "dB-2" },
+       { 14,   4,      "dB-1" },
+       { 15,   3,      "dB0" },
+       { 16,   3,      "dB1" },
+       { 17,   3,      "dB2" },
+       { 18,   3,      "dB3" },
+       { 19,   3,      "dB4" },
+       { 20,   3,      "dB5" },
+       { 21,   3,      "dB6" },
+       { 22,   3,      "dB8" },
+       { 23,   4,      "dB10" },
+       { 24,   4,      "dB12" },
+       { 25,   4,      "dB14" },
+       { 26,   4,      "dB16" },
+       { 27,   4,      "dB18" },
+       { 28,   4,      "dB20" },
+       { 29,   4,      "dB22" },
+       { 30,   4,      "dB24" }
+};
+static const unsigned int asn_MAP_EUTRA_Q_OffsetRange_enum2value_1[] = {
+       14,     /* dB-1(14) */
+       7,      /* dB-10(7) */
+       6,      /* dB-12(6) */
+       5,      /* dB-14(5) */
+       4,      /* dB-16(4) */
+       3,      /* dB-18(3) */
+       13,     /* dB-2(13) */
+       2,      /* dB-20(2) */
+       1,      /* dB-22(1) */
+       0,      /* dB-24(0) */
+       12,     /* dB-3(12) */
+       11,     /* dB-4(11) */
+       10,     /* dB-5(10) */
+       9,      /* dB-6(9) */
+       8,      /* dB-8(8) */
+       15,     /* dB0(15) */
+       16,     /* dB1(16) */
+       23,     /* dB10(23) */
+       24,     /* dB12(24) */
+       25,     /* dB14(25) */
+       26,     /* dB16(26) */
+       27,     /* dB18(27) */
+       17,     /* dB2(17) */
+       28,     /* dB20(28) */
+       29,     /* dB22(29) */
+       30,     /* dB24(30) */
+       18,     /* dB3(18) */
+       19,     /* dB4(19) */
+       20,     /* dB5(20) */
+       21,     /* dB6(21) */
+       22      /* dB8(22) */
+};
+const asn_INTEGER_specifics_t asn_SPC_EUTRA_Q_OffsetRange_specs_1 = {
+       asn_MAP_EUTRA_Q_OffsetRange_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_EUTRA_Q_OffsetRange_enum2value_1,       /* N => "tag"; sorted by N */
+       31,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_Q_OffsetRange_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_Q_OffsetRange = {
+       "EUTRA-Q-OffsetRange",
+       "EUTRA-Q-OffsetRange",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_EUTRA_Q_OffsetRange_tags_1,
+       sizeof(asn_DEF_EUTRA_Q_OffsetRange_tags_1)
+               /sizeof(asn_DEF_EUTRA_Q_OffsetRange_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_Q_OffsetRange_tags_1,     /* Same as above */
+       sizeof(asn_DEF_EUTRA_Q_OffsetRange_tags_1)
+               /sizeof(asn_DEF_EUTRA_Q_OffsetRange_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_Q_OffsetRange_constr_1, &asn_PER_type_EUTRA_Q_OffsetRange_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_EUTRA_Q_OffsetRange_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-Q-OffsetRange.h b/src/codec_utils/RRC/EUTRA-Q-OffsetRange.h
new file mode 100644 (file)
index 0000000..ea42c9a
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_Q_OffsetRange_H_
+#define        _EUTRA_Q_OffsetRange_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EUTRA_Q_OffsetRange {
+       EUTRA_Q_OffsetRange_dB_24       = 0,
+       EUTRA_Q_OffsetRange_dB_22       = 1,
+       EUTRA_Q_OffsetRange_dB_20       = 2,
+       EUTRA_Q_OffsetRange_dB_18       = 3,
+       EUTRA_Q_OffsetRange_dB_16       = 4,
+       EUTRA_Q_OffsetRange_dB_14       = 5,
+       EUTRA_Q_OffsetRange_dB_12       = 6,
+       EUTRA_Q_OffsetRange_dB_10       = 7,
+       EUTRA_Q_OffsetRange_dB_8        = 8,
+       EUTRA_Q_OffsetRange_dB_6        = 9,
+       EUTRA_Q_OffsetRange_dB_5        = 10,
+       EUTRA_Q_OffsetRange_dB_4        = 11,
+       EUTRA_Q_OffsetRange_dB_3        = 12,
+       EUTRA_Q_OffsetRange_dB_2        = 13,
+       EUTRA_Q_OffsetRange_dB_1        = 14,
+       EUTRA_Q_OffsetRange_dB0 = 15,
+       EUTRA_Q_OffsetRange_dB1 = 16,
+       EUTRA_Q_OffsetRange_dB2 = 17,
+       EUTRA_Q_OffsetRange_dB3 = 18,
+       EUTRA_Q_OffsetRange_dB4 = 19,
+       EUTRA_Q_OffsetRange_dB5 = 20,
+       EUTRA_Q_OffsetRange_dB6 = 21,
+       EUTRA_Q_OffsetRange_dB8 = 22,
+       EUTRA_Q_OffsetRange_dB10        = 23,
+       EUTRA_Q_OffsetRange_dB12        = 24,
+       EUTRA_Q_OffsetRange_dB14        = 25,
+       EUTRA_Q_OffsetRange_dB16        = 26,
+       EUTRA_Q_OffsetRange_dB18        = 27,
+       EUTRA_Q_OffsetRange_dB20        = 28,
+       EUTRA_Q_OffsetRange_dB22        = 29,
+       EUTRA_Q_OffsetRange_dB24        = 30
+} e_EUTRA_Q_OffsetRange;
+
+/* EUTRA-Q-OffsetRange */
+typedef long    EUTRA_Q_OffsetRange_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EUTRA_Q_OffsetRange_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_Q_OffsetRange;
+extern const asn_INTEGER_specifics_t asn_SPC_EUTRA_Q_OffsetRange_specs_1;
+asn_struct_free_f EUTRA_Q_OffsetRange_free;
+asn_struct_print_f EUTRA_Q_OffsetRange_print;
+asn_constr_check_f EUTRA_Q_OffsetRange_constraint;
+ber_type_decoder_f EUTRA_Q_OffsetRange_decode_ber;
+der_type_encoder_f EUTRA_Q_OffsetRange_encode_der;
+xer_type_decoder_f EUTRA_Q_OffsetRange_decode_xer;
+xer_type_encoder_f EUTRA_Q_OffsetRange_encode_xer;
+oer_type_decoder_f EUTRA_Q_OffsetRange_decode_oer;
+oer_type_encoder_f EUTRA_Q_OffsetRange_encode_oer;
+per_type_decoder_f EUTRA_Q_OffsetRange_decode_uper;
+per_type_encoder_f EUTRA_Q_OffsetRange_encode_uper;
+per_type_decoder_f EUTRA_Q_OffsetRange_decode_aper;
+per_type_encoder_f EUTRA_Q_OffsetRange_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_Q_OffsetRange_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-RSTD-Info.c b/src/codec_utils/RRC/EUTRA-RSTD-Info.c
new file mode 100644 (file)
index 0000000..4603ddc
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-RSTD-Info.h"
+
+static int
+memb_measPRS_Offset_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 >= 0 && value <= 39)) {
+               /* 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_measPRS_Offset_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_measPRS_Offset_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_RSTD_Info_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_RSTD_Info, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EUTRA_RSTD_Info, measPRS_Offset),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_measPRS_Offset_constr_3, &asn_PER_memb_measPRS_Offset_constr_3,  memb_measPRS_Offset_constraint_1 },
+               0, 0, /* No default value */
+               "measPRS-Offset"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_RSTD_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EUTRA_RSTD_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measPRS-Offset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EUTRA_RSTD_Info_specs_1 = {
+       sizeof(struct EUTRA_RSTD_Info),
+       offsetof(struct EUTRA_RSTD_Info, _asn_ctx),
+       asn_MAP_EUTRA_RSTD_Info_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_RSTD_Info = {
+       "EUTRA-RSTD-Info",
+       "EUTRA-RSTD-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EUTRA_RSTD_Info_tags_1,
+       sizeof(asn_DEF_EUTRA_RSTD_Info_tags_1)
+               /sizeof(asn_DEF_EUTRA_RSTD_Info_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_RSTD_Info_tags_1, /* Same as above */
+       sizeof(asn_DEF_EUTRA_RSTD_Info_tags_1)
+               /sizeof(asn_DEF_EUTRA_RSTD_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EUTRA_RSTD_Info_1,
+       2,      /* Elements count */
+       &asn_SPC_EUTRA_RSTD_Info_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-RSTD-Info.h b/src/codec_utils/RRC/EUTRA-RSTD-Info.h
new file mode 100644 (file)
index 0000000..e978b78
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_RSTD_Info_H_
+#define        _EUTRA_RSTD_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* EUTRA-RSTD-Info */
+typedef struct EUTRA_RSTD_Info {
+       ARFCN_ValueEUTRA_t       carrierFreq;
+       long     measPRS_Offset;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_RSTD_Info_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_RSTD_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_EUTRA_RSTD_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_RSTD_Info_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_RSTD_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EUTRA-RSTD-InfoList.c b/src/codec_utils/RRC/EUTRA-RSTD-InfoList.c
new file mode 100644 (file)
index 0000000..967026e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EUTRA-RSTD-InfoList.h"
+
+#include "EUTRA-RSTD-Info.h"
+static asn_oer_constraints_t asn_OER_type_EUTRA_RSTD_InfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+asn_per_constraints_t asn_PER_type_EUTRA_RSTD_InfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_EUTRA_RSTD_InfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_RSTD_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EUTRA_RSTD_InfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_EUTRA_RSTD_InfoList_specs_1 = {
+       sizeof(struct EUTRA_RSTD_InfoList),
+       offsetof(struct EUTRA_RSTD_InfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_EUTRA_RSTD_InfoList = {
+       "EUTRA-RSTD-InfoList",
+       "EUTRA-RSTD-InfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_EUTRA_RSTD_InfoList_tags_1,
+       sizeof(asn_DEF_EUTRA_RSTD_InfoList_tags_1)
+               /sizeof(asn_DEF_EUTRA_RSTD_InfoList_tags_1[0]), /* 1 */
+       asn_DEF_EUTRA_RSTD_InfoList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_EUTRA_RSTD_InfoList_tags_1)
+               /sizeof(asn_DEF_EUTRA_RSTD_InfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_EUTRA_RSTD_InfoList_constr_1, &asn_PER_type_EUTRA_RSTD_InfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_EUTRA_RSTD_InfoList_1,
+       1,      /* Single element */
+       &asn_SPC_EUTRA_RSTD_InfoList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EUTRA-RSTD-InfoList.h b/src/codec_utils/RRC/EUTRA-RSTD-InfoList.h
new file mode 100644 (file)
index 0000000..7de602a
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EUTRA_RSTD_InfoList_H_
+#define        _EUTRA_RSTD_InfoList_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 EUTRA_RSTD_Info;
+
+/* EUTRA-RSTD-InfoList */
+typedef struct EUTRA_RSTD_InfoList {
+       A_SEQUENCE_OF(struct EUTRA_RSTD_Info) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EUTRA_RSTD_InfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_EUTRA_RSTD_InfoList;
+extern asn_SET_OF_specifics_t asn_SPC_EUTRA_RSTD_InfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_EUTRA_RSTD_InfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_EUTRA_RSTD_InfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EUTRA_RSTD_InfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EstablishmentCause.c b/src/codec_utils/RRC/EstablishmentCause.c
new file mode 100644 (file)
index 0000000..f5bc481
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EstablishmentCause.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_EstablishmentCause_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_EstablishmentCause_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_EstablishmentCause_value2enum_1[] = {
+       { 0,    9,      "emergency" },
+       { 1,    18,     "highPriorityAccess" },
+       { 2,    9,      "mt-Access" },
+       { 3,    13,     "mo-Signalling" },
+       { 4,    7,      "mo-Data" },
+       { 5,    12,     "mo-VoiceCall" },
+       { 6,    12,     "mo-VideoCall" },
+       { 7,    6,      "mo-SMS" },
+       { 8,    18,     "mps-PriorityAccess" },
+       { 9,    18,     "mcs-PriorityAccess" },
+       { 10,   6,      "spare6" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_EstablishmentCause_enum2value_1[] = {
+       0,      /* emergency(0) */
+       1,      /* highPriorityAccess(1) */
+       9,      /* mcs-PriorityAccess(9) */
+       4,      /* mo-Data(4) */
+       7,      /* mo-SMS(7) */
+       3,      /* mo-Signalling(3) */
+       6,      /* mo-VideoCall(6) */
+       5,      /* mo-VoiceCall(5) */
+       8,      /* mps-PriorityAccess(8) */
+       2,      /* mt-Access(2) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11,     /* spare5(11) */
+       10      /* spare6(10) */
+};
+const asn_INTEGER_specifics_t asn_SPC_EstablishmentCause_specs_1 = {
+       asn_MAP_EstablishmentCause_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_EstablishmentCause_enum2value_1,        /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_EstablishmentCause_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_EstablishmentCause = {
+       "EstablishmentCause",
+       "EstablishmentCause",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_EstablishmentCause_tags_1,
+       sizeof(asn_DEF_EstablishmentCause_tags_1)
+               /sizeof(asn_DEF_EstablishmentCause_tags_1[0]), /* 1 */
+       asn_DEF_EstablishmentCause_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EstablishmentCause_tags_1)
+               /sizeof(asn_DEF_EstablishmentCause_tags_1[0]), /* 1 */
+       { &asn_OER_type_EstablishmentCause_constr_1, &asn_PER_type_EstablishmentCause_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_EstablishmentCause_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EstablishmentCause.h b/src/codec_utils/RRC/EstablishmentCause.h
new file mode 100644 (file)
index 0000000..1b3c52f
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EstablishmentCause_H_
+#define        _EstablishmentCause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EstablishmentCause {
+       EstablishmentCause_emergency    = 0,
+       EstablishmentCause_highPriorityAccess   = 1,
+       EstablishmentCause_mt_Access    = 2,
+       EstablishmentCause_mo_Signalling        = 3,
+       EstablishmentCause_mo_Data      = 4,
+       EstablishmentCause_mo_VoiceCall = 5,
+       EstablishmentCause_mo_VideoCall = 6,
+       EstablishmentCause_mo_SMS       = 7,
+       EstablishmentCause_mps_PriorityAccess   = 8,
+       EstablishmentCause_mcs_PriorityAccess   = 9,
+       EstablishmentCause_spare6       = 10,
+       EstablishmentCause_spare5       = 11,
+       EstablishmentCause_spare4       = 12,
+       EstablishmentCause_spare3       = 13,
+       EstablishmentCause_spare2       = 14,
+       EstablishmentCause_spare1       = 15
+} e_EstablishmentCause;
+
+/* EstablishmentCause */
+typedef long    EstablishmentCause_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_EstablishmentCause_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_EstablishmentCause;
+extern const asn_INTEGER_specifics_t asn_SPC_EstablishmentCause_specs_1;
+asn_struct_free_f EstablishmentCause_free;
+asn_struct_print_f EstablishmentCause_print;
+asn_constr_check_f EstablishmentCause_constraint;
+ber_type_decoder_f EstablishmentCause_decode_ber;
+der_type_encoder_f EstablishmentCause_encode_der;
+xer_type_decoder_f EstablishmentCause_decode_xer;
+xer_type_encoder_f EstablishmentCause_encode_xer;
+oer_type_decoder_f EstablishmentCause_decode_oer;
+oer_type_encoder_f EstablishmentCause_encode_oer;
+per_type_decoder_f EstablishmentCause_decode_uper;
+per_type_encoder_f EstablishmentCause_encode_uper;
+per_type_decoder_f EstablishmentCause_decode_aper;
+per_type_encoder_f EstablishmentCause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EstablishmentCause_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EventTriggerConfig.c b/src/codec_utils/RRC/EventTriggerConfig.c
new file mode 100644 (file)
index 0000000..ca19feb
--- /dev/null
@@ -0,0 +1,902 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EventTriggerConfig.h"
+
+#include "MeasReportQuantity.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.
+ */
+static int
+memb_maxReportCells_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 <= 8)) {
+               /* 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_maxNrofRS_IndexesToReport_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 <= 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_type_eventId_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eventId_constr_2 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 asn_oer_constraints_t asn_OER_type_reportAmount_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportAmount_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_reportAddNeighMeas_constr_55 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportAddNeighMeas_constr_55 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxReportCells_constr_51 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxReportCells_constr_51 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNrofRS_IndexesToReport_constr_53 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNrofRS_IndexesToReport_constr_53 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_eventA1_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA1, a1_Threshold),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a1-Threshold"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA1, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA1, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA1, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA1_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a1-Threshold */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* timeToTrigger */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA1_specs_3 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA1),
+       offsetof(struct EventTriggerConfig__eventId__eventA1, _asn_ctx),
+       asn_MAP_eventA1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA1_3 = {
+       "eventA1",
+       "eventA1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA1_tags_3,
+       sizeof(asn_DEF_eventA1_tags_3)
+               /sizeof(asn_DEF_eventA1_tags_3[0]) - 1, /* 1 */
+       asn_DEF_eventA1_tags_3, /* Same as above */
+       sizeof(asn_DEF_eventA1_tags_3)
+               /sizeof(asn_DEF_eventA1_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA1_3,
+       4,      /* Elements count */
+       &asn_SPC_eventA1_specs_3        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventA2_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA2, a2_Threshold),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a2-Threshold"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA2, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA2, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA2, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA2_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA2_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a2-Threshold */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* timeToTrigger */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA2_specs_8 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA2),
+       offsetof(struct EventTriggerConfig__eventId__eventA2, _asn_ctx),
+       asn_MAP_eventA2_tag2el_8,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA2_8 = {
+       "eventA2",
+       "eventA2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA2_tags_8,
+       sizeof(asn_DEF_eventA2_tags_8)
+               /sizeof(asn_DEF_eventA2_tags_8[0]) - 1, /* 1 */
+       asn_DEF_eventA2_tags_8, /* Same as above */
+       sizeof(asn_DEF_eventA2_tags_8)
+               /sizeof(asn_DEF_eventA2_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA2_8,
+       4,      /* Elements count */
+       &asn_SPC_eventA2_specs_8        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventA3_13[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA3, a3_Offset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantityOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a3-Offset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA3, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA3, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA3, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA3, useWhiteCellList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useWhiteCellList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA3_tags_13[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA3_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a3-Offset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeToTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* useWhiteCellList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA3_specs_13 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA3),
+       offsetof(struct EventTriggerConfig__eventId__eventA3, _asn_ctx),
+       asn_MAP_eventA3_tag2el_13,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA3_13 = {
+       "eventA3",
+       "eventA3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA3_tags_13,
+       sizeof(asn_DEF_eventA3_tags_13)
+               /sizeof(asn_DEF_eventA3_tags_13[0]) - 1, /* 1 */
+       asn_DEF_eventA3_tags_13,        /* Same as above */
+       sizeof(asn_DEF_eventA3_tags_13)
+               /sizeof(asn_DEF_eventA3_tags_13[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA3_13,
+       5,      /* Elements count */
+       &asn_SPC_eventA3_specs_13       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventA4_19[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA4, a4_Threshold),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a4-Threshold"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA4, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA4, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA4, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA4, useWhiteCellList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useWhiteCellList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA4_tags_19[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA4_tag2el_19[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a4-Threshold */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeToTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* useWhiteCellList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA4_specs_19 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA4),
+       offsetof(struct EventTriggerConfig__eventId__eventA4, _asn_ctx),
+       asn_MAP_eventA4_tag2el_19,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA4_19 = {
+       "eventA4",
+       "eventA4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA4_tags_19,
+       sizeof(asn_DEF_eventA4_tags_19)
+               /sizeof(asn_DEF_eventA4_tags_19[0]) - 1, /* 1 */
+       asn_DEF_eventA4_tags_19,        /* Same as above */
+       sizeof(asn_DEF_eventA4_tags_19)
+               /sizeof(asn_DEF_eventA4_tags_19[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA4_19,
+       5,      /* Elements count */
+       &asn_SPC_eventA4_specs_19       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventA5_25[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, a5_Threshold1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a5-Threshold1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, a5_Threshold2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a5-Threshold2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA5, useWhiteCellList),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useWhiteCellList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA5_tags_25[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA5_tag2el_25[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a5-Threshold1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* a5-Threshold2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* timeToTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* useWhiteCellList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA5_specs_25 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA5),
+       offsetof(struct EventTriggerConfig__eventId__eventA5, _asn_ctx),
+       asn_MAP_eventA5_tag2el_25,
+       6,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA5_25 = {
+       "eventA5",
+       "eventA5",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA5_tags_25,
+       sizeof(asn_DEF_eventA5_tags_25)
+               /sizeof(asn_DEF_eventA5_tags_25[0]) - 1, /* 1 */
+       asn_DEF_eventA5_tags_25,        /* Same as above */
+       sizeof(asn_DEF_eventA5_tags_25)
+               /sizeof(asn_DEF_eventA5_tags_25[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA5_25,
+       6,      /* Elements count */
+       &asn_SPC_eventA5_specs_25       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventA6_32[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA6, a6_Offset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantityOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "a6-Offset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA6, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA6, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA6, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig__eventId__eventA6, useWhiteCellList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useWhiteCellList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventA6_tags_32[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventA6_tag2el_32[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a6-Offset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeToTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* useWhiteCellList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventA6_specs_32 = {
+       sizeof(struct EventTriggerConfig__eventId__eventA6),
+       offsetof(struct EventTriggerConfig__eventId__eventA6, _asn_ctx),
+       asn_MAP_eventA6_tag2el_32,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventA6_32 = {
+       "eventA6",
+       "eventA6",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventA6_tags_32,
+       sizeof(asn_DEF_eventA6_tags_32)
+               /sizeof(asn_DEF_eventA6_tags_32[0]) - 1, /* 1 */
+       asn_DEF_eventA6_tags_32,        /* Same as above */
+       sizeof(asn_DEF_eventA6_tags_32)
+               /sizeof(asn_DEF_eventA6_tags_32[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventA6_32,
+       5,      /* Elements count */
+       &asn_SPC_eventA6_specs_32       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventId_2[] = {
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_eventA1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA1"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_eventA2_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA2"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA3),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_eventA3_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA3"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA4),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_eventA4_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA4"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA5),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_eventA5_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA5"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfig__eventId, choice.eventA6),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_eventA6_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA6"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventId_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventA1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventA2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eventA3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* eventA4 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* eventA5 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* eventA6 */
+};
+static asn_CHOICE_specifics_t asn_SPC_eventId_specs_2 = {
+       sizeof(struct EventTriggerConfig__eventId),
+       offsetof(struct EventTriggerConfig__eventId, _asn_ctx),
+       offsetof(struct EventTriggerConfig__eventId, present),
+       sizeof(((struct EventTriggerConfig__eventId *)0)->present),
+       asn_MAP_eventId_tag2el_2,
+       6,      /* Count of tags in the map */
+       0, 0,
+       6       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventId_2 = {
+       "eventId",
+       "eventId",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_eventId_constr_2, &asn_PER_type_eventId_constr_2, CHOICE_constraint },
+       asn_MBR_eventId_2,
+       6,      /* Elements count */
+       &asn_SPC_eventId_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportAmount_value2enum_41[] = {
+       { 0,    2,      "r1" },
+       { 1,    2,      "r2" },
+       { 2,    2,      "r4" },
+       { 3,    2,      "r8" },
+       { 4,    3,      "r16" },
+       { 5,    3,      "r32" },
+       { 6,    3,      "r64" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_reportAmount_enum2value_41[] = {
+       7,      /* infinity(7) */
+       0,      /* r1(0) */
+       4,      /* r16(4) */
+       1,      /* r2(1) */
+       5,      /* r32(5) */
+       2,      /* r4(2) */
+       6,      /* r64(6) */
+       3       /* r8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportAmount_specs_41 = {
+       asn_MAP_reportAmount_value2enum_41,     /* "tag" => N; sorted by tag */
+       asn_MAP_reportAmount_enum2value_41,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportAmount_tags_41[] = {
+       (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_reportAmount_41 = {
+       "reportAmount",
+       "reportAmount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportAmount_tags_41,
+       sizeof(asn_DEF_reportAmount_tags_41)
+               /sizeof(asn_DEF_reportAmount_tags_41[0]) - 1, /* 1 */
+       asn_DEF_reportAmount_tags_41,   /* Same as above */
+       sizeof(asn_DEF_reportAmount_tags_41)
+               /sizeof(asn_DEF_reportAmount_tags_41[0]), /* 2 */
+       { &asn_OER_type_reportAmount_constr_41, &asn_PER_type_reportAmount_constr_41, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportAmount_specs_41  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportAddNeighMeas_value2enum_55[] = {
+       { 0,    5,      "setup" }
+};
+static const unsigned int asn_MAP_reportAddNeighMeas_enum2value_55[] = {
+       0       /* setup(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportAddNeighMeas_specs_55 = {
+       asn_MAP_reportAddNeighMeas_value2enum_55,       /* "tag" => N; sorted by tag */
+       asn_MAP_reportAddNeighMeas_enum2value_55,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportAddNeighMeas_tags_55[] = {
+       (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_reportAddNeighMeas_55 = {
+       "reportAddNeighMeas",
+       "reportAddNeighMeas",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportAddNeighMeas_tags_55,
+       sizeof(asn_DEF_reportAddNeighMeas_tags_55)
+               /sizeof(asn_DEF_reportAddNeighMeas_tags_55[0]) - 1, /* 1 */
+       asn_DEF_reportAddNeighMeas_tags_55,     /* Same as above */
+       sizeof(asn_DEF_reportAddNeighMeas_tags_55)
+               /sizeof(asn_DEF_reportAddNeighMeas_tags_55[0]), /* 2 */
+       { &asn_OER_type_reportAddNeighMeas_constr_55, &asn_PER_type_reportAddNeighMeas_constr_55, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportAddNeighMeas_specs_55    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTriggerConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, eventId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_eventId_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, rsType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NR_RS_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, reportInterval),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportInterval,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportInterval"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, reportAmount),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportAmount_41,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportAmount"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, reportQuantityCell),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantityCell"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, maxReportCells),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxReportCells_constr_51, &asn_PER_memb_maxReportCells_constr_51,  memb_maxReportCells_constraint_1 },
+               0, 0, /* No default value */
+               "maxReportCells"
+               },
+       { ATF_POINTER, 2, offsetof(struct EventTriggerConfig, reportQuantityRS_Indexes),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantityRS-Indexes"
+               },
+       { ATF_POINTER, 1, offsetof(struct EventTriggerConfig, maxNrofRS_IndexesToReport),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNrofRS_IndexesToReport_constr_53, &asn_PER_memb_maxNrofRS_IndexesToReport_constr_53,  memb_maxNrofRS_IndexesToReport_constraint_1 },
+               0, 0, /* No default value */
+               "maxNrofRS-IndexesToReport"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfig, includeBeamMeasurements),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "includeBeamMeasurements"
+               },
+       { ATF_POINTER, 1, offsetof(struct EventTriggerConfig, reportAddNeighMeas),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportAddNeighMeas_55,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportAddNeighMeas"
+               },
+};
+static const int asn_MAP_EventTriggerConfig_oms_1[] = { 6, 7, 9 };
+static const ber_tlv_tag_t asn_DEF_EventTriggerConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTriggerConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportInterval */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reportAmount */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* reportQuantityCell */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maxReportCells */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* reportQuantityRS-Indexes */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* maxNrofRS-IndexesToReport */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* includeBeamMeasurements */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* reportAddNeighMeas */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTriggerConfig_specs_1 = {
+       sizeof(struct EventTriggerConfig),
+       offsetof(struct EventTriggerConfig, _asn_ctx),
+       asn_MAP_EventTriggerConfig_tag2el_1,
+       10,     /* Count of tags in the map */
+       asn_MAP_EventTriggerConfig_oms_1,       /* Optional members */
+       3, 0,   /* Root/Additions */
+       10,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_EventTriggerConfig = {
+       "EventTriggerConfig",
+       "EventTriggerConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EventTriggerConfig_tags_1,
+       sizeof(asn_DEF_EventTriggerConfig_tags_1)
+               /sizeof(asn_DEF_EventTriggerConfig_tags_1[0]), /* 1 */
+       asn_DEF_EventTriggerConfig_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EventTriggerConfig_tags_1)
+               /sizeof(asn_DEF_EventTriggerConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EventTriggerConfig_1,
+       10,     /* Elements count */
+       &asn_SPC_EventTriggerConfig_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EventTriggerConfig.h b/src/codec_utils/RRC/EventTriggerConfig.h
new file mode 100644 (file)
index 0000000..d2ab19d
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EventTriggerConfig_H_
+#define        _EventTriggerConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NR-RS-Type.h"
+#include "ReportInterval.h"
+#include <NativeEnumerated.h>
+#include "MeasReportQuantity.h"
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include "MeasTriggerQuantity.h"
+#include "Hysteresis.h"
+#include "TimeToTrigger.h"
+#include <constr_SEQUENCE.h>
+#include "MeasTriggerQuantityOffset.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EventTriggerConfig__eventId_PR {
+       EventTriggerConfig__eventId_PR_NOTHING, /* No components present */
+       EventTriggerConfig__eventId_PR_eventA1,
+       EventTriggerConfig__eventId_PR_eventA2,
+       EventTriggerConfig__eventId_PR_eventA3,
+       EventTriggerConfig__eventId_PR_eventA4,
+       EventTriggerConfig__eventId_PR_eventA5,
+       EventTriggerConfig__eventId_PR_eventA6
+       /* Extensions may appear below */
+       
+} EventTriggerConfig__eventId_PR;
+typedef enum EventTriggerConfig__reportAmount {
+       EventTriggerConfig__reportAmount_r1     = 0,
+       EventTriggerConfig__reportAmount_r2     = 1,
+       EventTriggerConfig__reportAmount_r4     = 2,
+       EventTriggerConfig__reportAmount_r8     = 3,
+       EventTriggerConfig__reportAmount_r16    = 4,
+       EventTriggerConfig__reportAmount_r32    = 5,
+       EventTriggerConfig__reportAmount_r64    = 6,
+       EventTriggerConfig__reportAmount_infinity       = 7
+} e_EventTriggerConfig__reportAmount;
+typedef enum EventTriggerConfig__reportAddNeighMeas {
+       EventTriggerConfig__reportAddNeighMeas_setup    = 0
+} e_EventTriggerConfig__reportAddNeighMeas;
+
+/* Forward declarations */
+struct MeasReportQuantity;
+
+/* EventTriggerConfig */
+typedef struct EventTriggerConfig {
+       struct EventTriggerConfig__eventId {
+               EventTriggerConfig__eventId_PR present;
+               union EventTriggerConfig__eventId_u {
+                       struct EventTriggerConfig__eventId__eventA1 {
+                               MeasTriggerQuantity_t    a1_Threshold;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA1;
+                       struct EventTriggerConfig__eventId__eventA2 {
+                               MeasTriggerQuantity_t    a2_Threshold;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA2;
+                       struct EventTriggerConfig__eventId__eventA3 {
+                               MeasTriggerQuantityOffset_t      a3_Offset;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               BOOLEAN_t        useWhiteCellList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA3;
+                       struct EventTriggerConfig__eventId__eventA4 {
+                               MeasTriggerQuantity_t    a4_Threshold;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               BOOLEAN_t        useWhiteCellList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA4;
+                       struct EventTriggerConfig__eventId__eventA5 {
+                               MeasTriggerQuantity_t    a5_Threshold1;
+                               MeasTriggerQuantity_t    a5_Threshold2;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               BOOLEAN_t        useWhiteCellList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA5;
+                       struct EventTriggerConfig__eventId__eventA6 {
+                               MeasTriggerQuantityOffset_t      a6_Offset;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               BOOLEAN_t        useWhiteCellList;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventA6;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } eventId;
+       NR_RS_Type_t     rsType;
+       ReportInterval_t         reportInterval;
+       long     reportAmount;
+       MeasReportQuantity_t     reportQuantityCell;
+       long     maxReportCells;
+       struct MeasReportQuantity       *reportQuantityRS_Indexes;      /* OPTIONAL */
+       long    *maxNrofRS_IndexesToReport;     /* OPTIONAL */
+       BOOLEAN_t        includeBeamMeasurements;
+       long    *reportAddNeighMeas;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EventTriggerConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportAmount_41;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportAddNeighMeas_55; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EventTriggerConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_EventTriggerConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_EventTriggerConfig_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EventTriggerConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/EventTriggerConfigInterRAT.c b/src/codec_utils/RRC/EventTriggerConfigInterRAT.c
new file mode 100644 (file)
index 0000000..2fda1ea
--- /dev/null
@@ -0,0 +1,407 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "EventTriggerConfigInterRAT.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_maxReportCells_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 <= 8)) {
+               /* 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_eventId_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eventId_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_oer_constraints_t asn_OER_type_reportAmount_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportAmount_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxReportCells_constr_29 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxReportCells_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_eventB1_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB1, b1_ThresholdEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantityEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "b1-ThresholdEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB1, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB1, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB1, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventB1_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventB1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* b1-ThresholdEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* timeToTrigger */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventB1_specs_3 = {
+       sizeof(struct EventTriggerConfigInterRAT__eventId__eventB1),
+       offsetof(struct EventTriggerConfigInterRAT__eventId__eventB1, _asn_ctx),
+       asn_MAP_eventB1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       4,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventB1_3 = {
+       "eventB1",
+       "eventB1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventB1_tags_3,
+       sizeof(asn_DEF_eventB1_tags_3)
+               /sizeof(asn_DEF_eventB1_tags_3[0]) - 1, /* 1 */
+       asn_DEF_eventB1_tags_3, /* Same as above */
+       sizeof(asn_DEF_eventB1_tags_3)
+               /sizeof(asn_DEF_eventB1_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventB1_3,
+       4,      /* Elements count */
+       &asn_SPC_eventB1_specs_3        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventB2_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, b2_Threshold1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "b2-Threshold1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, b2_Threshold2EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_MeasTriggerQuantityEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "b2-Threshold2EUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, reportOnLeave),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportOnLeave"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, hysteresis),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Hysteresis,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "hysteresis"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, timeToTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeToTrigger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeToTrigger"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eventB2_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventB2_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* b2-Threshold1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* b2-Threshold2EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportOnLeave */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* hysteresis */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* timeToTrigger */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eventB2_specs_9 = {
+       sizeof(struct EventTriggerConfigInterRAT__eventId__eventB2),
+       offsetof(struct EventTriggerConfigInterRAT__eventId__eventB2, _asn_ctx),
+       asn_MAP_eventB2_tag2el_9,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       5,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eventB2_9 = {
+       "eventB2",
+       "eventB2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eventB2_tags_9,
+       sizeof(asn_DEF_eventB2_tags_9)
+               /sizeof(asn_DEF_eventB2_tags_9[0]) - 1, /* 1 */
+       asn_DEF_eventB2_tags_9, /* Same as above */
+       sizeof(asn_DEF_eventB2_tags_9)
+               /sizeof(asn_DEF_eventB2_tags_9[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eventB2_9,
+       5,      /* Elements count */
+       &asn_SPC_eventB2_specs_9        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_eventId_2[] = {
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfigInterRAT__eventId, choice.eventB1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_eventB1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventB1"
+               },
+       { ATF_POINTER, 0, offsetof(struct EventTriggerConfigInterRAT__eventId, choice.eventB2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_eventB2_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventB2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_eventId_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventB1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eventB2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_eventId_specs_2 = {
+       sizeof(struct EventTriggerConfigInterRAT__eventId),
+       offsetof(struct EventTriggerConfigInterRAT__eventId, _asn_ctx),
+       offsetof(struct EventTriggerConfigInterRAT__eventId, present),
+       sizeof(((struct EventTriggerConfigInterRAT__eventId *)0)->present),
+       asn_MAP_eventId_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_eventId_2 = {
+       "eventId",
+       "eventId",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_eventId_constr_2, &asn_PER_type_eventId_constr_2, CHOICE_constraint },
+       asn_MBR_eventId_2,
+       2,      /* Elements count */
+       &asn_SPC_eventId_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reportAmount_value2enum_19[] = {
+       { 0,    2,      "r1" },
+       { 1,    2,      "r2" },
+       { 2,    2,      "r4" },
+       { 3,    2,      "r8" },
+       { 4,    3,      "r16" },
+       { 5,    3,      "r32" },
+       { 6,    3,      "r64" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_reportAmount_enum2value_19[] = {
+       7,      /* infinity(7) */
+       0,      /* r1(0) */
+       4,      /* r16(4) */
+       1,      /* r2(1) */
+       5,      /* r32(5) */
+       2,      /* r4(2) */
+       6,      /* r64(6) */
+       3       /* r8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportAmount_specs_19 = {
+       asn_MAP_reportAmount_value2enum_19,     /* "tag" => N; sorted by tag */
+       asn_MAP_reportAmount_enum2value_19,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportAmount_tags_19[] = {
+       (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_reportAmount_19 = {
+       "reportAmount",
+       "reportAmount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportAmount_tags_19,
+       sizeof(asn_DEF_reportAmount_tags_19)
+               /sizeof(asn_DEF_reportAmount_tags_19[0]) - 1, /* 1 */
+       asn_DEF_reportAmount_tags_19,   /* Same as above */
+       sizeof(asn_DEF_reportAmount_tags_19)
+               /sizeof(asn_DEF_reportAmount_tags_19[0]), /* 2 */
+       { &asn_OER_type_reportAmount_constr_19, &asn_PER_type_reportAmount_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportAmount_specs_19  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_EventTriggerConfigInterRAT_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, eventId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_eventId_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, rsType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NR_RS_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, reportInterval),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportInterval,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportInterval"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, reportAmount),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportAmount_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportAmount"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, reportQuantity),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EventTriggerConfigInterRAT, maxReportCells),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxReportCells_constr_29, &asn_PER_memb_maxReportCells_constr_29,  memb_maxReportCells_constraint_1 },
+               0, 0, /* No default value */
+               "maxReportCells"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_EventTriggerConfigInterRAT_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_EventTriggerConfigInterRAT_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportInterval */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reportAmount */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* reportQuantity */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* maxReportCells */
+};
+asn_SEQUENCE_specifics_t asn_SPC_EventTriggerConfigInterRAT_specs_1 = {
+       sizeof(struct EventTriggerConfigInterRAT),
+       offsetof(struct EventTriggerConfigInterRAT, _asn_ctx),
+       asn_MAP_EventTriggerConfigInterRAT_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_EventTriggerConfigInterRAT = {
+       "EventTriggerConfigInterRAT",
+       "EventTriggerConfigInterRAT",
+       &asn_OP_SEQUENCE,
+       asn_DEF_EventTriggerConfigInterRAT_tags_1,
+       sizeof(asn_DEF_EventTriggerConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_EventTriggerConfigInterRAT_tags_1[0]), /* 1 */
+       asn_DEF_EventTriggerConfigInterRAT_tags_1,      /* Same as above */
+       sizeof(asn_DEF_EventTriggerConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_EventTriggerConfigInterRAT_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_EventTriggerConfigInterRAT_1,
+       6,      /* Elements count */
+       &asn_SPC_EventTriggerConfigInterRAT_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/EventTriggerConfigInterRAT.h b/src/codec_utils/RRC/EventTriggerConfigInterRAT.h
new file mode 100644 (file)
index 0000000..6cb16f7
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _EventTriggerConfigInterRAT_H_
+#define        _EventTriggerConfigInterRAT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NR-RS-Type.h"
+#include "ReportInterval.h"
+#include <NativeEnumerated.h>
+#include "MeasReportQuantity.h"
+#include <NativeInteger.h>
+#include "MeasTriggerQuantityEUTRA.h"
+#include <BOOLEAN.h>
+#include "Hysteresis.h"
+#include "TimeToTrigger.h"
+#include <constr_SEQUENCE.h>
+#include "MeasTriggerQuantity.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum EventTriggerConfigInterRAT__eventId_PR {
+       EventTriggerConfigInterRAT__eventId_PR_NOTHING, /* No components present */
+       EventTriggerConfigInterRAT__eventId_PR_eventB1,
+       EventTriggerConfigInterRAT__eventId_PR_eventB2
+       /* Extensions may appear below */
+       
+} EventTriggerConfigInterRAT__eventId_PR;
+typedef enum EventTriggerConfigInterRAT__reportAmount {
+       EventTriggerConfigInterRAT__reportAmount_r1     = 0,
+       EventTriggerConfigInterRAT__reportAmount_r2     = 1,
+       EventTriggerConfigInterRAT__reportAmount_r4     = 2,
+       EventTriggerConfigInterRAT__reportAmount_r8     = 3,
+       EventTriggerConfigInterRAT__reportAmount_r16    = 4,
+       EventTriggerConfigInterRAT__reportAmount_r32    = 5,
+       EventTriggerConfigInterRAT__reportAmount_r64    = 6,
+       EventTriggerConfigInterRAT__reportAmount_infinity       = 7
+} e_EventTriggerConfigInterRAT__reportAmount;
+
+/* EventTriggerConfigInterRAT */
+typedef struct EventTriggerConfigInterRAT {
+       struct EventTriggerConfigInterRAT__eventId {
+               EventTriggerConfigInterRAT__eventId_PR present;
+               union EventTriggerConfigInterRAT__eventId_u {
+                       struct EventTriggerConfigInterRAT__eventId__eventB1 {
+                               MeasTriggerQuantityEUTRA_t       b1_ThresholdEUTRA;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventB1;
+                       struct EventTriggerConfigInterRAT__eventId__eventB2 {
+                               MeasTriggerQuantity_t    b2_Threshold1;
+                               MeasTriggerQuantityEUTRA_t       b2_Threshold2EUTRA;
+                               BOOLEAN_t        reportOnLeave;
+                               Hysteresis_t     hysteresis;
+                               TimeToTrigger_t  timeToTrigger;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *eventB2;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } eventId;
+       NR_RS_Type_t     rsType;
+       ReportInterval_t         reportInterval;
+       long     reportAmount;
+       MeasReportQuantity_t     reportQuantity;
+       long     maxReportCells;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} EventTriggerConfigInterRAT_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportAmount_19;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_EventTriggerConfigInterRAT;
+extern asn_SEQUENCE_specifics_t asn_SPC_EventTriggerConfigInterRAT_specs_1;
+extern asn_TYPE_member_t asn_MBR_EventTriggerConfigInterRAT_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EventTriggerConfigInterRAT_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FR-Info.c b/src/codec_utils/RRC/FR-Info.c
new file mode 100644 (file)
index 0000000..920305c
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FR-Info.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_fr_Type_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fr_Type_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_fr_Type_value2enum_3[] = {
+       { 0,    3,      "fr1" },
+       { 1,    3,      "fr2" }
+};
+static const unsigned int asn_MAP_fr_Type_enum2value_3[] = {
+       0,      /* fr1(0) */
+       1       /* fr2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fr_Type_specs_3 = {
+       asn_MAP_fr_Type_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_fr_Type_enum2value_3,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fr_Type_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_fr_Type_3 = {
+       "fr-Type",
+       "fr-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fr_Type_tags_3,
+       sizeof(asn_DEF_fr_Type_tags_3)
+               /sizeof(asn_DEF_fr_Type_tags_3[0]) - 1, /* 1 */
+       asn_DEF_fr_Type_tags_3, /* Same as above */
+       sizeof(asn_DEF_fr_Type_tags_3)
+               /sizeof(asn_DEF_fr_Type_tags_3[0]), /* 2 */
+       { &asn_OER_type_fr_Type_constr_3, &asn_PER_type_fr_Type_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fr_Type_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FR_Info_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FR_Info, servCellIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servCellIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FR_Info, fr_Type),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fr_Type_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr-Type"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FR_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FR_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servCellIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fr-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FR_Info_specs_1 = {
+       sizeof(struct FR_Info),
+       offsetof(struct FR_Info, _asn_ctx),
+       asn_MAP_FR_Info_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FR_Info = {
+       "FR-Info",
+       "FR-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FR_Info_tags_1,
+       sizeof(asn_DEF_FR_Info_tags_1)
+               /sizeof(asn_DEF_FR_Info_tags_1[0]), /* 1 */
+       asn_DEF_FR_Info_tags_1, /* Same as above */
+       sizeof(asn_DEF_FR_Info_tags_1)
+               /sizeof(asn_DEF_FR_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FR_Info_1,
+       2,      /* Elements count */
+       &asn_SPC_FR_Info_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FR-Info.h b/src/codec_utils/RRC/FR-Info.h
new file mode 100644 (file)
index 0000000..6c4f32f
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FR_Info_H_
+#define        _FR_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FR_Info__fr_Type {
+       FR_Info__fr_Type_fr1    = 0,
+       FR_Info__fr_Type_fr2    = 1
+} e_FR_Info__fr_Type;
+
+/* FR-Info */
+typedef struct FR_Info {
+       ServCellIndex_t  servCellIndex;
+       long     fr_Type;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FR_Info_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_fr_Type_3;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FR_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_FR_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_FR_Info_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FR_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FR-InfoList.c b/src/codec_utils/RRC/FR-InfoList.c
new file mode 100644 (file)
index 0000000..9086766
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FR-InfoList.h"
+
+#include "FR-Info.h"
+static asn_oer_constraints_t asn_OER_type_FR_InfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+asn_per_constraints_t asn_PER_type_FR_InfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FR_InfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FR_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FR_InfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FR_InfoList_specs_1 = {
+       sizeof(struct FR_InfoList),
+       offsetof(struct FR_InfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_FR_InfoList = {
+       "FR-InfoList",
+       "FR-InfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FR_InfoList_tags_1,
+       sizeof(asn_DEF_FR_InfoList_tags_1)
+               /sizeof(asn_DEF_FR_InfoList_tags_1[0]), /* 1 */
+       asn_DEF_FR_InfoList_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FR_InfoList_tags_1)
+               /sizeof(asn_DEF_FR_InfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_FR_InfoList_constr_1, &asn_PER_type_FR_InfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FR_InfoList_1,
+       1,      /* Single element */
+       &asn_SPC_FR_InfoList_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FR-InfoList.h b/src/codec_utils/RRC/FR-InfoList.h
new file mode 100644 (file)
index 0000000..1adffb5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FR_InfoList_H_
+#define        _FR_InfoList_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 FR_Info;
+
+/* FR-InfoList */
+typedef struct FR_InfoList {
+       A_SEQUENCE_OF(struct FR_Info) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FR_InfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FR_InfoList;
+extern asn_SET_OF_specifics_t asn_SPC_FR_InfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_FR_InfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_FR_InfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FR_InfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FailureInfoRLC-Bearer.c b/src/codec_utils/RRC/FailureInfoRLC-Bearer.c
new file mode 100644 (file)
index 0000000..ccb9ca5
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FailureInfoRLC-Bearer.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_failureType_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_failureType_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_failureType_value2enum_4[] = {
+       { 0,    11,     "duplication" },
+       { 1,    6,      "spare3" },
+       { 2,    6,      "spare2" },
+       { 3,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_failureType_enum2value_4[] = {
+       0,      /* duplication(0) */
+       3,      /* spare1(3) */
+       2,      /* spare2(2) */
+       1       /* spare3(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_failureType_specs_4 = {
+       asn_MAP_failureType_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_failureType_enum2value_4,       /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_failureType_tags_4[] = {
+       (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_failureType_4 = {
+       "failureType",
+       "failureType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_failureType_tags_4,
+       sizeof(asn_DEF_failureType_tags_4)
+               /sizeof(asn_DEF_failureType_tags_4[0]) - 1, /* 1 */
+       asn_DEF_failureType_tags_4,     /* Same as above */
+       sizeof(asn_DEF_failureType_tags_4)
+               /sizeof(asn_DEF_failureType_tags_4[0]), /* 2 */
+       { &asn_OER_type_failureType_constr_4, &asn_PER_type_failureType_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_failureType_specs_4    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FailureInfoRLC_Bearer_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FailureInfoRLC_Bearer, cellGroupId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellGroupId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellGroupId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FailureInfoRLC_Bearer, logicalChannelIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalChannelIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FailureInfoRLC_Bearer, failureType),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_failureType_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "failureType"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FailureInfoRLC_Bearer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FailureInfoRLC_Bearer_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellGroupId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* logicalChannelIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* failureType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FailureInfoRLC_Bearer_specs_1 = {
+       sizeof(struct FailureInfoRLC_Bearer),
+       offsetof(struct FailureInfoRLC_Bearer, _asn_ctx),
+       asn_MAP_FailureInfoRLC_Bearer_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FailureInfoRLC_Bearer = {
+       "FailureInfoRLC-Bearer",
+       "FailureInfoRLC-Bearer",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FailureInfoRLC_Bearer_tags_1,
+       sizeof(asn_DEF_FailureInfoRLC_Bearer_tags_1)
+               /sizeof(asn_DEF_FailureInfoRLC_Bearer_tags_1[0]), /* 1 */
+       asn_DEF_FailureInfoRLC_Bearer_tags_1,   /* Same as above */
+       sizeof(asn_DEF_FailureInfoRLC_Bearer_tags_1)
+               /sizeof(asn_DEF_FailureInfoRLC_Bearer_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FailureInfoRLC_Bearer_1,
+       3,      /* Elements count */
+       &asn_SPC_FailureInfoRLC_Bearer_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FailureInfoRLC-Bearer.h b/src/codec_utils/RRC/FailureInfoRLC-Bearer.h
new file mode 100644 (file)
index 0000000..e1961ff
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FailureInfoRLC_Bearer_H_
+#define        _FailureInfoRLC_Bearer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellGroupId.h"
+#include "LogicalChannelIdentity.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FailureInfoRLC_Bearer__failureType {
+       FailureInfoRLC_Bearer__failureType_duplication  = 0,
+       FailureInfoRLC_Bearer__failureType_spare3       = 1,
+       FailureInfoRLC_Bearer__failureType_spare2       = 2,
+       FailureInfoRLC_Bearer__failureType_spare1       = 3
+} e_FailureInfoRLC_Bearer__failureType;
+
+/* FailureInfoRLC-Bearer */
+typedef struct FailureInfoRLC_Bearer {
+       CellGroupId_t    cellGroupId;
+       LogicalChannelIdentity_t         logicalChannelIdentity;
+       long     failureType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FailureInfoRLC_Bearer_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_failureType_4; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FailureInfoRLC_Bearer;
+extern asn_SEQUENCE_specifics_t asn_SPC_FailureInfoRLC_Bearer_specs_1;
+extern asn_TYPE_member_t asn_MBR_FailureInfoRLC_Bearer_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FailureInfoRLC_Bearer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FailureInformation-IEs.c b/src/codec_utils/RRC/FailureInformation-IEs.c
new file mode 100644 (file)
index 0000000..a144152
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FailureInformation-IEs.h"
+
+#include "FailureInfoRLC-Bearer.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct FailureInformation_IEs__nonCriticalExtension),
+       offsetof(struct FailureInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FailureInformation_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct FailureInformation_IEs, failureInfoRLC_Bearer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FailureInfoRLC_Bearer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "failureInfoRLC-Bearer"
+               },
+       { ATF_POINTER, 2, offsetof(struct FailureInformation_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct FailureInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_FailureInformation_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_FailureInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FailureInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* failureInfoRLC-Bearer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FailureInformation_IEs_specs_1 = {
+       sizeof(struct FailureInformation_IEs),
+       offsetof(struct FailureInformation_IEs, _asn_ctx),
+       asn_MAP_FailureInformation_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_FailureInformation_IEs_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FailureInformation_IEs = {
+       "FailureInformation-IEs",
+       "FailureInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FailureInformation_IEs_tags_1,
+       sizeof(asn_DEF_FailureInformation_IEs_tags_1)
+               /sizeof(asn_DEF_FailureInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_FailureInformation_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_FailureInformation_IEs_tags_1)
+               /sizeof(asn_DEF_FailureInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FailureInformation_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_FailureInformation_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FailureInformation-IEs.h b/src/codec_utils/RRC/FailureInformation-IEs.h
new file mode 100644 (file)
index 0000000..5e1563d
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FailureInformation_IEs_H_
+#define        _FailureInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FailureInfoRLC_Bearer;
+
+/* FailureInformation-IEs */
+typedef struct FailureInformation_IEs {
+       struct FailureInfoRLC_Bearer    *failureInfoRLC_Bearer; /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct FailureInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FailureInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FailureInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_FailureInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_FailureInformation_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FailureInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FailureInformation.c b/src/codec_utils/RRC/FailureInformation.c
new file mode 100644 (file)
index 0000000..1b3e016
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FailureInformation.h"
+
+#include "FailureInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct FailureInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct FailureInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct FailureInformation__criticalExtensions, choice.failureInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FailureInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "failureInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct FailureInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* failureInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct FailureInformation__criticalExtensions),
+       offsetof(struct FailureInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct FailureInformation__criticalExtensions, present),
+       sizeof(((struct FailureInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FailureInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FailureInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FailureInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FailureInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FailureInformation_specs_1 = {
+       sizeof(struct FailureInformation),
+       offsetof(struct FailureInformation, _asn_ctx),
+       asn_MAP_FailureInformation_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_FailureInformation = {
+       "FailureInformation",
+       "FailureInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FailureInformation_tags_1,
+       sizeof(asn_DEF_FailureInformation_tags_1)
+               /sizeof(asn_DEF_FailureInformation_tags_1[0]), /* 1 */
+       asn_DEF_FailureInformation_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FailureInformation_tags_1)
+               /sizeof(asn_DEF_FailureInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FailureInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_FailureInformation_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FailureInformation.h b/src/codec_utils/RRC/FailureInformation.h
new file mode 100644 (file)
index 0000000..bf1591e
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FailureInformation_H_
+#define        _FailureInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FailureInformation__criticalExtensions_PR {
+       FailureInformation__criticalExtensions_PR_NOTHING,      /* No components present */
+       FailureInformation__criticalExtensions_PR_failureInformation,
+       FailureInformation__criticalExtensions_PR_criticalExtensionsFuture
+} FailureInformation__criticalExtensions_PR;
+
+/* Forward declarations */
+struct FailureInformation_IEs;
+
+/* FailureInformation */
+typedef struct FailureInformation {
+       struct FailureInformation__criticalExtensions {
+               FailureInformation__criticalExtensions_PR present;
+               union FailureInformation__criticalExtensions_u {
+                       struct FailureInformation_IEs   *failureInformation;
+                       struct FailureInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FailureInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FailureInformation;
+extern asn_SEQUENCE_specifics_t asn_SPC_FailureInformation_specs_1;
+extern asn_TYPE_member_t asn_MBR_FailureInformation_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FailureInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSet.c b/src/codec_utils/RRC/FeatureSet.c
new file mode 100644 (file)
index 0000000..a7c77f8
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSet.h"
+
+static asn_oer_constraints_t asn_OER_type_FeatureSet_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSet_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eutra_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSet__eutra, downlinkSetEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetEUTRA_DownlinkId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkSetEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSet__eutra, uplinkSetEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetEUTRA_UplinkId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkSetEUTRA"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_eutra_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_eutra_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* downlinkSetEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkSetEUTRA */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_eutra_specs_2 = {
+       sizeof(struct FeatureSet__eutra),
+       offsetof(struct FeatureSet__eutra, _asn_ctx),
+       asn_MAP_eutra_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_eutra_2 = {
+       "eutra",
+       "eutra",
+       &asn_OP_SEQUENCE,
+       asn_DEF_eutra_tags_2,
+       sizeof(asn_DEF_eutra_tags_2)
+               /sizeof(asn_DEF_eutra_tags_2[0]) - 1, /* 1 */
+       asn_DEF_eutra_tags_2,   /* Same as above */
+       sizeof(asn_DEF_eutra_tags_2)
+               /sizeof(asn_DEF_eutra_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_eutra_2,
+       2,      /* Elements count */
+       &asn_SPC_eutra_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nr_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSet__nr, downlinkSetNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetDownlinkId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkSetNR"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSet__nr, uplinkSetNR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSetUplinkId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkSetNR"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nr_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nr_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* downlinkSetNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkSetNR */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nr_specs_5 = {
+       sizeof(struct FeatureSet__nr),
+       offsetof(struct FeatureSet__nr, _asn_ctx),
+       asn_MAP_nr_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nr_5 = {
+       "nr",
+       "nr",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nr_tags_5,
+       sizeof(asn_DEF_nr_tags_5)
+               /sizeof(asn_DEF_nr_tags_5[0]) - 1, /* 1 */
+       asn_DEF_nr_tags_5,      /* Same as above */
+       sizeof(asn_DEF_nr_tags_5)
+               /sizeof(asn_DEF_nr_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nr_5,
+       2,      /* Elements count */
+       &asn_SPC_nr_specs_5     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSet_1[] = {
+       { ATF_POINTER, 0, offsetof(struct FeatureSet, choice.eutra),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_eutra_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra"
+               },
+       { ATF_POINTER, 0, offsetof(struct FeatureSet, choice.nr),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nr_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nr"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nr */
+};
+asn_CHOICE_specifics_t asn_SPC_FeatureSet_specs_1 = {
+       sizeof(struct FeatureSet),
+       offsetof(struct FeatureSet, _asn_ctx),
+       offsetof(struct FeatureSet, present),
+       sizeof(((struct FeatureSet *)0)->present),
+       asn_MAP_FeatureSet_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSet = {
+       "FeatureSet",
+       "FeatureSet",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_FeatureSet_constr_1, &asn_PER_type_FeatureSet_constr_1, CHOICE_constraint },
+       asn_MBR_FeatureSet_1,
+       2,      /* Elements count */
+       &asn_SPC_FeatureSet_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSet.h b/src/codec_utils/RRC/FeatureSet.h
new file mode 100644 (file)
index 0000000..6e75063
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSet_H_
+#define        _FeatureSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FeatureSetEUTRA-DownlinkId.h"
+#include "FeatureSetEUTRA-UplinkId.h"
+#include <constr_SEQUENCE.h>
+#include "FeatureSetDownlinkId.h"
+#include "FeatureSetUplinkId.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FeatureSet_PR {
+       FeatureSet_PR_NOTHING,  /* No components present */
+       FeatureSet_PR_eutra,
+       FeatureSet_PR_nr
+} FeatureSet_PR;
+
+/* FeatureSet */
+typedef struct FeatureSet {
+       FeatureSet_PR present;
+       union FeatureSet_u {
+               struct FeatureSet__eutra {
+                       FeatureSetEUTRA_DownlinkId_t     downlinkSetEUTRA;
+                       FeatureSetEUTRA_UplinkId_t       uplinkSetEUTRA;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *eutra;
+               struct FeatureSet__nr {
+                       FeatureSetDownlinkId_t   downlinkSetNR;
+                       FeatureSetUplinkId_t     uplinkSetNR;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *nr;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSet;
+extern asn_CHOICE_specifics_t asn_SPC_FeatureSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSet_1[2];
+extern asn_per_constraints_t asn_PER_type_FeatureSet_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetCombination.c b/src/codec_utils/RRC/FeatureSetCombination.c
new file mode 100644 (file)
index 0000000..2d1959e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetCombination.h"
+
+#include "FeatureSetsPerBand.h"
+static asn_oer_constraints_t asn_OER_type_FeatureSetCombination_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_FeatureSetCombination_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FeatureSetCombination_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetsPerBand,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetCombination_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FeatureSetCombination_specs_1 = {
+       sizeof(struct FeatureSetCombination),
+       offsetof(struct FeatureSetCombination, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetCombination = {
+       "FeatureSetCombination",
+       "FeatureSetCombination",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FeatureSetCombination_tags_1,
+       sizeof(asn_DEF_FeatureSetCombination_tags_1)
+               /sizeof(asn_DEF_FeatureSetCombination_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetCombination_tags_1,   /* Same as above */
+       sizeof(asn_DEF_FeatureSetCombination_tags_1)
+               /sizeof(asn_DEF_FeatureSetCombination_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetCombination_constr_1, &asn_PER_type_FeatureSetCombination_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FeatureSetCombination_1,
+       1,      /* Single element */
+       &asn_SPC_FeatureSetCombination_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetCombination.h b/src/codec_utils/RRC/FeatureSetCombination.h
new file mode 100644 (file)
index 0000000..529f1b4
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetCombination_H_
+#define        _FeatureSetCombination_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 FeatureSetsPerBand;
+
+/* FeatureSetCombination */
+typedef struct FeatureSetCombination {
+       A_SEQUENCE_OF(struct FeatureSetsPerBand) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetCombination_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetCombination;
+extern asn_SET_OF_specifics_t asn_SPC_FeatureSetCombination_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetCombination_1[1];
+extern asn_per_constraints_t asn_PER_type_FeatureSetCombination_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetCombination_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetCombinationId.c b/src/codec_utils/RRC/FeatureSetCombinationId.c
new file mode 100644 (file)
index 0000000..940d986
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetCombinationId.h"
+
+int
+FeatureSetCombinationId_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 <= 1024)) {
+               /* 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_FeatureSetCombinationId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetCombinationId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1024 }   /* (0..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetCombinationId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetCombinationId = {
+       "FeatureSetCombinationId",
+       "FeatureSetCombinationId",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetCombinationId_tags_1,
+       sizeof(asn_DEF_FeatureSetCombinationId_tags_1)
+               /sizeof(asn_DEF_FeatureSetCombinationId_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetCombinationId_tags_1, /* Same as above */
+       sizeof(asn_DEF_FeatureSetCombinationId_tags_1)
+               /sizeof(asn_DEF_FeatureSetCombinationId_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetCombinationId_constr_1, &asn_PER_type_FeatureSetCombinationId_constr_1, FeatureSetCombinationId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetCombinationId.h b/src/codec_utils/RRC/FeatureSetCombinationId.h
new file mode 100644 (file)
index 0000000..81aba37
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetCombinationId_H_
+#define        _FeatureSetCombinationId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetCombinationId */
+typedef long    FeatureSetCombinationId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetCombinationId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetCombinationId;
+asn_struct_free_f FeatureSetCombinationId_free;
+asn_struct_print_f FeatureSetCombinationId_print;
+asn_constr_check_f FeatureSetCombinationId_constraint;
+ber_type_decoder_f FeatureSetCombinationId_decode_ber;
+der_type_encoder_f FeatureSetCombinationId_encode_der;
+xer_type_decoder_f FeatureSetCombinationId_decode_xer;
+xer_type_encoder_f FeatureSetCombinationId_encode_xer;
+oer_type_decoder_f FeatureSetCombinationId_decode_oer;
+oer_type_encoder_f FeatureSetCombinationId_encode_oer;
+per_type_decoder_f FeatureSetCombinationId_decode_uper;
+per_type_encoder_f FeatureSetCombinationId_encode_uper;
+per_type_decoder_f FeatureSetCombinationId_decode_aper;
+per_type_encoder_f FeatureSetCombinationId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetCombinationId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetDownlink.c b/src/codec_utils/RRC/FeatureSetDownlink.c
new file mode 100644 (file)
index 0000000..5de7695
--- /dev/null
@@ -0,0 +1,1542 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetDownlink.h"
+
+#include "CSI-RS-IM-ReceptionForFeedback.h"
+#include "TypeI-SinglePanelCodebook.h"
+#include "TypeI-MultiPanelCodebook.h"
+#include "TypeII-Codebook.h"
+#include "TypeII-CodebookPortSelection.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.
+ */
+/*
+ * 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_featureSetListPerDownlinkCC_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 <= 32)) {
+               /* 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_typeI_SinglePanelCodebookList_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 <= 16)) {
+               /* 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_typeI_MultiPanelCodebookList_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 <= 16)) {
+               /* 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_typeII_CodebookList_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 <= 16)) {
+               /* 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_typeII_CodebookPortSelectionList_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 <= 16)) {
+               /* 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_featureSetListPerDownlinkCC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_featureSetListPerDownlinkCC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scalingFactor_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scalingFactor_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_crossCarrierScheduling_OtherSCS_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_crossCarrierScheduling_OtherSCS_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scellWithoutSSB_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scellWithoutSSB_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_RS_MeasSCellWithoutSSB_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RS_MeasSCellWithoutSSB_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_AssocCSI_RS_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srs_AssocCSI_RS_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_type1_3_CSS_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type1_3_CSS_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcch_MonitoringAnyOccasions_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcch_MonitoringAnyOccasions_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcch_MonitoringAnyOccasionsWithSpanGap_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcch_MonitoringAnyOccasionsWithSpanGap_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ue_SpecificUL_DL_Assignment_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ue_SpecificUL_DL_Assignment_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_searchSpaceSharingCA_DL_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_searchSpaceSharingCA_DL_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_60kHz_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_120kHz_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_120kHz_constr_33 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_15kHz_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_15kHz_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_30kHz_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_30kHz_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_60kHz_constr_45 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_45 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_120kHz_constr_49 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_120kHz_constr_49 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_typeI_SinglePanelCodebookList_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_typeI_SinglePanelCodebookList_constr_54 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_typeI_MultiPanelCodebookList_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_typeI_MultiPanelCodebookList_constr_56 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_typeII_CodebookList_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_typeII_CodebookList_constr_58 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_typeII_CodebookPortSelectionList_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_typeII_CodebookPortSelectionList_constr_60 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetListPerDownlinkCC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetListPerDownlinkCC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeI_SinglePanelCodebookList_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_typeI_SinglePanelCodebookList_constr_54 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeI_MultiPanelCodebookList_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_typeI_MultiPanelCodebookList_constr_56 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeII_CodebookList_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_typeII_CodebookList_constr_58 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeII_CodebookPortSelectionList_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_typeII_CodebookPortSelectionList_constr_60 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_featureSetListPerDownlinkCC_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FeatureSetDownlinkPerCC_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetListPerDownlinkCC_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetListPerDownlinkCC_specs_2 = {
+       sizeof(struct FeatureSetDownlink__featureSetListPerDownlinkCC),
+       offsetof(struct FeatureSetDownlink__featureSetListPerDownlinkCC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetListPerDownlinkCC_2 = {
+       "featureSetListPerDownlinkCC",
+       "featureSetListPerDownlinkCC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetListPerDownlinkCC_tags_2,
+       sizeof(asn_DEF_featureSetListPerDownlinkCC_tags_2)
+               /sizeof(asn_DEF_featureSetListPerDownlinkCC_tags_2[0]) - 1, /* 1 */
+       asn_DEF_featureSetListPerDownlinkCC_tags_2,     /* Same as above */
+       sizeof(asn_DEF_featureSetListPerDownlinkCC_tags_2)
+               /sizeof(asn_DEF_featureSetListPerDownlinkCC_tags_2[0]), /* 2 */
+       { &asn_OER_type_featureSetListPerDownlinkCC_constr_2, &asn_PER_type_featureSetListPerDownlinkCC_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetListPerDownlinkCC_2,
+       1,      /* Single element */
+       &asn_SPC_featureSetListPerDownlinkCC_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scalingFactor_value2enum_5[] = {
+       { 0,    4,      "f0p4" },
+       { 1,    5,      "f0p75" },
+       { 2,    4,      "f0p8" }
+};
+static const unsigned int asn_MAP_scalingFactor_enum2value_5[] = {
+       0,      /* f0p4(0) */
+       1,      /* f0p75(1) */
+       2       /* f0p8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scalingFactor_specs_5 = {
+       asn_MAP_scalingFactor_value2enum_5,     /* "tag" => N; sorted by tag */
+       asn_MAP_scalingFactor_enum2value_5,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scalingFactor_tags_5[] = {
+       (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_scalingFactor_5 = {
+       "scalingFactor",
+       "scalingFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scalingFactor_tags_5,
+       sizeof(asn_DEF_scalingFactor_tags_5)
+               /sizeof(asn_DEF_scalingFactor_tags_5[0]) - 1, /* 1 */
+       asn_DEF_scalingFactor_tags_5,   /* Same as above */
+       sizeof(asn_DEF_scalingFactor_tags_5)
+               /sizeof(asn_DEF_scalingFactor_tags_5[0]), /* 2 */
+       { &asn_OER_type_scalingFactor_constr_5, &asn_PER_type_scalingFactor_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scalingFactor_specs_5  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_crossCarrierScheduling_OtherSCS_value2enum_9[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_crossCarrierScheduling_OtherSCS_enum2value_9[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_crossCarrierScheduling_OtherSCS_specs_9 = {
+       asn_MAP_crossCarrierScheduling_OtherSCS_value2enum_9,   /* "tag" => N; sorted by tag */
+       asn_MAP_crossCarrierScheduling_OtherSCS_enum2value_9,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_crossCarrierScheduling_OtherSCS_tags_9[] = {
+       (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_crossCarrierScheduling_OtherSCS_9 = {
+       "crossCarrierScheduling-OtherSCS",
+       "crossCarrierScheduling-OtherSCS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_crossCarrierScheduling_OtherSCS_tags_9,
+       sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_9)
+               /sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_9[0]) - 1, /* 1 */
+       asn_DEF_crossCarrierScheduling_OtherSCS_tags_9, /* Same as above */
+       sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_9)
+               /sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_9[0]), /* 2 */
+       { &asn_OER_type_crossCarrierScheduling_OtherSCS_constr_9, &asn_PER_type_crossCarrierScheduling_OtherSCS_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_crossCarrierScheduling_OtherSCS_specs_9        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scellWithoutSSB_value2enum_11[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_scellWithoutSSB_enum2value_11[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scellWithoutSSB_specs_11 = {
+       asn_MAP_scellWithoutSSB_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_scellWithoutSSB_enum2value_11,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scellWithoutSSB_tags_11[] = {
+       (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_scellWithoutSSB_11 = {
+       "scellWithoutSSB",
+       "scellWithoutSSB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scellWithoutSSB_tags_11,
+       sizeof(asn_DEF_scellWithoutSSB_tags_11)
+               /sizeof(asn_DEF_scellWithoutSSB_tags_11[0]) - 1, /* 1 */
+       asn_DEF_scellWithoutSSB_tags_11,        /* Same as above */
+       sizeof(asn_DEF_scellWithoutSSB_tags_11)
+               /sizeof(asn_DEF_scellWithoutSSB_tags_11[0]), /* 2 */
+       { &asn_OER_type_scellWithoutSSB_constr_11, &asn_PER_type_scellWithoutSSB_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scellWithoutSSB_specs_11       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_RS_MeasSCellWithoutSSB_value2enum_13[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_RS_MeasSCellWithoutSSB_enum2value_13[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_RS_MeasSCellWithoutSSB_specs_13 = {
+       asn_MAP_csi_RS_MeasSCellWithoutSSB_value2enum_13,       /* "tag" => N; sorted by tag */
+       asn_MAP_csi_RS_MeasSCellWithoutSSB_enum2value_13,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13[] = {
+       (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_csi_RS_MeasSCellWithoutSSB_13 = {
+       "csi-RS-MeasSCellWithoutSSB",
+       "csi-RS-MeasSCellWithoutSSB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13,
+       sizeof(asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13)
+               /sizeof(asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13[0]) - 1, /* 1 */
+       asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13,     /* Same as above */
+       sizeof(asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13)
+               /sizeof(asn_DEF_csi_RS_MeasSCellWithoutSSB_tags_13[0]), /* 2 */
+       { &asn_OER_type_csi_RS_MeasSCellWithoutSSB_constr_13, &asn_PER_type_csi_RS_MeasSCellWithoutSSB_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_RS_MeasSCellWithoutSSB_specs_13    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_srs_AssocCSI_RS_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_srs_AssocCSI_RS_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_srs_AssocCSI_RS_specs_15 = {
+       asn_MAP_srs_AssocCSI_RS_value2enum_15,  /* "tag" => N; sorted by tag */
+       asn_MAP_srs_AssocCSI_RS_enum2value_15,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_srs_AssocCSI_RS_tags_15[] = {
+       (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_srs_AssocCSI_RS_15 = {
+       "srs-AssocCSI-RS",
+       "srs-AssocCSI-RS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_srs_AssocCSI_RS_tags_15,
+       sizeof(asn_DEF_srs_AssocCSI_RS_tags_15)
+               /sizeof(asn_DEF_srs_AssocCSI_RS_tags_15[0]) - 1, /* 1 */
+       asn_DEF_srs_AssocCSI_RS_tags_15,        /* Same as above */
+       sizeof(asn_DEF_srs_AssocCSI_RS_tags_15)
+               /sizeof(asn_DEF_srs_AssocCSI_RS_tags_15[0]), /* 2 */
+       { &asn_OER_type_srs_AssocCSI_RS_constr_15, &asn_PER_type_srs_AssocCSI_RS_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_srs_AssocCSI_RS_specs_15       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_type1_3_CSS_value2enum_17[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_type1_3_CSS_enum2value_17[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type1_3_CSS_specs_17 = {
+       asn_MAP_type1_3_CSS_value2enum_17,      /* "tag" => N; sorted by tag */
+       asn_MAP_type1_3_CSS_enum2value_17,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type1_3_CSS_tags_17[] = {
+       (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_type1_3_CSS_17 = {
+       "type1-3-CSS",
+       "type1-3-CSS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type1_3_CSS_tags_17,
+       sizeof(asn_DEF_type1_3_CSS_tags_17)
+               /sizeof(asn_DEF_type1_3_CSS_tags_17[0]) - 1, /* 1 */
+       asn_DEF_type1_3_CSS_tags_17,    /* Same as above */
+       sizeof(asn_DEF_type1_3_CSS_tags_17)
+               /sizeof(asn_DEF_type1_3_CSS_tags_17[0]), /* 2 */
+       { &asn_OER_type_type1_3_CSS_constr_17, &asn_PER_type_type1_3_CSS_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type1_3_CSS_specs_17   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcch_MonitoringAnyOccasions_value2enum_19[] = {
+       { 0,    14,     "withoutDCI-Gap" },
+       { 1,    11,     "withDCI-Gap" }
+};
+static const unsigned int asn_MAP_pdcch_MonitoringAnyOccasions_enum2value_19[] = {
+       1,      /* withDCI-Gap(1) */
+       0       /* withoutDCI-Gap(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcch_MonitoringAnyOccasions_specs_19 = {
+       asn_MAP_pdcch_MonitoringAnyOccasions_value2enum_19,     /* "tag" => N; sorted by tag */
+       asn_MAP_pdcch_MonitoringAnyOccasions_enum2value_19,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcch_MonitoringAnyOccasions_tags_19[] = {
+       (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_pdcch_MonitoringAnyOccasions_19 = {
+       "pdcch-MonitoringAnyOccasions",
+       "pdcch-MonitoringAnyOccasions",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcch_MonitoringAnyOccasions_tags_19,
+       sizeof(asn_DEF_pdcch_MonitoringAnyOccasions_tags_19)
+               /sizeof(asn_DEF_pdcch_MonitoringAnyOccasions_tags_19[0]) - 1, /* 1 */
+       asn_DEF_pdcch_MonitoringAnyOccasions_tags_19,   /* Same as above */
+       sizeof(asn_DEF_pdcch_MonitoringAnyOccasions_tags_19)
+               /sizeof(asn_DEF_pdcch_MonitoringAnyOccasions_tags_19[0]), /* 2 */
+       { &asn_OER_type_pdcch_MonitoringAnyOccasions_constr_19, &asn_PER_type_pdcch_MonitoringAnyOccasions_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcch_MonitoringAnyOccasions_specs_19  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcch_MonitoringAnyOccasionsWithSpanGap_value2enum_22[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcch_MonitoringAnyOccasionsWithSpanGap_enum2value_22[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcch_MonitoringAnyOccasionsWithSpanGap_specs_22 = {
+       asn_MAP_pdcch_MonitoringAnyOccasionsWithSpanGap_value2enum_22,  /* "tag" => N; sorted by tag */
+       asn_MAP_pdcch_MonitoringAnyOccasionsWithSpanGap_enum2value_22,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22[] = {
+       (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_pdcch_MonitoringAnyOccasionsWithSpanGap_22 = {
+       "pdcch-MonitoringAnyOccasionsWithSpanGap",
+       "pdcch-MonitoringAnyOccasionsWithSpanGap",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22,
+       sizeof(asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22)
+               /sizeof(asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22[0]) - 1, /* 1 */
+       asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22,        /* Same as above */
+       sizeof(asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22)
+               /sizeof(asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_tags_22[0]), /* 2 */
+       { &asn_OER_type_pdcch_MonitoringAnyOccasionsWithSpanGap_constr_22, &asn_PER_type_pdcch_MonitoringAnyOccasionsWithSpanGap_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcch_MonitoringAnyOccasionsWithSpanGap_specs_22       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ue_SpecificUL_DL_Assignment_value2enum_24[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_ue_SpecificUL_DL_Assignment_enum2value_24[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ue_SpecificUL_DL_Assignment_specs_24 = {
+       asn_MAP_ue_SpecificUL_DL_Assignment_value2enum_24,      /* "tag" => N; sorted by tag */
+       asn_MAP_ue_SpecificUL_DL_Assignment_enum2value_24,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ue_SpecificUL_DL_Assignment_tags_24[] = {
+       (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_ue_SpecificUL_DL_Assignment_24 = {
+       "ue-SpecificUL-DL-Assignment",
+       "ue-SpecificUL-DL-Assignment",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ue_SpecificUL_DL_Assignment_tags_24,
+       sizeof(asn_DEF_ue_SpecificUL_DL_Assignment_tags_24)
+               /sizeof(asn_DEF_ue_SpecificUL_DL_Assignment_tags_24[0]) - 1, /* 1 */
+       asn_DEF_ue_SpecificUL_DL_Assignment_tags_24,    /* Same as above */
+       sizeof(asn_DEF_ue_SpecificUL_DL_Assignment_tags_24)
+               /sizeof(asn_DEF_ue_SpecificUL_DL_Assignment_tags_24[0]), /* 2 */
+       { &asn_OER_type_ue_SpecificUL_DL_Assignment_constr_24, &asn_PER_type_ue_SpecificUL_DL_Assignment_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ue_SpecificUL_DL_Assignment_specs_24   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_searchSpaceSharingCA_DL_value2enum_26[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_searchSpaceSharingCA_DL_enum2value_26[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_searchSpaceSharingCA_DL_specs_26 = {
+       asn_MAP_searchSpaceSharingCA_DL_value2enum_26,  /* "tag" => N; sorted by tag */
+       asn_MAP_searchSpaceSharingCA_DL_enum2value_26,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_searchSpaceSharingCA_DL_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_searchSpaceSharingCA_DL_26 = {
+       "searchSpaceSharingCA-DL",
+       "searchSpaceSharingCA-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_searchSpaceSharingCA_DL_tags_26,
+       sizeof(asn_DEF_searchSpaceSharingCA_DL_tags_26)
+               /sizeof(asn_DEF_searchSpaceSharingCA_DL_tags_26[0]) - 1, /* 1 */
+       asn_DEF_searchSpaceSharingCA_DL_tags_26,        /* Same as above */
+       sizeof(asn_DEF_searchSpaceSharingCA_DL_tags_26)
+               /sizeof(asn_DEF_searchSpaceSharingCA_DL_tags_26[0]), /* 2 */
+       { &asn_OER_type_searchSpaceSharingCA_DL_constr_26, &asn_PER_type_searchSpaceSharingCA_DL_constr_26, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_searchSpaceSharingCA_DL_specs_26       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_29[] = {
+       { 0,    2,      "s7" },
+       { 1,    3,      "s14" },
+       { 2,    3,      "s28" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_29[] = {
+       1,      /* s14(1) */
+       2,      /* s28(2) */
+       0       /* s7(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_29 = {
+       asn_MAP_scs_60kHz_value2enum_29,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_29,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_29[] = {
+       (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_scs_60kHz_29 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_29,
+       sizeof(asn_DEF_scs_60kHz_tags_29)
+               /sizeof(asn_DEF_scs_60kHz_tags_29[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_29,      /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_29)
+               /sizeof(asn_DEF_scs_60kHz_tags_29[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_29, &asn_PER_type_scs_60kHz_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_29     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_120kHz_value2enum_33[] = {
+       { 0,    3,      "s14" },
+       { 1,    3,      "s28" }
+};
+static const unsigned int asn_MAP_scs_120kHz_enum2value_33[] = {
+       0,      /* s14(0) */
+       1       /* s28(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_120kHz_specs_33 = {
+       asn_MAP_scs_120kHz_value2enum_33,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_120kHz_enum2value_33,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_120kHz_tags_33[] = {
+       (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_scs_120kHz_33 = {
+       "scs-120kHz",
+       "scs-120kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_120kHz_tags_33,
+       sizeof(asn_DEF_scs_120kHz_tags_33)
+               /sizeof(asn_DEF_scs_120kHz_tags_33[0]) - 1, /* 1 */
+       asn_DEF_scs_120kHz_tags_33,     /* Same as above */
+       sizeof(asn_DEF_scs_120kHz_tags_33)
+               /sizeof(asn_DEF_scs_120kHz_tags_33[0]), /* 2 */
+       { &asn_OER_type_scs_120kHz_constr_33, &asn_PER_type_scs_120kHz_constr_33, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_120kHz_specs_33    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_timeDurationForQCL_28[] = {
+       { ATF_POINTER, 2, offsetof(struct FeatureSetDownlink__timeDurationForQCL, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetDownlink__timeDurationForQCL, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_120kHz_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_timeDurationForQCL_oms_28[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_timeDurationForQCL_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_timeDurationForQCL_tag2el_28[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_timeDurationForQCL_specs_28 = {
+       sizeof(struct FeatureSetDownlink__timeDurationForQCL),
+       offsetof(struct FeatureSetDownlink__timeDurationForQCL, _asn_ctx),
+       asn_MAP_timeDurationForQCL_tag2el_28,
+       2,      /* Count of tags in the map */
+       asn_MAP_timeDurationForQCL_oms_28,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_timeDurationForQCL_28 = {
+       "timeDurationForQCL",
+       "timeDurationForQCL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_timeDurationForQCL_tags_28,
+       sizeof(asn_DEF_timeDurationForQCL_tags_28)
+               /sizeof(asn_DEF_timeDurationForQCL_tags_28[0]) - 1, /* 1 */
+       asn_DEF_timeDurationForQCL_tags_28,     /* Same as above */
+       sizeof(asn_DEF_timeDurationForQCL_tags_28)
+               /sizeof(asn_DEF_timeDurationForQCL_tags_28[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_timeDurationForQCL_28,
+       2,      /* Elements count */
+       &asn_SPC_timeDurationForQCL_specs_28    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_15kHz_value2enum_37[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_15kHz_enum2value_37[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_15kHz_specs_37 = {
+       asn_MAP_scs_15kHz_value2enum_37,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_15kHz_enum2value_37,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_15kHz_tags_37[] = {
+       (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_scs_15kHz_37 = {
+       "scs-15kHz",
+       "scs-15kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_15kHz_tags_37,
+       sizeof(asn_DEF_scs_15kHz_tags_37)
+               /sizeof(asn_DEF_scs_15kHz_tags_37[0]) - 1, /* 1 */
+       asn_DEF_scs_15kHz_tags_37,      /* Same as above */
+       sizeof(asn_DEF_scs_15kHz_tags_37)
+               /sizeof(asn_DEF_scs_15kHz_tags_37[0]), /* 2 */
+       { &asn_OER_type_scs_15kHz_constr_37, &asn_PER_type_scs_15kHz_constr_37, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_15kHz_specs_37     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_30kHz_value2enum_41[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_30kHz_enum2value_41[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_30kHz_specs_41 = {
+       asn_MAP_scs_30kHz_value2enum_41,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_30kHz_enum2value_41,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_30kHz_tags_41[] = {
+       (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_scs_30kHz_41 = {
+       "scs-30kHz",
+       "scs-30kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_30kHz_tags_41,
+       sizeof(asn_DEF_scs_30kHz_tags_41)
+               /sizeof(asn_DEF_scs_30kHz_tags_41[0]) - 1, /* 1 */
+       asn_DEF_scs_30kHz_tags_41,      /* Same as above */
+       sizeof(asn_DEF_scs_30kHz_tags_41)
+               /sizeof(asn_DEF_scs_30kHz_tags_41[0]), /* 2 */
+       { &asn_OER_type_scs_30kHz_constr_41, &asn_PER_type_scs_30kHz_constr_41, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_30kHz_specs_41     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_45[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_45[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_45 = {
+       asn_MAP_scs_60kHz_value2enum_45,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_45,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_45[] = {
+       (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_scs_60kHz_45 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_45,
+       sizeof(asn_DEF_scs_60kHz_tags_45)
+               /sizeof(asn_DEF_scs_60kHz_tags_45[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_45,      /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_45)
+               /sizeof(asn_DEF_scs_60kHz_tags_45[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_45, &asn_PER_type_scs_60kHz_constr_45, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_45     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_120kHz_value2enum_49[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_120kHz_enum2value_49[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_120kHz_specs_49 = {
+       asn_MAP_scs_120kHz_value2enum_49,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_120kHz_enum2value_49,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_120kHz_tags_49[] = {
+       (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_scs_120kHz_49 = {
+       "scs-120kHz",
+       "scs-120kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_120kHz_tags_49,
+       sizeof(asn_DEF_scs_120kHz_tags_49)
+               /sizeof(asn_DEF_scs_120kHz_tags_49[0]) - 1, /* 1 */
+       asn_DEF_scs_120kHz_tags_49,     /* Same as above */
+       sizeof(asn_DEF_scs_120kHz_tags_49)
+               /sizeof(asn_DEF_scs_120kHz_tags_49[0]), /* 2 */
+       { &asn_OER_type_scs_120kHz_constr_49, &asn_PER_type_scs_120kHz_constr_49, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_120kHz_specs_49    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdsch_ProcessingType1_DifferentTB_PerSlot_36[] = {
+       { ATF_POINTER, 4, offsetof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_15kHz_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_30kHz_41,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_45,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_120kHz_49,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_pdsch_ProcessingType1_DifferentTB_PerSlot_oms_36[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdsch_ProcessingType1_DifferentTB_PerSlot_tag2el_36[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_pdsch_ProcessingType1_DifferentTB_PerSlot_specs_36 = {
+       sizeof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot),
+       offsetof(struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot, _asn_ctx),
+       asn_MAP_pdsch_ProcessingType1_DifferentTB_PerSlot_tag2el_36,
+       4,      /* Count of tags in the map */
+       asn_MAP_pdsch_ProcessingType1_DifferentTB_PerSlot_oms_36,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_36 = {
+       "pdsch-ProcessingType1-DifferentTB-PerSlot",
+       "pdsch-ProcessingType1-DifferentTB-PerSlot",
+       &asn_OP_SEQUENCE,
+       asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36,
+       sizeof(asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36)
+               /sizeof(asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36[0]) - 1, /* 1 */
+       asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36,      /* Same as above */
+       sizeof(asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36)
+               /sizeof(asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_tags_36[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_pdsch_ProcessingType1_DifferentTB_PerSlot_36,
+       4,      /* Elements count */
+       &asn_SPC_pdsch_ProcessingType1_DifferentTB_PerSlot_specs_36     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeI_SinglePanelCodebookList_54[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TypeI_SinglePanelCodebook,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeI_SinglePanelCodebookList_tags_54[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_typeI_SinglePanelCodebookList_specs_54 = {
+       sizeof(struct FeatureSetDownlink__typeI_SinglePanelCodebookList),
+       offsetof(struct FeatureSetDownlink__typeI_SinglePanelCodebookList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeI_SinglePanelCodebookList_54 = {
+       "typeI-SinglePanelCodebookList",
+       "typeI-SinglePanelCodebookList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_typeI_SinglePanelCodebookList_tags_54,
+       sizeof(asn_DEF_typeI_SinglePanelCodebookList_tags_54)
+               /sizeof(asn_DEF_typeI_SinglePanelCodebookList_tags_54[0]) - 1, /* 1 */
+       asn_DEF_typeI_SinglePanelCodebookList_tags_54,  /* Same as above */
+       sizeof(asn_DEF_typeI_SinglePanelCodebookList_tags_54)
+               /sizeof(asn_DEF_typeI_SinglePanelCodebookList_tags_54[0]), /* 2 */
+       { &asn_OER_type_typeI_SinglePanelCodebookList_constr_54, &asn_PER_type_typeI_SinglePanelCodebookList_constr_54, SEQUENCE_OF_constraint },
+       asn_MBR_typeI_SinglePanelCodebookList_54,
+       1,      /* Single element */
+       &asn_SPC_typeI_SinglePanelCodebookList_specs_54 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeI_MultiPanelCodebookList_56[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TypeI_MultiPanelCodebook,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeI_MultiPanelCodebookList_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_typeI_MultiPanelCodebookList_specs_56 = {
+       sizeof(struct FeatureSetDownlink__typeI_MultiPanelCodebookList),
+       offsetof(struct FeatureSetDownlink__typeI_MultiPanelCodebookList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeI_MultiPanelCodebookList_56 = {
+       "typeI-MultiPanelCodebookList",
+       "typeI-MultiPanelCodebookList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_typeI_MultiPanelCodebookList_tags_56,
+       sizeof(asn_DEF_typeI_MultiPanelCodebookList_tags_56)
+               /sizeof(asn_DEF_typeI_MultiPanelCodebookList_tags_56[0]) - 1, /* 1 */
+       asn_DEF_typeI_MultiPanelCodebookList_tags_56,   /* Same as above */
+       sizeof(asn_DEF_typeI_MultiPanelCodebookList_tags_56)
+               /sizeof(asn_DEF_typeI_MultiPanelCodebookList_tags_56[0]), /* 2 */
+       { &asn_OER_type_typeI_MultiPanelCodebookList_constr_56, &asn_PER_type_typeI_MultiPanelCodebookList_constr_56, SEQUENCE_OF_constraint },
+       asn_MBR_typeI_MultiPanelCodebookList_56,
+       1,      /* Single element */
+       &asn_SPC_typeI_MultiPanelCodebookList_specs_56  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeII_CodebookList_58[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TypeII_Codebook,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeII_CodebookList_tags_58[] = {
+       (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_typeII_CodebookList_specs_58 = {
+       sizeof(struct FeatureSetDownlink__typeII_CodebookList),
+       offsetof(struct FeatureSetDownlink__typeII_CodebookList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeII_CodebookList_58 = {
+       "typeII-CodebookList",
+       "typeII-CodebookList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_typeII_CodebookList_tags_58,
+       sizeof(asn_DEF_typeII_CodebookList_tags_58)
+               /sizeof(asn_DEF_typeII_CodebookList_tags_58[0]) - 1, /* 1 */
+       asn_DEF_typeII_CodebookList_tags_58,    /* Same as above */
+       sizeof(asn_DEF_typeII_CodebookList_tags_58)
+               /sizeof(asn_DEF_typeII_CodebookList_tags_58[0]), /* 2 */
+       { &asn_OER_type_typeII_CodebookList_constr_58, &asn_PER_type_typeII_CodebookList_constr_58, SEQUENCE_OF_constraint },
+       asn_MBR_typeII_CodebookList_58,
+       1,      /* Single element */
+       &asn_SPC_typeII_CodebookList_specs_58   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeII_CodebookPortSelectionList_60[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TypeII_CodebookPortSelection,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeII_CodebookPortSelectionList_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_typeII_CodebookPortSelectionList_specs_60 = {
+       sizeof(struct FeatureSetDownlink__typeII_CodebookPortSelectionList),
+       offsetof(struct FeatureSetDownlink__typeII_CodebookPortSelectionList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeII_CodebookPortSelectionList_60 = {
+       "typeII-CodebookPortSelectionList",
+       "typeII-CodebookPortSelectionList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_typeII_CodebookPortSelectionList_tags_60,
+       sizeof(asn_DEF_typeII_CodebookPortSelectionList_tags_60)
+               /sizeof(asn_DEF_typeII_CodebookPortSelectionList_tags_60[0]) - 1, /* 1 */
+       asn_DEF_typeII_CodebookPortSelectionList_tags_60,       /* Same as above */
+       sizeof(asn_DEF_typeII_CodebookPortSelectionList_tags_60)
+               /sizeof(asn_DEF_typeII_CodebookPortSelectionList_tags_60[0]), /* 2 */
+       { &asn_OER_type_typeII_CodebookPortSelectionList_constr_60, &asn_PER_type_typeII_CodebookPortSelectionList_constr_60, SEQUENCE_OF_constraint },
+       asn_MBR_typeII_CodebookPortSelectionList_60,
+       1,      /* Single element */
+       &asn_SPC_typeII_CodebookPortSelectionList_specs_60      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSetDownlink_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetDownlink, featureSetListPerDownlinkCC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_featureSetListPerDownlinkCC_2,
+               0,
+               { &asn_OER_memb_featureSetListPerDownlinkCC_constr_2, &asn_PER_memb_featureSetListPerDownlinkCC_constr_2,  memb_featureSetListPerDownlinkCC_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetListPerDownlinkCC"
+               },
+       { ATF_POINTER, 18, offsetof(struct FeatureSetDownlink, intraBandFreqSeparationDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqSeparationClass,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraBandFreqSeparationDL"
+               },
+       { ATF_POINTER, 17, offsetof(struct FeatureSetDownlink, scalingFactor),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scalingFactor_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scalingFactor"
+               },
+       { ATF_POINTER, 16, offsetof(struct FeatureSetDownlink, crossCarrierScheduling_OtherSCS),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_crossCarrierScheduling_OtherSCS_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "crossCarrierScheduling-OtherSCS"
+               },
+       { ATF_POINTER, 15, offsetof(struct FeatureSetDownlink, scellWithoutSSB),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scellWithoutSSB_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scellWithoutSSB"
+               },
+       { ATF_POINTER, 14, offsetof(struct FeatureSetDownlink, csi_RS_MeasSCellWithoutSSB),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_RS_MeasSCellWithoutSSB_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-MeasSCellWithoutSSB"
+               },
+       { ATF_POINTER, 13, offsetof(struct FeatureSetDownlink, srs_AssocCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_srs_AssocCSI_RS_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-AssocCSI-RS"
+               },
+       { ATF_POINTER, 12, offsetof(struct FeatureSetDownlink, type1_3_CSS),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type1_3_CSS_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type1-3-CSS"
+               },
+       { ATF_POINTER, 11, offsetof(struct FeatureSetDownlink, pdcch_MonitoringAnyOccasions),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcch_MonitoringAnyOccasions_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-MonitoringAnyOccasions"
+               },
+       { ATF_POINTER, 10, offsetof(struct FeatureSetDownlink, pdcch_MonitoringAnyOccasionsWithSpanGap),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-MonitoringAnyOccasionsWithSpanGap"
+               },
+       { ATF_POINTER, 9, offsetof(struct FeatureSetDownlink, ue_SpecificUL_DL_Assignment),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ue_SpecificUL_DL_Assignment_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-SpecificUL-DL-Assignment"
+               },
+       { ATF_POINTER, 8, offsetof(struct FeatureSetDownlink, searchSpaceSharingCA_DL),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_searchSpaceSharingCA_DL_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceSharingCA-DL"
+               },
+       { ATF_POINTER, 7, offsetof(struct FeatureSetDownlink, timeDurationForQCL),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               0,
+               &asn_DEF_timeDurationForQCL_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeDurationForQCL"
+               },
+       { ATF_POINTER, 6, offsetof(struct FeatureSetDownlink, pdsch_ProcessingType1_DifferentTB_PerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_pdsch_ProcessingType1_DifferentTB_PerSlot_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-ProcessingType1-DifferentTB-PerSlot"
+               },
+       { ATF_POINTER, 5, offsetof(struct FeatureSetDownlink, csi_RS_IM_ReceptionForFeedback),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_IM_ReceptionForFeedback,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-IM-ReceptionForFeedback"
+               },
+       { ATF_POINTER, 4, offsetof(struct FeatureSetDownlink, typeI_SinglePanelCodebookList),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               0,
+               &asn_DEF_typeI_SinglePanelCodebookList_54,
+               0,
+               { &asn_OER_memb_typeI_SinglePanelCodebookList_constr_54, &asn_PER_memb_typeI_SinglePanelCodebookList_constr_54,  memb_typeI_SinglePanelCodebookList_constraint_1 },
+               0, 0, /* No default value */
+               "typeI-SinglePanelCodebookList"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetDownlink, typeI_MultiPanelCodebookList),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               0,
+               &asn_DEF_typeI_MultiPanelCodebookList_56,
+               0,
+               { &asn_OER_memb_typeI_MultiPanelCodebookList_constr_56, &asn_PER_memb_typeI_MultiPanelCodebookList_constr_56,  memb_typeI_MultiPanelCodebookList_constraint_1 },
+               0, 0, /* No default value */
+               "typeI-MultiPanelCodebookList"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetDownlink, typeII_CodebookList),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               0,
+               &asn_DEF_typeII_CodebookList_58,
+               0,
+               { &asn_OER_memb_typeII_CodebookList_constr_58, &asn_PER_memb_typeII_CodebookList_constr_58,  memb_typeII_CodebookList_constraint_1 },
+               0, 0, /* No default value */
+               "typeII-CodebookList"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetDownlink, typeII_CodebookPortSelectionList),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               0,
+               &asn_DEF_typeII_CodebookPortSelectionList_60,
+               0,
+               { &asn_OER_memb_typeII_CodebookPortSelectionList_constr_60, &asn_PER_memb_typeII_CodebookPortSelectionList_constr_60,  memb_typeII_CodebookPortSelectionList_constraint_1 },
+               0, 0, /* No default value */
+               "typeII-CodebookPortSelectionList"
+               },
+};
+static const int asn_MAP_FeatureSetDownlink_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 };
+static const ber_tlv_tag_t asn_DEF_FeatureSetDownlink_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSetDownlink_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* featureSetListPerDownlinkCC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* intraBandFreqSeparationDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scalingFactor */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* crossCarrierScheduling-OtherSCS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* scellWithoutSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* csi-RS-MeasSCellWithoutSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* srs-AssocCSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* type1-3-CSS */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* pdcch-MonitoringAnyOccasions */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pdcch-MonitoringAnyOccasionsWithSpanGap */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* ue-SpecificUL-DL-Assignment */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* searchSpaceSharingCA-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* timeDurationForQCL */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* pdsch-ProcessingType1-DifferentTB-PerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* csi-RS-IM-ReceptionForFeedback */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* typeI-SinglePanelCodebookList */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* typeI-MultiPanelCodebookList */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* typeII-CodebookList */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 } /* typeII-CodebookPortSelectionList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FeatureSetDownlink_specs_1 = {
+       sizeof(struct FeatureSetDownlink),
+       offsetof(struct FeatureSetDownlink, _asn_ctx),
+       asn_MAP_FeatureSetDownlink_tag2el_1,
+       19,     /* Count of tags in the map */
+       asn_MAP_FeatureSetDownlink_oms_1,       /* Optional members */
+       18, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlink = {
+       "FeatureSetDownlink",
+       "FeatureSetDownlink",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FeatureSetDownlink_tags_1,
+       sizeof(asn_DEF_FeatureSetDownlink_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlink_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetDownlink_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FeatureSetDownlink_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlink_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FeatureSetDownlink_1,
+       19,     /* Elements count */
+       &asn_SPC_FeatureSetDownlink_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetDownlink.h b/src/codec_utils/RRC/FeatureSetDownlink.h
new file mode 100644 (file)
index 0000000..d25112a
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetDownlink_H_
+#define        _FeatureSetDownlink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqSeparationClass.h"
+#include <NativeEnumerated.h>
+#include "FeatureSetDownlinkPerCC-Id.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FeatureSetDownlink__scalingFactor {
+       FeatureSetDownlink__scalingFactor_f0p4  = 0,
+       FeatureSetDownlink__scalingFactor_f0p75 = 1,
+       FeatureSetDownlink__scalingFactor_f0p8  = 2
+} e_FeatureSetDownlink__scalingFactor;
+typedef enum FeatureSetDownlink__crossCarrierScheduling_OtherSCS {
+       FeatureSetDownlink__crossCarrierScheduling_OtherSCS_supported   = 0
+} e_FeatureSetDownlink__crossCarrierScheduling_OtherSCS;
+typedef enum FeatureSetDownlink__scellWithoutSSB {
+       FeatureSetDownlink__scellWithoutSSB_supported   = 0
+} e_FeatureSetDownlink__scellWithoutSSB;
+typedef enum FeatureSetDownlink__csi_RS_MeasSCellWithoutSSB {
+       FeatureSetDownlink__csi_RS_MeasSCellWithoutSSB_supported        = 0
+} e_FeatureSetDownlink__csi_RS_MeasSCellWithoutSSB;
+typedef enum FeatureSetDownlink__srs_AssocCSI_RS {
+       FeatureSetDownlink__srs_AssocCSI_RS_supported   = 0
+} e_FeatureSetDownlink__srs_AssocCSI_RS;
+typedef enum FeatureSetDownlink__type1_3_CSS {
+       FeatureSetDownlink__type1_3_CSS_supported       = 0
+} e_FeatureSetDownlink__type1_3_CSS;
+typedef enum FeatureSetDownlink__pdcch_MonitoringAnyOccasions {
+       FeatureSetDownlink__pdcch_MonitoringAnyOccasions_withoutDCI_Gap = 0,
+       FeatureSetDownlink__pdcch_MonitoringAnyOccasions_withDCI_Gap    = 1
+} e_FeatureSetDownlink__pdcch_MonitoringAnyOccasions;
+typedef enum FeatureSetDownlink__pdcch_MonitoringAnyOccasionsWithSpanGap {
+       FeatureSetDownlink__pdcch_MonitoringAnyOccasionsWithSpanGap_supported   = 0
+} e_FeatureSetDownlink__pdcch_MonitoringAnyOccasionsWithSpanGap;
+typedef enum FeatureSetDownlink__ue_SpecificUL_DL_Assignment {
+       FeatureSetDownlink__ue_SpecificUL_DL_Assignment_supported       = 0
+} e_FeatureSetDownlink__ue_SpecificUL_DL_Assignment;
+typedef enum FeatureSetDownlink__searchSpaceSharingCA_DL {
+       FeatureSetDownlink__searchSpaceSharingCA_DL_supported   = 0
+} e_FeatureSetDownlink__searchSpaceSharingCA_DL;
+typedef enum FeatureSetDownlink__timeDurationForQCL__scs_60kHz {
+       FeatureSetDownlink__timeDurationForQCL__scs_60kHz_s7    = 0,
+       FeatureSetDownlink__timeDurationForQCL__scs_60kHz_s14   = 1,
+       FeatureSetDownlink__timeDurationForQCL__scs_60kHz_s28   = 2
+} e_FeatureSetDownlink__timeDurationForQCL__scs_60kHz;
+typedef enum FeatureSetDownlink__timeDurationForQCL__scs_120kHz {
+       FeatureSetDownlink__timeDurationForQCL__scs_120kHz_s14  = 0,
+       FeatureSetDownlink__timeDurationForQCL__scs_120kHz_s28  = 1
+} e_FeatureSetDownlink__timeDurationForQCL__scs_120kHz;
+typedef enum FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_15kHz {
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_15kHz_upto2  = 0,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_15kHz_upto4  = 1,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_15kHz_upto7  = 2
+} e_FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_15kHz;
+typedef enum FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_30kHz {
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_30kHz_upto2  = 0,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_30kHz_upto4  = 1,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_30kHz_upto7  = 2
+} e_FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_30kHz;
+typedef enum FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_60kHz {
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_60kHz_upto2  = 0,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_60kHz_upto4  = 1,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_60kHz_upto7  = 2
+} e_FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_60kHz;
+typedef enum FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_120kHz {
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_120kHz_upto2 = 0,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_120kHz_upto4 = 1,
+       FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_120kHz_upto7 = 2
+} e_FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot__scs_120kHz;
+
+/* Forward declarations */
+struct CSI_RS_IM_ReceptionForFeedback;
+struct TypeI_SinglePanelCodebook;
+struct TypeI_MultiPanelCodebook;
+struct TypeII_Codebook;
+struct TypeII_CodebookPortSelection;
+
+/* FeatureSetDownlink */
+typedef struct FeatureSetDownlink {
+       struct FeatureSetDownlink__featureSetListPerDownlinkCC {
+               A_SEQUENCE_OF(FeatureSetDownlinkPerCC_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } featureSetListPerDownlinkCC;
+       FreqSeparationClass_t   *intraBandFreqSeparationDL;     /* OPTIONAL */
+       long    *scalingFactor; /* OPTIONAL */
+       long    *crossCarrierScheduling_OtherSCS;       /* OPTIONAL */
+       long    *scellWithoutSSB;       /* OPTIONAL */
+       long    *csi_RS_MeasSCellWithoutSSB;    /* OPTIONAL */
+       long    *srs_AssocCSI_RS;       /* OPTIONAL */
+       long    *type1_3_CSS;   /* OPTIONAL */
+       long    *pdcch_MonitoringAnyOccasions;  /* OPTIONAL */
+       long    *pdcch_MonitoringAnyOccasionsWithSpanGap;       /* OPTIONAL */
+       long    *ue_SpecificUL_DL_Assignment;   /* OPTIONAL */
+       long    *searchSpaceSharingCA_DL;       /* OPTIONAL */
+       struct FeatureSetDownlink__timeDurationForQCL {
+               long    *scs_60kHz;     /* OPTIONAL */
+               long    *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *timeDurationForQCL;
+       struct FeatureSetDownlink__pdsch_ProcessingType1_DifferentTB_PerSlot {
+               long    *scs_15kHz;     /* OPTIONAL */
+               long    *scs_30kHz;     /* OPTIONAL */
+               long    *scs_60kHz;     /* OPTIONAL */
+               long    *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdsch_ProcessingType1_DifferentTB_PerSlot;
+       struct CSI_RS_IM_ReceptionForFeedback   *csi_RS_IM_ReceptionForFeedback;        /* OPTIONAL */
+       struct FeatureSetDownlink__typeI_SinglePanelCodebookList {
+               A_SEQUENCE_OF(struct TypeI_SinglePanelCodebook) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *typeI_SinglePanelCodebookList;
+       struct FeatureSetDownlink__typeI_MultiPanelCodebookList {
+               A_SEQUENCE_OF(struct TypeI_MultiPanelCodebook) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *typeI_MultiPanelCodebookList;
+       struct FeatureSetDownlink__typeII_CodebookList {
+               A_SEQUENCE_OF(struct TypeII_Codebook) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *typeII_CodebookList;
+       struct FeatureSetDownlink__typeII_CodebookPortSelectionList {
+               A_SEQUENCE_OF(struct TypeII_CodebookPortSelection) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *typeII_CodebookPortSelectionList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetDownlink_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_scalingFactor_5;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_crossCarrierScheduling_OtherSCS_9;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scellWithoutSSB_11;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_RS_MeasSCellWithoutSSB_13; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_srs_AssocCSI_RS_15;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_type1_3_CSS_17;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcch_MonitoringAnyOccasions_19;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcch_MonitoringAnyOccasionsWithSpanGap_22;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ue_SpecificUL_DL_Assignment_24;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_searchSpaceSharingCA_DL_26;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_29;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_120kHz_33; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_15kHz_37;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_30kHz_41;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_45;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_120kHz_49; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlink;
+extern asn_SEQUENCE_specifics_t asn_SPC_FeatureSetDownlink_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetDownlink_1[19];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetDownlink_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkId.c b/src/codec_utils/RRC/FeatureSetDownlinkId.c
new file mode 100644 (file)
index 0000000..7afae63
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetDownlinkId.h"
+
+int
+FeatureSetDownlinkId_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 <= 1024)) {
+               /* 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_FeatureSetDownlinkId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetDownlinkId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1024 }   /* (0..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetDownlinkId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkId = {
+       "FeatureSetDownlinkId",
+       "FeatureSetDownlinkId",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetDownlinkId_tags_1,
+       sizeof(asn_DEF_FeatureSetDownlinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkId_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetDownlinkId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_FeatureSetDownlinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkId_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetDownlinkId_constr_1, &asn_PER_type_FeatureSetDownlinkId_constr_1, FeatureSetDownlinkId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkId.h b/src/codec_utils/RRC/FeatureSetDownlinkId.h
new file mode 100644 (file)
index 0000000..8917e62
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetDownlinkId_H_
+#define        _FeatureSetDownlinkId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetDownlinkId */
+typedef long    FeatureSetDownlinkId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetDownlinkId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkId;
+asn_struct_free_f FeatureSetDownlinkId_free;
+asn_struct_print_f FeatureSetDownlinkId_print;
+asn_constr_check_f FeatureSetDownlinkId_constraint;
+ber_type_decoder_f FeatureSetDownlinkId_decode_ber;
+der_type_encoder_f FeatureSetDownlinkId_encode_der;
+xer_type_decoder_f FeatureSetDownlinkId_decode_xer;
+xer_type_encoder_f FeatureSetDownlinkId_encode_xer;
+oer_type_decoder_f FeatureSetDownlinkId_decode_oer;
+oer_type_encoder_f FeatureSetDownlinkId_encode_oer;
+per_type_decoder_f FeatureSetDownlinkId_decode_uper;
+per_type_encoder_f FeatureSetDownlinkId_encode_uper;
+per_type_decoder_f FeatureSetDownlinkId_decode_aper;
+per_type_encoder_f FeatureSetDownlinkId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetDownlinkId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.c b/src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.c
new file mode 100644 (file)
index 0000000..5d3b3ad
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetDownlinkPerCC-Id.h"
+
+int
+FeatureSetDownlinkPerCC_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 >= 1 && value <= 1024)) {
+               /* 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_FeatureSetDownlinkPerCC_Id_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (1..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetDownlinkPerCC_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (1..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkPerCC_Id = {
+       "FeatureSetDownlinkPerCC-Id",
+       "FeatureSetDownlinkPerCC-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1,
+       sizeof(asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkPerCC_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetDownlinkPerCC_Id_constr_1, &asn_PER_type_FeatureSetDownlinkPerCC_Id_constr_1, FeatureSetDownlinkPerCC_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.h b/src/codec_utils/RRC/FeatureSetDownlinkPerCC-Id.h
new file mode 100644 (file)
index 0000000..06ccf50
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetDownlinkPerCC_Id_H_
+#define        _FeatureSetDownlinkPerCC_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetDownlinkPerCC-Id */
+typedef long    FeatureSetDownlinkPerCC_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetDownlinkPerCC_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkPerCC_Id;
+asn_struct_free_f FeatureSetDownlinkPerCC_Id_free;
+asn_struct_print_f FeatureSetDownlinkPerCC_Id_print;
+asn_constr_check_f FeatureSetDownlinkPerCC_Id_constraint;
+ber_type_decoder_f FeatureSetDownlinkPerCC_Id_decode_ber;
+der_type_encoder_f FeatureSetDownlinkPerCC_Id_encode_der;
+xer_type_decoder_f FeatureSetDownlinkPerCC_Id_decode_xer;
+xer_type_encoder_f FeatureSetDownlinkPerCC_Id_encode_xer;
+oer_type_decoder_f FeatureSetDownlinkPerCC_Id_decode_oer;
+oer_type_encoder_f FeatureSetDownlinkPerCC_Id_encode_oer;
+per_type_decoder_f FeatureSetDownlinkPerCC_Id_decode_uper;
+per_type_encoder_f FeatureSetDownlinkPerCC_Id_encode_uper;
+per_type_decoder_f FeatureSetDownlinkPerCC_Id_decode_aper;
+per_type_encoder_f FeatureSetDownlinkPerCC_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetDownlinkPerCC_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkPerCC.c b/src/codec_utils/RRC/FeatureSetDownlinkPerCC.c
new file mode 100644 (file)
index 0000000..4160f72
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetDownlinkPerCC.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_channelBW_90mhz_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_channelBW_90mhz_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_channelBW_90mhz_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_channelBW_90mhz_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_channelBW_90mhz_specs_4 = {
+       asn_MAP_channelBW_90mhz_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_channelBW_90mhz_enum2value_4,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_channelBW_90mhz_tags_4[] = {
+       (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_channelBW_90mhz_4 = {
+       "channelBW-90mhz",
+       "channelBW-90mhz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_channelBW_90mhz_tags_4,
+       sizeof(asn_DEF_channelBW_90mhz_tags_4)
+               /sizeof(asn_DEF_channelBW_90mhz_tags_4[0]) - 1, /* 1 */
+       asn_DEF_channelBW_90mhz_tags_4, /* Same as above */
+       sizeof(asn_DEF_channelBW_90mhz_tags_4)
+               /sizeof(asn_DEF_channelBW_90mhz_tags_4[0]), /* 2 */
+       { &asn_OER_type_channelBW_90mhz_constr_4, &asn_PER_type_channelBW_90mhz_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_channelBW_90mhz_specs_4        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSetDownlinkPerCC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetDownlinkPerCC, supportedSubcarrierSpacingDL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedSubcarrierSpacingDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetDownlinkPerCC, supportedBandwidthDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SupportedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedBandwidthDL"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetDownlinkPerCC, channelBW_90mhz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_channelBW_90mhz_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "channelBW-90mhz"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetDownlinkPerCC, maxNumberMIMO_LayersPDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberMIMO-LayersPDSCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetDownlinkPerCC, supportedModulationOrderDL),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ModulationOrder,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedModulationOrderDL"
+               },
+};
+static const int asn_MAP_FeatureSetDownlinkPerCC_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_FeatureSetDownlinkPerCC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSetDownlinkPerCC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedSubcarrierSpacingDL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* supportedBandwidthDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* channelBW-90mhz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxNumberMIMO-LayersPDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* supportedModulationOrderDL */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FeatureSetDownlinkPerCC_specs_1 = {
+       sizeof(struct FeatureSetDownlinkPerCC),
+       offsetof(struct FeatureSetDownlinkPerCC, _asn_ctx),
+       asn_MAP_FeatureSetDownlinkPerCC_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_FeatureSetDownlinkPerCC_oms_1,  /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkPerCC = {
+       "FeatureSetDownlinkPerCC",
+       "FeatureSetDownlinkPerCC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FeatureSetDownlinkPerCC_tags_1,
+       sizeof(asn_DEF_FeatureSetDownlinkPerCC_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkPerCC_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetDownlinkPerCC_tags_1, /* Same as above */
+       sizeof(asn_DEF_FeatureSetDownlinkPerCC_tags_1)
+               /sizeof(asn_DEF_FeatureSetDownlinkPerCC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FeatureSetDownlinkPerCC_1,
+       5,      /* Elements count */
+       &asn_SPC_FeatureSetDownlinkPerCC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetDownlinkPerCC.h b/src/codec_utils/RRC/FeatureSetDownlinkPerCC.h
new file mode 100644 (file)
index 0000000..415da3a
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetDownlinkPerCC_H_
+#define        _FeatureSetDownlinkPerCC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SubcarrierSpacing.h"
+#include "SupportedBandwidth.h"
+#include <NativeEnumerated.h>
+#include "MIMO-LayersDL.h"
+#include "ModulationOrder.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FeatureSetDownlinkPerCC__channelBW_90mhz {
+       FeatureSetDownlinkPerCC__channelBW_90mhz_supported      = 0
+} e_FeatureSetDownlinkPerCC__channelBW_90mhz;
+
+/* FeatureSetDownlinkPerCC */
+typedef struct FeatureSetDownlinkPerCC {
+       SubcarrierSpacing_t      supportedSubcarrierSpacingDL;
+       SupportedBandwidth_t     supportedBandwidthDL;
+       long    *channelBW_90mhz;       /* OPTIONAL */
+       MIMO_LayersDL_t *maxNumberMIMO_LayersPDSCH;     /* OPTIONAL */
+       ModulationOrder_t       *supportedModulationOrderDL;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetDownlinkPerCC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_channelBW_90mhz_4;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetDownlinkPerCC;
+extern asn_SEQUENCE_specifics_t asn_SPC_FeatureSetDownlinkPerCC_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetDownlinkPerCC_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetDownlinkPerCC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.c b/src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.c
new file mode 100644 (file)
index 0000000..279733d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetEUTRA-DownlinkId.h"
+
+int
+FeatureSetEUTRA_DownlinkId_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 <= 256)) {
+               /* 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_FeatureSetEUTRA_DownlinkId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..256) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetEUTRA_DownlinkId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  256 }      /* (0..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetEUTRA_DownlinkId = {
+       "FeatureSetEUTRA-DownlinkId",
+       "FeatureSetEUTRA-DownlinkId",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1,
+       sizeof(asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetEUTRA_DownlinkId_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetEUTRA_DownlinkId_constr_1, &asn_PER_type_FeatureSetEUTRA_DownlinkId_constr_1, FeatureSetEUTRA_DownlinkId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.h b/src/codec_utils/RRC/FeatureSetEUTRA-DownlinkId.h
new file mode 100644 (file)
index 0000000..1af783d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetEUTRA_DownlinkId_H_
+#define        _FeatureSetEUTRA_DownlinkId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetEUTRA-DownlinkId */
+typedef long    FeatureSetEUTRA_DownlinkId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetEUTRA_DownlinkId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetEUTRA_DownlinkId;
+asn_struct_free_f FeatureSetEUTRA_DownlinkId_free;
+asn_struct_print_f FeatureSetEUTRA_DownlinkId_print;
+asn_constr_check_f FeatureSetEUTRA_DownlinkId_constraint;
+ber_type_decoder_f FeatureSetEUTRA_DownlinkId_decode_ber;
+der_type_encoder_f FeatureSetEUTRA_DownlinkId_encode_der;
+xer_type_decoder_f FeatureSetEUTRA_DownlinkId_decode_xer;
+xer_type_encoder_f FeatureSetEUTRA_DownlinkId_encode_xer;
+oer_type_decoder_f FeatureSetEUTRA_DownlinkId_decode_oer;
+oer_type_encoder_f FeatureSetEUTRA_DownlinkId_encode_oer;
+per_type_decoder_f FeatureSetEUTRA_DownlinkId_decode_uper;
+per_type_encoder_f FeatureSetEUTRA_DownlinkId_encode_uper;
+per_type_decoder_f FeatureSetEUTRA_DownlinkId_decode_aper;
+per_type_encoder_f FeatureSetEUTRA_DownlinkId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetEUTRA_DownlinkId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.c b/src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.c
new file mode 100644 (file)
index 0000000..2a33ed8
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetEUTRA-UplinkId.h"
+
+int
+FeatureSetEUTRA_UplinkId_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 <= 256)) {
+               /* 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_FeatureSetEUTRA_UplinkId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..256) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetEUTRA_UplinkId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  256 }      /* (0..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetEUTRA_UplinkId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetEUTRA_UplinkId = {
+       "FeatureSetEUTRA-UplinkId",
+       "FeatureSetEUTRA-UplinkId",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetEUTRA_UplinkId_tags_1,
+       sizeof(asn_DEF_FeatureSetEUTRA_UplinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetEUTRA_UplinkId_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetEUTRA_UplinkId_tags_1,        /* Same as above */
+       sizeof(asn_DEF_FeatureSetEUTRA_UplinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetEUTRA_UplinkId_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetEUTRA_UplinkId_constr_1, &asn_PER_type_FeatureSetEUTRA_UplinkId_constr_1, FeatureSetEUTRA_UplinkId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.h b/src/codec_utils/RRC/FeatureSetEUTRA-UplinkId.h
new file mode 100644 (file)
index 0000000..66bb185
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetEUTRA_UplinkId_H_
+#define        _FeatureSetEUTRA_UplinkId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetEUTRA-UplinkId */
+typedef long    FeatureSetEUTRA_UplinkId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetEUTRA_UplinkId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetEUTRA_UplinkId;
+asn_struct_free_f FeatureSetEUTRA_UplinkId_free;
+asn_struct_print_f FeatureSetEUTRA_UplinkId_print;
+asn_constr_check_f FeatureSetEUTRA_UplinkId_constraint;
+ber_type_decoder_f FeatureSetEUTRA_UplinkId_decode_ber;
+der_type_encoder_f FeatureSetEUTRA_UplinkId_encode_der;
+xer_type_decoder_f FeatureSetEUTRA_UplinkId_decode_xer;
+xer_type_encoder_f FeatureSetEUTRA_UplinkId_encode_xer;
+oer_type_decoder_f FeatureSetEUTRA_UplinkId_decode_oer;
+oer_type_encoder_f FeatureSetEUTRA_UplinkId_encode_oer;
+per_type_decoder_f FeatureSetEUTRA_UplinkId_decode_uper;
+per_type_encoder_f FeatureSetEUTRA_UplinkId_encode_uper;
+per_type_decoder_f FeatureSetEUTRA_UplinkId_decode_aper;
+per_type_encoder_f FeatureSetEUTRA_UplinkId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetEUTRA_UplinkId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetEntryIndex.c b/src/codec_utils/RRC/FeatureSetEntryIndex.c
new file mode 100644 (file)
index 0000000..b355b2f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetEntryIndex.h"
+
+int
+FeatureSetEntryIndex_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 <= 128)) {
+               /* 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_FeatureSetEntryIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..128) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetEntryIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (1..128) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetEntryIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetEntryIndex = {
+       "FeatureSetEntryIndex",
+       "FeatureSetEntryIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetEntryIndex_tags_1,
+       sizeof(asn_DEF_FeatureSetEntryIndex_tags_1)
+               /sizeof(asn_DEF_FeatureSetEntryIndex_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetEntryIndex_tags_1,    /* Same as above */
+       sizeof(asn_DEF_FeatureSetEntryIndex_tags_1)
+               /sizeof(asn_DEF_FeatureSetEntryIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetEntryIndex_constr_1, &asn_PER_type_FeatureSetEntryIndex_constr_1, FeatureSetEntryIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetEntryIndex.h b/src/codec_utils/RRC/FeatureSetEntryIndex.h
new file mode 100644 (file)
index 0000000..aa4a231
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetEntryIndex_H_
+#define        _FeatureSetEntryIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetEntryIndex */
+typedef long    FeatureSetEntryIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetEntryIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetEntryIndex;
+asn_struct_free_f FeatureSetEntryIndex_free;
+asn_struct_print_f FeatureSetEntryIndex_print;
+asn_constr_check_f FeatureSetEntryIndex_constraint;
+ber_type_decoder_f FeatureSetEntryIndex_decode_ber;
+der_type_encoder_f FeatureSetEntryIndex_encode_der;
+xer_type_decoder_f FeatureSetEntryIndex_decode_xer;
+xer_type_encoder_f FeatureSetEntryIndex_encode_xer;
+oer_type_decoder_f FeatureSetEntryIndex_decode_oer;
+oer_type_encoder_f FeatureSetEntryIndex_encode_oer;
+per_type_decoder_f FeatureSetEntryIndex_decode_uper;
+per_type_encoder_f FeatureSetEntryIndex_encode_uper;
+per_type_decoder_f FeatureSetEntryIndex_decode_aper;
+per_type_encoder_f FeatureSetEntryIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetEntryIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetUplink.c b/src/codec_utils/RRC/FeatureSetUplink.c
new file mode 100644 (file)
index 0000000..4fba5ee
--- /dev/null
@@ -0,0 +1,809 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetUplink.h"
+
+#include "SRS-TxSwitch.h"
+#include "SRS-Resources.h"
+#include "CSI-ReportFramework.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.
+ */
+static int
+memb_featureSetListPerUplinkCC_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 <= 32)) {
+               /* 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_featureSetListPerUplinkCC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_featureSetListPerUplinkCC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scalingFactor_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scalingFactor_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_crossCarrierScheduling_OtherSCS_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_crossCarrierScheduling_OtherSCS_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_searchSpaceSharingCA_UL_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_searchSpaceSharingCA_UL_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoPUCCH_Group_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUCCH_Group_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicSwitchSUL_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicSwitchSUL_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousTxSUL_NonSUL_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousTxSUL_NonSUL_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_15kHz_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_15kHz_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_30kHz_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_30kHz_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_60kHz_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_120kHz_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_120kHz_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetListPerUplinkCC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetListPerUplinkCC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_featureSetListPerUplinkCC_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FeatureSetUplinkPerCC_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetListPerUplinkCC_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetListPerUplinkCC_specs_2 = {
+       sizeof(struct FeatureSetUplink__featureSetListPerUplinkCC),
+       offsetof(struct FeatureSetUplink__featureSetListPerUplinkCC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetListPerUplinkCC_2 = {
+       "featureSetListPerUplinkCC",
+       "featureSetListPerUplinkCC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetListPerUplinkCC_tags_2,
+       sizeof(asn_DEF_featureSetListPerUplinkCC_tags_2)
+               /sizeof(asn_DEF_featureSetListPerUplinkCC_tags_2[0]) - 1, /* 1 */
+       asn_DEF_featureSetListPerUplinkCC_tags_2,       /* Same as above */
+       sizeof(asn_DEF_featureSetListPerUplinkCC_tags_2)
+               /sizeof(asn_DEF_featureSetListPerUplinkCC_tags_2[0]), /* 2 */
+       { &asn_OER_type_featureSetListPerUplinkCC_constr_2, &asn_PER_type_featureSetListPerUplinkCC_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetListPerUplinkCC_2,
+       1,      /* Single element */
+       &asn_SPC_featureSetListPerUplinkCC_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scalingFactor_value2enum_4[] = {
+       { 0,    4,      "f0p4" },
+       { 1,    5,      "f0p75" },
+       { 2,    4,      "f0p8" }
+};
+static const unsigned int asn_MAP_scalingFactor_enum2value_4[] = {
+       0,      /* f0p4(0) */
+       1,      /* f0p75(1) */
+       2       /* f0p8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scalingFactor_specs_4 = {
+       asn_MAP_scalingFactor_value2enum_4,     /* "tag" => N; sorted by tag */
+       asn_MAP_scalingFactor_enum2value_4,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scalingFactor_tags_4[] = {
+       (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_scalingFactor_4 = {
+       "scalingFactor",
+       "scalingFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scalingFactor_tags_4,
+       sizeof(asn_DEF_scalingFactor_tags_4)
+               /sizeof(asn_DEF_scalingFactor_tags_4[0]) - 1, /* 1 */
+       asn_DEF_scalingFactor_tags_4,   /* Same as above */
+       sizeof(asn_DEF_scalingFactor_tags_4)
+               /sizeof(asn_DEF_scalingFactor_tags_4[0]), /* 2 */
+       { &asn_OER_type_scalingFactor_constr_4, &asn_PER_type_scalingFactor_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scalingFactor_specs_4  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_crossCarrierScheduling_OtherSCS_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_crossCarrierScheduling_OtherSCS_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_crossCarrierScheduling_OtherSCS_specs_8 = {
+       asn_MAP_crossCarrierScheduling_OtherSCS_value2enum_8,   /* "tag" => N; sorted by tag */
+       asn_MAP_crossCarrierScheduling_OtherSCS_enum2value_8,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_crossCarrierScheduling_OtherSCS_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_crossCarrierScheduling_OtherSCS_8 = {
+       "crossCarrierScheduling-OtherSCS",
+       "crossCarrierScheduling-OtherSCS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_crossCarrierScheduling_OtherSCS_tags_8,
+       sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_8)
+               /sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_8[0]) - 1, /* 1 */
+       asn_DEF_crossCarrierScheduling_OtherSCS_tags_8, /* Same as above */
+       sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_8)
+               /sizeof(asn_DEF_crossCarrierScheduling_OtherSCS_tags_8[0]), /* 2 */
+       { &asn_OER_type_crossCarrierScheduling_OtherSCS_constr_8, &asn_PER_type_crossCarrierScheduling_OtherSCS_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_crossCarrierScheduling_OtherSCS_specs_8        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_searchSpaceSharingCA_UL_value2enum_11[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_searchSpaceSharingCA_UL_enum2value_11[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_searchSpaceSharingCA_UL_specs_11 = {
+       asn_MAP_searchSpaceSharingCA_UL_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_searchSpaceSharingCA_UL_enum2value_11,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_searchSpaceSharingCA_UL_tags_11[] = {
+       (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_searchSpaceSharingCA_UL_11 = {
+       "searchSpaceSharingCA-UL",
+       "searchSpaceSharingCA-UL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_searchSpaceSharingCA_UL_tags_11,
+       sizeof(asn_DEF_searchSpaceSharingCA_UL_tags_11)
+               /sizeof(asn_DEF_searchSpaceSharingCA_UL_tags_11[0]) - 1, /* 1 */
+       asn_DEF_searchSpaceSharingCA_UL_tags_11,        /* Same as above */
+       sizeof(asn_DEF_searchSpaceSharingCA_UL_tags_11)
+               /sizeof(asn_DEF_searchSpaceSharingCA_UL_tags_11[0]), /* 2 */
+       { &asn_OER_type_searchSpaceSharingCA_UL_constr_11, &asn_PER_type_searchSpaceSharingCA_UL_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_searchSpaceSharingCA_UL_specs_11       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUCCH_Group_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPUCCH_Group_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUCCH_Group_specs_15 = {
+       asn_MAP_twoPUCCH_Group_value2enum_15,   /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUCCH_Group_enum2value_15,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUCCH_Group_tags_15[] = {
+       (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_twoPUCCH_Group_15 = {
+       "twoPUCCH-Group",
+       "twoPUCCH-Group",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUCCH_Group_tags_15,
+       sizeof(asn_DEF_twoPUCCH_Group_tags_15)
+               /sizeof(asn_DEF_twoPUCCH_Group_tags_15[0]) - 1, /* 1 */
+       asn_DEF_twoPUCCH_Group_tags_15, /* Same as above */
+       sizeof(asn_DEF_twoPUCCH_Group_tags_15)
+               /sizeof(asn_DEF_twoPUCCH_Group_tags_15[0]), /* 2 */
+       { &asn_OER_type_twoPUCCH_Group_constr_15, &asn_PER_type_twoPUCCH_Group_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUCCH_Group_specs_15        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicSwitchSUL_value2enum_17[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicSwitchSUL_enum2value_17[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicSwitchSUL_specs_17 = {
+       asn_MAP_dynamicSwitchSUL_value2enum_17, /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicSwitchSUL_enum2value_17, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicSwitchSUL_tags_17[] = {
+       (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_dynamicSwitchSUL_17 = {
+       "dynamicSwitchSUL",
+       "dynamicSwitchSUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicSwitchSUL_tags_17,
+       sizeof(asn_DEF_dynamicSwitchSUL_tags_17)
+               /sizeof(asn_DEF_dynamicSwitchSUL_tags_17[0]) - 1, /* 1 */
+       asn_DEF_dynamicSwitchSUL_tags_17,       /* Same as above */
+       sizeof(asn_DEF_dynamicSwitchSUL_tags_17)
+               /sizeof(asn_DEF_dynamicSwitchSUL_tags_17[0]), /* 2 */
+       { &asn_OER_type_dynamicSwitchSUL_constr_17, &asn_PER_type_dynamicSwitchSUL_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicSwitchSUL_specs_17      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousTxSUL_NonSUL_value2enum_19[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousTxSUL_NonSUL_enum2value_19[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousTxSUL_NonSUL_specs_19 = {
+       asn_MAP_simultaneousTxSUL_NonSUL_value2enum_19, /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousTxSUL_NonSUL_enum2value_19, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousTxSUL_NonSUL_tags_19[] = {
+       (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_simultaneousTxSUL_NonSUL_19 = {
+       "simultaneousTxSUL-NonSUL",
+       "simultaneousTxSUL-NonSUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousTxSUL_NonSUL_tags_19,
+       sizeof(asn_DEF_simultaneousTxSUL_NonSUL_tags_19)
+               /sizeof(asn_DEF_simultaneousTxSUL_NonSUL_tags_19[0]) - 1, /* 1 */
+       asn_DEF_simultaneousTxSUL_NonSUL_tags_19,       /* Same as above */
+       sizeof(asn_DEF_simultaneousTxSUL_NonSUL_tags_19)
+               /sizeof(asn_DEF_simultaneousTxSUL_NonSUL_tags_19[0]), /* 2 */
+       { &asn_OER_type_simultaneousTxSUL_NonSUL_constr_19, &asn_PER_type_simultaneousTxSUL_NonSUL_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousTxSUL_NonSUL_specs_19      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_15kHz_value2enum_22[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_15kHz_enum2value_22[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_15kHz_specs_22 = {
+       asn_MAP_scs_15kHz_value2enum_22,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_15kHz_enum2value_22,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_15kHz_tags_22[] = {
+       (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_scs_15kHz_22 = {
+       "scs-15kHz",
+       "scs-15kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_15kHz_tags_22,
+       sizeof(asn_DEF_scs_15kHz_tags_22)
+               /sizeof(asn_DEF_scs_15kHz_tags_22[0]) - 1, /* 1 */
+       asn_DEF_scs_15kHz_tags_22,      /* Same as above */
+       sizeof(asn_DEF_scs_15kHz_tags_22)
+               /sizeof(asn_DEF_scs_15kHz_tags_22[0]), /* 2 */
+       { &asn_OER_type_scs_15kHz_constr_22, &asn_PER_type_scs_15kHz_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_15kHz_specs_22     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_30kHz_value2enum_26[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_30kHz_enum2value_26[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_30kHz_specs_26 = {
+       asn_MAP_scs_30kHz_value2enum_26,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_30kHz_enum2value_26,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_30kHz_tags_26[] = {
+       (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_scs_30kHz_26 = {
+       "scs-30kHz",
+       "scs-30kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_30kHz_tags_26,
+       sizeof(asn_DEF_scs_30kHz_tags_26)
+               /sizeof(asn_DEF_scs_30kHz_tags_26[0]) - 1, /* 1 */
+       asn_DEF_scs_30kHz_tags_26,      /* Same as above */
+       sizeof(asn_DEF_scs_30kHz_tags_26)
+               /sizeof(asn_DEF_scs_30kHz_tags_26[0]), /* 2 */
+       { &asn_OER_type_scs_30kHz_constr_26, &asn_PER_type_scs_30kHz_constr_26, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_30kHz_specs_26     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_30[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_30[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_30 = {
+       asn_MAP_scs_60kHz_value2enum_30,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_30,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_30[] = {
+       (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_scs_60kHz_30 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_30,
+       sizeof(asn_DEF_scs_60kHz_tags_30)
+               /sizeof(asn_DEF_scs_60kHz_tags_30[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_30,      /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_30)
+               /sizeof(asn_DEF_scs_60kHz_tags_30[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_30, &asn_PER_type_scs_60kHz_constr_30, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_30     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_120kHz_value2enum_34[] = {
+       { 0,    5,      "upto2" },
+       { 1,    5,      "upto4" },
+       { 2,    5,      "upto7" }
+};
+static const unsigned int asn_MAP_scs_120kHz_enum2value_34[] = {
+       0,      /* upto2(0) */
+       1,      /* upto4(1) */
+       2       /* upto7(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_120kHz_specs_34 = {
+       asn_MAP_scs_120kHz_value2enum_34,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_120kHz_enum2value_34,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_120kHz_tags_34[] = {
+       (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_scs_120kHz_34 = {
+       "scs-120kHz",
+       "scs-120kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_120kHz_tags_34,
+       sizeof(asn_DEF_scs_120kHz_tags_34)
+               /sizeof(asn_DEF_scs_120kHz_tags_34[0]) - 1, /* 1 */
+       asn_DEF_scs_120kHz_tags_34,     /* Same as above */
+       sizeof(asn_DEF_scs_120kHz_tags_34)
+               /sizeof(asn_DEF_scs_120kHz_tags_34[0]), /* 2 */
+       { &asn_OER_type_scs_120kHz_constr_34, &asn_PER_type_scs_120kHz_constr_34, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_120kHz_specs_34    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pusch_DifferentTB_PerSlot_21[] = {
+       { ATF_POINTER, 4, offsetof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_15kHz_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_30kHz_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_120kHz_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_pusch_DifferentTB_PerSlot_oms_21[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_pusch_DifferentTB_PerSlot_tags_21[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_pusch_DifferentTB_PerSlot_tag2el_21[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_pusch_DifferentTB_PerSlot_specs_21 = {
+       sizeof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot),
+       offsetof(struct FeatureSetUplink__pusch_DifferentTB_PerSlot, _asn_ctx),
+       asn_MAP_pusch_DifferentTB_PerSlot_tag2el_21,
+       4,      /* Count of tags in the map */
+       asn_MAP_pusch_DifferentTB_PerSlot_oms_21,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_DifferentTB_PerSlot_21 = {
+       "pusch-DifferentTB-PerSlot",
+       "pusch-DifferentTB-PerSlot",
+       &asn_OP_SEQUENCE,
+       asn_DEF_pusch_DifferentTB_PerSlot_tags_21,
+       sizeof(asn_DEF_pusch_DifferentTB_PerSlot_tags_21)
+               /sizeof(asn_DEF_pusch_DifferentTB_PerSlot_tags_21[0]) - 1, /* 1 */
+       asn_DEF_pusch_DifferentTB_PerSlot_tags_21,      /* Same as above */
+       sizeof(asn_DEF_pusch_DifferentTB_PerSlot_tags_21)
+               /sizeof(asn_DEF_pusch_DifferentTB_PerSlot_tags_21[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_pusch_DifferentTB_PerSlot_21,
+       4,      /* Elements count */
+       &asn_SPC_pusch_DifferentTB_PerSlot_specs_21     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSetUplink_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetUplink, featureSetListPerUplinkCC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_featureSetListPerUplinkCC_2,
+               0,
+               { &asn_OER_memb_featureSetListPerUplinkCC_constr_2, &asn_PER_memb_featureSetListPerUplinkCC_constr_2,  memb_featureSetListPerUplinkCC_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetListPerUplinkCC"
+               },
+       { ATF_POINTER, 11, offsetof(struct FeatureSetUplink, scalingFactor),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scalingFactor_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scalingFactor"
+               },
+       { ATF_POINTER, 10, offsetof(struct FeatureSetUplink, crossCarrierScheduling_OtherSCS),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_crossCarrierScheduling_OtherSCS_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "crossCarrierScheduling-OtherSCS"
+               },
+       { ATF_POINTER, 9, offsetof(struct FeatureSetUplink, intraBandFreqSeparationUL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqSeparationClass,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraBandFreqSeparationUL"
+               },
+       { ATF_POINTER, 8, offsetof(struct FeatureSetUplink, searchSpaceSharingCA_UL),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_searchSpaceSharingCA_UL_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceSharingCA-UL"
+               },
+       { ATF_POINTER, 7, offsetof(struct FeatureSetUplink, srs_TxSwitch),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_TxSwitch,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-TxSwitch"
+               },
+       { ATF_POINTER, 6, offsetof(struct FeatureSetUplink, supportedSRS_Resources),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_Resources,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedSRS-Resources"
+               },
+       { ATF_POINTER, 5, offsetof(struct FeatureSetUplink, twoPUCCH_Group),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUCCH_Group_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUCCH-Group"
+               },
+       { ATF_POINTER, 4, offsetof(struct FeatureSetUplink, dynamicSwitchSUL),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicSwitchSUL_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicSwitchSUL"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetUplink, simultaneousTxSUL_NonSUL),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousTxSUL_NonSUL_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousTxSUL-NonSUL"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetUplink, pusch_DifferentTB_PerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_pusch_DifferentTB_PerSlot_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-DifferentTB-PerSlot"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetUplink, csi_ReportFramework),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_ReportFramework,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-ReportFramework"
+               },
+};
+static const int asn_MAP_FeatureSetUplink_oms_1[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+static const ber_tlv_tag_t asn_DEF_FeatureSetUplink_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSetUplink_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* featureSetListPerUplinkCC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scalingFactor */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* crossCarrierScheduling-OtherSCS */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* intraBandFreqSeparationUL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* searchSpaceSharingCA-UL */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* srs-TxSwitch */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* supportedSRS-Resources */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* twoPUCCH-Group */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* dynamicSwitchSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* simultaneousTxSUL-NonSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* pusch-DifferentTB-PerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* csi-ReportFramework */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FeatureSetUplink_specs_1 = {
+       sizeof(struct FeatureSetUplink),
+       offsetof(struct FeatureSetUplink, _asn_ctx),
+       asn_MAP_FeatureSetUplink_tag2el_1,
+       12,     /* Count of tags in the map */
+       asn_MAP_FeatureSetUplink_oms_1, /* Optional members */
+       11, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetUplink = {
+       "FeatureSetUplink",
+       "FeatureSetUplink",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FeatureSetUplink_tags_1,
+       sizeof(asn_DEF_FeatureSetUplink_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplink_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetUplink_tags_1,        /* Same as above */
+       sizeof(asn_DEF_FeatureSetUplink_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplink_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FeatureSetUplink_1,
+       12,     /* Elements count */
+       &asn_SPC_FeatureSetUplink_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetUplink.h b/src/codec_utils/RRC/FeatureSetUplink.h
new file mode 100644 (file)
index 0000000..f2746d6
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetUplink_H_
+#define        _FeatureSetUplink_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "FreqSeparationClass.h"
+#include "FeatureSetUplinkPerCC-Id.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FeatureSetUplink__scalingFactor {
+       FeatureSetUplink__scalingFactor_f0p4    = 0,
+       FeatureSetUplink__scalingFactor_f0p75   = 1,
+       FeatureSetUplink__scalingFactor_f0p8    = 2
+} e_FeatureSetUplink__scalingFactor;
+typedef enum FeatureSetUplink__crossCarrierScheduling_OtherSCS {
+       FeatureSetUplink__crossCarrierScheduling_OtherSCS_supported     = 0
+} e_FeatureSetUplink__crossCarrierScheduling_OtherSCS;
+typedef enum FeatureSetUplink__searchSpaceSharingCA_UL {
+       FeatureSetUplink__searchSpaceSharingCA_UL_supported     = 0
+} e_FeatureSetUplink__searchSpaceSharingCA_UL;
+typedef enum FeatureSetUplink__twoPUCCH_Group {
+       FeatureSetUplink__twoPUCCH_Group_supported      = 0
+} e_FeatureSetUplink__twoPUCCH_Group;
+typedef enum FeatureSetUplink__dynamicSwitchSUL {
+       FeatureSetUplink__dynamicSwitchSUL_supported    = 0
+} e_FeatureSetUplink__dynamicSwitchSUL;
+typedef enum FeatureSetUplink__simultaneousTxSUL_NonSUL {
+       FeatureSetUplink__simultaneousTxSUL_NonSUL_supported    = 0
+} e_FeatureSetUplink__simultaneousTxSUL_NonSUL;
+typedef enum FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_15kHz {
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_15kHz_upto2    = 0,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_15kHz_upto4    = 1,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_15kHz_upto7    = 2
+} e_FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_15kHz;
+typedef enum FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_30kHz {
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_30kHz_upto2    = 0,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_30kHz_upto4    = 1,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_30kHz_upto7    = 2
+} e_FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_30kHz;
+typedef enum FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_60kHz {
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_60kHz_upto2    = 0,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_60kHz_upto4    = 1,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_60kHz_upto7    = 2
+} e_FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_60kHz;
+typedef enum FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_120kHz {
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_120kHz_upto2   = 0,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_120kHz_upto4   = 1,
+       FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_120kHz_upto7   = 2
+} e_FeatureSetUplink__pusch_DifferentTB_PerSlot__scs_120kHz;
+
+/* Forward declarations */
+struct SRS_TxSwitch;
+struct SRS_Resources;
+struct CSI_ReportFramework;
+
+/* FeatureSetUplink */
+typedef struct FeatureSetUplink {
+       struct FeatureSetUplink__featureSetListPerUplinkCC {
+               A_SEQUENCE_OF(FeatureSetUplinkPerCC_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } featureSetListPerUplinkCC;
+       long    *scalingFactor; /* OPTIONAL */
+       long    *crossCarrierScheduling_OtherSCS;       /* OPTIONAL */
+       FreqSeparationClass_t   *intraBandFreqSeparationUL;     /* OPTIONAL */
+       long    *searchSpaceSharingCA_UL;       /* OPTIONAL */
+       struct SRS_TxSwitch     *srs_TxSwitch;  /* OPTIONAL */
+       struct SRS_Resources    *supportedSRS_Resources;        /* OPTIONAL */
+       long    *twoPUCCH_Group;        /* OPTIONAL */
+       long    *dynamicSwitchSUL;      /* OPTIONAL */
+       long    *simultaneousTxSUL_NonSUL;      /* OPTIONAL */
+       struct FeatureSetUplink__pusch_DifferentTB_PerSlot {
+               long    *scs_15kHz;     /* OPTIONAL */
+               long    *scs_30kHz;     /* OPTIONAL */
+               long    *scs_60kHz;     /* OPTIONAL */
+               long    *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pusch_DifferentTB_PerSlot;
+       struct CSI_ReportFramework      *csi_ReportFramework;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetUplink_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_scalingFactor_4;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_crossCarrierScheduling_OtherSCS_8;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_searchSpaceSharingCA_UL_11;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUCCH_Group_15;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicSwitchSUL_17;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousTxSUL_NonSUL_19;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_15kHz_22;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_30kHz_26;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_30;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_120kHz_34; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetUplink;
+extern asn_SEQUENCE_specifics_t asn_SPC_FeatureSetUplink_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetUplink_1[12];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetUplink_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetUplinkId.c b/src/codec_utils/RRC/FeatureSetUplinkId.c
new file mode 100644 (file)
index 0000000..0d95e12
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetUplinkId.h"
+
+int
+FeatureSetUplinkId_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 <= 1024)) {
+               /* 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_FeatureSetUplinkId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetUplinkId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1024 }   /* (0..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetUplinkId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkId = {
+       "FeatureSetUplinkId",
+       "FeatureSetUplinkId",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetUplinkId_tags_1,
+       sizeof(asn_DEF_FeatureSetUplinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkId_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetUplinkId_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FeatureSetUplinkId_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkId_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetUplinkId_constr_1, &asn_PER_type_FeatureSetUplinkId_constr_1, FeatureSetUplinkId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetUplinkId.h b/src/codec_utils/RRC/FeatureSetUplinkId.h
new file mode 100644 (file)
index 0000000..06c640f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetUplinkId_H_
+#define        _FeatureSetUplinkId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetUplinkId */
+typedef long    FeatureSetUplinkId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetUplinkId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkId;
+asn_struct_free_f FeatureSetUplinkId_free;
+asn_struct_print_f FeatureSetUplinkId_print;
+asn_constr_check_f FeatureSetUplinkId_constraint;
+ber_type_decoder_f FeatureSetUplinkId_decode_ber;
+der_type_encoder_f FeatureSetUplinkId_encode_der;
+xer_type_decoder_f FeatureSetUplinkId_decode_xer;
+xer_type_encoder_f FeatureSetUplinkId_encode_xer;
+oer_type_decoder_f FeatureSetUplinkId_decode_oer;
+oer_type_encoder_f FeatureSetUplinkId_encode_oer;
+per_type_decoder_f FeatureSetUplinkId_decode_uper;
+per_type_encoder_f FeatureSetUplinkId_encode_uper;
+per_type_decoder_f FeatureSetUplinkId_decode_aper;
+per_type_encoder_f FeatureSetUplinkId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetUplinkId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.c b/src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.c
new file mode 100644 (file)
index 0000000..75c6ebe
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetUplinkPerCC-Id.h"
+
+int
+FeatureSetUplinkPerCC_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 >= 1 && value <= 1024)) {
+               /* 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_FeatureSetUplinkPerCC_Id_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (1..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FeatureSetUplinkPerCC_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (1..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetUplinkPerCC_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkPerCC_Id = {
+       "FeatureSetUplinkPerCC-Id",
+       "FeatureSetUplinkPerCC-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_FeatureSetUplinkPerCC_Id_tags_1,
+       sizeof(asn_DEF_FeatureSetUplinkPerCC_Id_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkPerCC_Id_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetUplinkPerCC_Id_tags_1,        /* Same as above */
+       sizeof(asn_DEF_FeatureSetUplinkPerCC_Id_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkPerCC_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetUplinkPerCC_Id_constr_1, &asn_PER_type_FeatureSetUplinkPerCC_Id_constr_1, FeatureSetUplinkPerCC_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.h b/src/codec_utils/RRC/FeatureSetUplinkPerCC-Id.h
new file mode 100644 (file)
index 0000000..32dc0a3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetUplinkPerCC_Id_H_
+#define        _FeatureSetUplinkPerCC_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FeatureSetUplinkPerCC-Id */
+typedef long    FeatureSetUplinkPerCC_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FeatureSetUplinkPerCC_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkPerCC_Id;
+asn_struct_free_f FeatureSetUplinkPerCC_Id_free;
+asn_struct_print_f FeatureSetUplinkPerCC_Id_print;
+asn_constr_check_f FeatureSetUplinkPerCC_Id_constraint;
+ber_type_decoder_f FeatureSetUplinkPerCC_Id_decode_ber;
+der_type_encoder_f FeatureSetUplinkPerCC_Id_encode_der;
+xer_type_decoder_f FeatureSetUplinkPerCC_Id_decode_xer;
+xer_type_encoder_f FeatureSetUplinkPerCC_Id_encode_xer;
+oer_type_decoder_f FeatureSetUplinkPerCC_Id_decode_oer;
+oer_type_encoder_f FeatureSetUplinkPerCC_Id_encode_oer;
+per_type_decoder_f FeatureSetUplinkPerCC_Id_decode_uper;
+per_type_encoder_f FeatureSetUplinkPerCC_Id_encode_uper;
+per_type_decoder_f FeatureSetUplinkPerCC_Id_decode_aper;
+per_type_encoder_f FeatureSetUplinkPerCC_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetUplinkPerCC_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetUplinkPerCC.c b/src/codec_utils/RRC/FeatureSetUplinkPerCC.c
new file mode 100644 (file)
index 0000000..c24c2c1
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetUplinkPerCC.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_maxNumberSRS_ResourcePerSet_constraint_6(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_channelBW_90mhz_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_channelBW_90mhz_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxNumberSRS_ResourcePerSet_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSRS_ResourcePerSet_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_channelBW_90mhz_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_channelBW_90mhz_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_channelBW_90mhz_specs_4 = {
+       asn_MAP_channelBW_90mhz_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_channelBW_90mhz_enum2value_4,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_channelBW_90mhz_tags_4[] = {
+       (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_channelBW_90mhz_4 = {
+       "channelBW-90mhz",
+       "channelBW-90mhz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_channelBW_90mhz_tags_4,
+       sizeof(asn_DEF_channelBW_90mhz_tags_4)
+               /sizeof(asn_DEF_channelBW_90mhz_tags_4[0]) - 1, /* 1 */
+       asn_DEF_channelBW_90mhz_tags_4, /* Same as above */
+       sizeof(asn_DEF_channelBW_90mhz_tags_4)
+               /sizeof(asn_DEF_channelBW_90mhz_tags_4[0]), /* 2 */
+       { &asn_OER_type_channelBW_90mhz_constr_4, &asn_PER_type_channelBW_90mhz_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_channelBW_90mhz_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_mimo_CB_PUSCH_6[] = {
+       { ATF_POINTER, 1, offsetof(struct FeatureSetUplinkPerCC__mimo_CB_PUSCH, maxNumberMIMO_LayersCB_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberMIMO-LayersCB-PUSCH"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetUplinkPerCC__mimo_CB_PUSCH, maxNumberSRS_ResourcePerSet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSRS_ResourcePerSet_constr_8, &asn_PER_memb_maxNumberSRS_ResourcePerSet_constr_8,  memb_maxNumberSRS_ResourcePerSet_constraint_6 },
+               0, 0, /* No default value */
+               "maxNumberSRS-ResourcePerSet"
+               },
+};
+static const int asn_MAP_mimo_CB_PUSCH_oms_6[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_mimo_CB_PUSCH_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_mimo_CB_PUSCH_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberMIMO-LayersCB-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* maxNumberSRS-ResourcePerSet */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_mimo_CB_PUSCH_specs_6 = {
+       sizeof(struct FeatureSetUplinkPerCC__mimo_CB_PUSCH),
+       offsetof(struct FeatureSetUplinkPerCC__mimo_CB_PUSCH, _asn_ctx),
+       asn_MAP_mimo_CB_PUSCH_tag2el_6,
+       2,      /* Count of tags in the map */
+       asn_MAP_mimo_CB_PUSCH_oms_6,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mimo_CB_PUSCH_6 = {
+       "mimo-CB-PUSCH",
+       "mimo-CB-PUSCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_mimo_CB_PUSCH_tags_6,
+       sizeof(asn_DEF_mimo_CB_PUSCH_tags_6)
+               /sizeof(asn_DEF_mimo_CB_PUSCH_tags_6[0]) - 1, /* 1 */
+       asn_DEF_mimo_CB_PUSCH_tags_6,   /* Same as above */
+       sizeof(asn_DEF_mimo_CB_PUSCH_tags_6)
+               /sizeof(asn_DEF_mimo_CB_PUSCH_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_mimo_CB_PUSCH_6,
+       2,      /* Elements count */
+       &asn_SPC_mimo_CB_PUSCH_specs_6  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSetUplinkPerCC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetUplinkPerCC, supportedSubcarrierSpacingUL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedSubcarrierSpacingUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FeatureSetUplinkPerCC, supportedBandwidthUL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SupportedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedBandwidthUL"
+               },
+       { ATF_POINTER, 4, offsetof(struct FeatureSetUplinkPerCC, channelBW_90mhz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_channelBW_90mhz_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "channelBW-90mhz"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSetUplinkPerCC, mimo_CB_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_mimo_CB_PUSCH_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mimo-CB-PUSCH"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSetUplinkPerCC, maxNumberMIMO_LayersNonCB_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberMIMO-LayersNonCB-PUSCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSetUplinkPerCC, supportedModulationOrderUL),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ModulationOrder,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedModulationOrderUL"
+               },
+};
+static const int asn_MAP_FeatureSetUplinkPerCC_oms_1[] = { 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_FeatureSetUplinkPerCC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSetUplinkPerCC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedSubcarrierSpacingUL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* supportedBandwidthUL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* channelBW-90mhz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* mimo-CB-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* maxNumberMIMO-LayersNonCB-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* supportedModulationOrderUL */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FeatureSetUplinkPerCC_specs_1 = {
+       sizeof(struct FeatureSetUplinkPerCC),
+       offsetof(struct FeatureSetUplinkPerCC, _asn_ctx),
+       asn_MAP_FeatureSetUplinkPerCC_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_FeatureSetUplinkPerCC_oms_1,    /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkPerCC = {
+       "FeatureSetUplinkPerCC",
+       "FeatureSetUplinkPerCC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FeatureSetUplinkPerCC_tags_1,
+       sizeof(asn_DEF_FeatureSetUplinkPerCC_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkPerCC_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetUplinkPerCC_tags_1,   /* Same as above */
+       sizeof(asn_DEF_FeatureSetUplinkPerCC_tags_1)
+               /sizeof(asn_DEF_FeatureSetUplinkPerCC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FeatureSetUplinkPerCC_1,
+       6,      /* Elements count */
+       &asn_SPC_FeatureSetUplinkPerCC_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetUplinkPerCC.h b/src/codec_utils/RRC/FeatureSetUplinkPerCC.h
new file mode 100644 (file)
index 0000000..f627c1a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetUplinkPerCC_H_
+#define        _FeatureSetUplinkPerCC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SubcarrierSpacing.h"
+#include "SupportedBandwidth.h"
+#include <NativeEnumerated.h>
+#include "MIMO-LayersUL.h"
+#include "ModulationOrder.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FeatureSetUplinkPerCC__channelBW_90mhz {
+       FeatureSetUplinkPerCC__channelBW_90mhz_supported        = 0
+} e_FeatureSetUplinkPerCC__channelBW_90mhz;
+
+/* FeatureSetUplinkPerCC */
+typedef struct FeatureSetUplinkPerCC {
+       SubcarrierSpacing_t      supportedSubcarrierSpacingUL;
+       SupportedBandwidth_t     supportedBandwidthUL;
+       long    *channelBW_90mhz;       /* OPTIONAL */
+       struct FeatureSetUplinkPerCC__mimo_CB_PUSCH {
+               MIMO_LayersUL_t *maxNumberMIMO_LayersCB_PUSCH;  /* OPTIONAL */
+               long     maxNumberSRS_ResourcePerSet;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *mimo_CB_PUSCH;
+       MIMO_LayersUL_t *maxNumberMIMO_LayersNonCB_PUSCH;       /* OPTIONAL */
+       ModulationOrder_t       *supportedModulationOrderUL;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetUplinkPerCC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_channelBW_90mhz_4;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetUplinkPerCC;
+extern asn_SEQUENCE_specifics_t asn_SPC_FeatureSetUplinkPerCC_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetUplinkPerCC_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetUplinkPerCC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSets.c b/src/codec_utils/RRC/FeatureSets.c
new file mode 100644 (file)
index 0000000..ae1b178
--- /dev/null
@@ -0,0 +1,402 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSets.h"
+
+#include "FeatureSetDownlink.h"
+#include "FeatureSetDownlinkPerCC.h"
+#include "FeatureSetUplink.h"
+#include "FeatureSetUplinkPerCC.h"
+static int
+memb_featureSetsDownlink_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 <= 1024)) {
+               /* 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_featureSetsDownlinkPerCC_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 <= 1024)) {
+               /* 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_featureSetsUplink_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 <= 1024)) {
+               /* 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_featureSetsUplinkPerCC_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 <= 1024)) {
+               /* 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_featureSetsDownlink_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetsDownlink_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_featureSetsDownlinkPerCC_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetsDownlinkPerCC_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_featureSetsUplink_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetsUplink_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_featureSetsUplinkPerCC_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetsUplinkPerCC_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetsDownlink_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetsDownlink_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetsDownlinkPerCC_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetsDownlinkPerCC_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetsUplink_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetsUplink_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetsUplinkPerCC_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetsUplinkPerCC_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_featureSetsDownlink_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetDownlink,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetsDownlink_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetsDownlink_specs_2 = {
+       sizeof(struct FeatureSets__featureSetsDownlink),
+       offsetof(struct FeatureSets__featureSetsDownlink, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetsDownlink_2 = {
+       "featureSetsDownlink",
+       "featureSetsDownlink",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetsDownlink_tags_2,
+       sizeof(asn_DEF_featureSetsDownlink_tags_2)
+               /sizeof(asn_DEF_featureSetsDownlink_tags_2[0]) - 1, /* 1 */
+       asn_DEF_featureSetsDownlink_tags_2,     /* Same as above */
+       sizeof(asn_DEF_featureSetsDownlink_tags_2)
+               /sizeof(asn_DEF_featureSetsDownlink_tags_2[0]), /* 2 */
+       { &asn_OER_type_featureSetsDownlink_constr_2, &asn_PER_type_featureSetsDownlink_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetsDownlink_2,
+       1,      /* Single element */
+       &asn_SPC_featureSetsDownlink_specs_2    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_featureSetsDownlinkPerCC_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetDownlinkPerCC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetsDownlinkPerCC_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetsDownlinkPerCC_specs_4 = {
+       sizeof(struct FeatureSets__featureSetsDownlinkPerCC),
+       offsetof(struct FeatureSets__featureSetsDownlinkPerCC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetsDownlinkPerCC_4 = {
+       "featureSetsDownlinkPerCC",
+       "featureSetsDownlinkPerCC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetsDownlinkPerCC_tags_4,
+       sizeof(asn_DEF_featureSetsDownlinkPerCC_tags_4)
+               /sizeof(asn_DEF_featureSetsDownlinkPerCC_tags_4[0]) - 1, /* 1 */
+       asn_DEF_featureSetsDownlinkPerCC_tags_4,        /* Same as above */
+       sizeof(asn_DEF_featureSetsDownlinkPerCC_tags_4)
+               /sizeof(asn_DEF_featureSetsDownlinkPerCC_tags_4[0]), /* 2 */
+       { &asn_OER_type_featureSetsDownlinkPerCC_constr_4, &asn_PER_type_featureSetsDownlinkPerCC_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetsDownlinkPerCC_4,
+       1,      /* Single element */
+       &asn_SPC_featureSetsDownlinkPerCC_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_featureSetsUplink_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetUplink,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetsUplink_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetsUplink_specs_6 = {
+       sizeof(struct FeatureSets__featureSetsUplink),
+       offsetof(struct FeatureSets__featureSetsUplink, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetsUplink_6 = {
+       "featureSetsUplink",
+       "featureSetsUplink",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetsUplink_tags_6,
+       sizeof(asn_DEF_featureSetsUplink_tags_6)
+               /sizeof(asn_DEF_featureSetsUplink_tags_6[0]) - 1, /* 1 */
+       asn_DEF_featureSetsUplink_tags_6,       /* Same as above */
+       sizeof(asn_DEF_featureSetsUplink_tags_6)
+               /sizeof(asn_DEF_featureSetsUplink_tags_6[0]), /* 2 */
+       { &asn_OER_type_featureSetsUplink_constr_6, &asn_PER_type_featureSetsUplink_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetsUplink_6,
+       1,      /* Single element */
+       &asn_SPC_featureSetsUplink_specs_6      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_featureSetsUplinkPerCC_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetUplinkPerCC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetsUplinkPerCC_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetsUplinkPerCC_specs_8 = {
+       sizeof(struct FeatureSets__featureSetsUplinkPerCC),
+       offsetof(struct FeatureSets__featureSetsUplinkPerCC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetsUplinkPerCC_8 = {
+       "featureSetsUplinkPerCC",
+       "featureSetsUplinkPerCC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetsUplinkPerCC_tags_8,
+       sizeof(asn_DEF_featureSetsUplinkPerCC_tags_8)
+               /sizeof(asn_DEF_featureSetsUplinkPerCC_tags_8[0]) - 1, /* 1 */
+       asn_DEF_featureSetsUplinkPerCC_tags_8,  /* Same as above */
+       sizeof(asn_DEF_featureSetsUplinkPerCC_tags_8)
+               /sizeof(asn_DEF_featureSetsUplinkPerCC_tags_8[0]), /* 2 */
+       { &asn_OER_type_featureSetsUplinkPerCC_constr_8, &asn_PER_type_featureSetsUplinkPerCC_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetsUplinkPerCC_8,
+       1,      /* Single element */
+       &asn_SPC_featureSetsUplinkPerCC_specs_8 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FeatureSets_1[] = {
+       { ATF_POINTER, 4, offsetof(struct FeatureSets, featureSetsDownlink),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_featureSetsDownlink_2,
+               0,
+               { &asn_OER_memb_featureSetsDownlink_constr_2, &asn_PER_memb_featureSetsDownlink_constr_2,  memb_featureSetsDownlink_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetsDownlink"
+               },
+       { ATF_POINTER, 3, offsetof(struct FeatureSets, featureSetsDownlinkPerCC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_featureSetsDownlinkPerCC_4,
+               0,
+               { &asn_OER_memb_featureSetsDownlinkPerCC_constr_4, &asn_PER_memb_featureSetsDownlinkPerCC_constr_4,  memb_featureSetsDownlinkPerCC_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetsDownlinkPerCC"
+               },
+       { ATF_POINTER, 2, offsetof(struct FeatureSets, featureSetsUplink),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_featureSetsUplink_6,
+               0,
+               { &asn_OER_memb_featureSetsUplink_constr_6, &asn_PER_memb_featureSetsUplink_constr_6,  memb_featureSetsUplink_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetsUplink"
+               },
+       { ATF_POINTER, 1, offsetof(struct FeatureSets, featureSetsUplinkPerCC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_featureSetsUplinkPerCC_8,
+               0,
+               { &asn_OER_memb_featureSetsUplinkPerCC_constr_8, &asn_PER_memb_featureSetsUplinkPerCC_constr_8,  memb_featureSetsUplinkPerCC_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetsUplinkPerCC"
+               },
+};
+static const int asn_MAP_FeatureSets_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_FeatureSets_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FeatureSets_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* featureSetsDownlink */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* featureSetsDownlinkPerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* featureSetsUplink */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* featureSetsUplinkPerCC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FeatureSets_specs_1 = {
+       sizeof(struct FeatureSets),
+       offsetof(struct FeatureSets, _asn_ctx),
+       asn_MAP_FeatureSets_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_FeatureSets_oms_1,      /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSets = {
+       "FeatureSets",
+       "FeatureSets",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FeatureSets_tags_1,
+       sizeof(asn_DEF_FeatureSets_tags_1)
+               /sizeof(asn_DEF_FeatureSets_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSets_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FeatureSets_tags_1)
+               /sizeof(asn_DEF_FeatureSets_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FeatureSets_1,
+       4,      /* Elements count */
+       &asn_SPC_FeatureSets_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSets.h b/src/codec_utils/RRC/FeatureSets.h
new file mode 100644 (file)
index 0000000..2fcabdc
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSets_H_
+#define        _FeatureSets_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FeatureSetDownlink;
+struct FeatureSetDownlinkPerCC;
+struct FeatureSetUplink;
+struct FeatureSetUplinkPerCC;
+
+/* FeatureSets */
+typedef struct FeatureSets {
+       struct FeatureSets__featureSetsDownlink {
+               A_SEQUENCE_OF(struct FeatureSetDownlink) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetsDownlink;
+       struct FeatureSets__featureSetsDownlinkPerCC {
+               A_SEQUENCE_OF(struct FeatureSetDownlinkPerCC) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetsDownlinkPerCC;
+       struct FeatureSets__featureSetsUplink {
+               A_SEQUENCE_OF(struct FeatureSetUplink) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetsUplink;
+       struct FeatureSets__featureSetsUplinkPerCC {
+               A_SEQUENCE_OF(struct FeatureSetUplinkPerCC) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetsUplinkPerCC;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSets_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSets;
+extern asn_SEQUENCE_specifics_t asn_SPC_FeatureSets_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSets_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSets_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FeatureSetsPerBand.c b/src/codec_utils/RRC/FeatureSetsPerBand.c
new file mode 100644 (file)
index 0000000..6839843
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FeatureSetsPerBand.h"
+
+#include "FeatureSet.h"
+static asn_oer_constraints_t asn_OER_type_FeatureSetsPerBand_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+asn_per_constraints_t asn_PER_type_FeatureSetsPerBand_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FeatureSetsPerBand_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_FeatureSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FeatureSetsPerBand_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FeatureSetsPerBand_specs_1 = {
+       sizeof(struct FeatureSetsPerBand),
+       offsetof(struct FeatureSetsPerBand, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_FeatureSetsPerBand = {
+       "FeatureSetsPerBand",
+       "FeatureSetsPerBand",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FeatureSetsPerBand_tags_1,
+       sizeof(asn_DEF_FeatureSetsPerBand_tags_1)
+               /sizeof(asn_DEF_FeatureSetsPerBand_tags_1[0]), /* 1 */
+       asn_DEF_FeatureSetsPerBand_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FeatureSetsPerBand_tags_1)
+               /sizeof(asn_DEF_FeatureSetsPerBand_tags_1[0]), /* 1 */
+       { &asn_OER_type_FeatureSetsPerBand_constr_1, &asn_PER_type_FeatureSetsPerBand_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FeatureSetsPerBand_1,
+       1,      /* Single element */
+       &asn_SPC_FeatureSetsPerBand_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FeatureSetsPerBand.h b/src/codec_utils/RRC/FeatureSetsPerBand.h
new file mode 100644 (file)
index 0000000..4a0f757
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FeatureSetsPerBand_H_
+#define        _FeatureSetsPerBand_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 FeatureSet;
+
+/* FeatureSetsPerBand */
+typedef struct FeatureSetsPerBand {
+       A_SEQUENCE_OF(struct FeatureSet) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FeatureSetsPerBand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FeatureSetsPerBand;
+extern asn_SET_OF_specifics_t asn_SPC_FeatureSetsPerBand_specs_1;
+extern asn_TYPE_member_t asn_MBR_FeatureSetsPerBand_1[1];
+extern asn_per_constraints_t asn_PER_type_FeatureSetsPerBand_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FeatureSetsPerBand_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FilterCoefficient.c b/src/codec_utils/RRC/FilterCoefficient.c
new file mode 100644 (file)
index 0000000..12e5300
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FilterCoefficient.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_FilterCoefficient_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_FilterCoefficient_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  15 }   /* (0..15,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_FilterCoefficient_value2enum_1[] = {
+       { 0,    3,      "fc0" },
+       { 1,    3,      "fc1" },
+       { 2,    3,      "fc2" },
+       { 3,    3,      "fc3" },
+       { 4,    3,      "fc4" },
+       { 5,    3,      "fc5" },
+       { 6,    3,      "fc6" },
+       { 7,    3,      "fc7" },
+       { 8,    3,      "fc8" },
+       { 9,    3,      "fc9" },
+       { 10,   4,      "fc11" },
+       { 11,   4,      "fc13" },
+       { 12,   4,      "fc15" },
+       { 13,   4,      "fc17" },
+       { 14,   4,      "fc19" },
+       { 15,   6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_FilterCoefficient_enum2value_1[] = {
+       0,      /* fc0(0) */
+       1,      /* fc1(1) */
+       10,     /* fc11(10) */
+       11,     /* fc13(11) */
+       12,     /* fc15(12) */
+       13,     /* fc17(13) */
+       14,     /* fc19(14) */
+       2,      /* fc2(2) */
+       3,      /* fc3(3) */
+       4,      /* fc4(4) */
+       5,      /* fc5(5) */
+       6,      /* fc6(6) */
+       7,      /* fc7(7) */
+       8,      /* fc8(8) */
+       9,      /* fc9(9) */
+       15      /* spare1(15) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_FilterCoefficient_specs_1 = {
+       asn_MAP_FilterCoefficient_value2enum_1, /* "tag" => N; sorted by tag */
+       asn_MAP_FilterCoefficient_enum2value_1, /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       17,     /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_FilterCoefficient_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FilterCoefficient = {
+       "FilterCoefficient",
+       "FilterCoefficient",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_FilterCoefficient_tags_1,
+       sizeof(asn_DEF_FilterCoefficient_tags_1)
+               /sizeof(asn_DEF_FilterCoefficient_tags_1[0]), /* 1 */
+       asn_DEF_FilterCoefficient_tags_1,       /* Same as above */
+       sizeof(asn_DEF_FilterCoefficient_tags_1)
+               /sizeof(asn_DEF_FilterCoefficient_tags_1[0]), /* 1 */
+       { &asn_OER_type_FilterCoefficient_constr_1, &asn_PER_type_FilterCoefficient_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_FilterCoefficient_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FilterCoefficient.h b/src/codec_utils/RRC/FilterCoefficient.h
new file mode 100644 (file)
index 0000000..c22b211
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FilterCoefficient_H_
+#define        _FilterCoefficient_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FilterCoefficient {
+       FilterCoefficient_fc0   = 0,
+       FilterCoefficient_fc1   = 1,
+       FilterCoefficient_fc2   = 2,
+       FilterCoefficient_fc3   = 3,
+       FilterCoefficient_fc4   = 4,
+       FilterCoefficient_fc5   = 5,
+       FilterCoefficient_fc6   = 6,
+       FilterCoefficient_fc7   = 7,
+       FilterCoefficient_fc8   = 8,
+       FilterCoefficient_fc9   = 9,
+       FilterCoefficient_fc11  = 10,
+       FilterCoefficient_fc13  = 11,
+       FilterCoefficient_fc15  = 12,
+       FilterCoefficient_fc17  = 13,
+       FilterCoefficient_fc19  = 14,
+       FilterCoefficient_spare1        = 15
+       /*
+        * Enumeration is extensible
+        */
+} e_FilterCoefficient;
+
+/* FilterCoefficient */
+typedef long    FilterCoefficient_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FilterCoefficient_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FilterCoefficient;
+extern const asn_INTEGER_specifics_t asn_SPC_FilterCoefficient_specs_1;
+asn_struct_free_f FilterCoefficient_free;
+asn_struct_print_f FilterCoefficient_print;
+asn_constr_check_f FilterCoefficient_constraint;
+ber_type_decoder_f FilterCoefficient_decode_ber;
+der_type_encoder_f FilterCoefficient_encode_der;
+xer_type_decoder_f FilterCoefficient_decode_xer;
+xer_type_encoder_f FilterCoefficient_encode_xer;
+oer_type_decoder_f FilterCoefficient_decode_oer;
+oer_type_encoder_f FilterCoefficient_encode_oer;
+per_type_decoder_f FilterCoefficient_decode_uper;
+per_type_encoder_f FilterCoefficient_encode_uper;
+per_type_decoder_f FilterCoefficient_decode_aper;
+per_type_encoder_f FilterCoefficient_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FilterCoefficient_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FilterConfig.c b/src/codec_utils/RRC/FilterConfig.c
new file mode 100644 (file)
index 0000000..a5b8709
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FilterConfig.h"
+
+static int asn_DFL_2_cmp_4(const void *sptr) {
+       const FilterCoefficient_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 4 */
+       return (*st != 4);
+}
+static int asn_DFL_2_set_4(void **sptr) {
+       FilterCoefficient_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 4 */
+       *st = 4;
+       return 0;
+}
+static int asn_DFL_3_cmp_4(const void *sptr) {
+       const FilterCoefficient_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 4 */
+       return (*st != 4);
+}
+static int asn_DFL_3_set_4(void **sptr) {
+       FilterCoefficient_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 4 */
+       *st = 4;
+       return 0;
+}
+static int asn_DFL_4_cmp_4(const void *sptr) {
+       const FilterCoefficient_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 4 */
+       return (*st != 4);
+}
+static int asn_DFL_4_set_4(void **sptr) {
+       FilterCoefficient_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 4 */
+       *st = 4;
+       return 0;
+}
+asn_TYPE_member_t asn_MBR_FilterConfig_1[] = {
+       { ATF_POINTER, 3, offsetof(struct FilterConfig, filterCoefficientRSRP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterCoefficient,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_2_cmp_4,       /* Compare DEFAULT 4 */
+               &asn_DFL_2_set_4,       /* Set DEFAULT 4 */
+               "filterCoefficientRSRP"
+               },
+       { ATF_POINTER, 2, offsetof(struct FilterConfig, filterCoefficientRSRQ),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterCoefficient,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_3_cmp_4,       /* Compare DEFAULT 4 */
+               &asn_DFL_3_set_4,       /* Set DEFAULT 4 */
+               "filterCoefficientRSRQ"
+               },
+       { ATF_POINTER, 1, offsetof(struct FilterConfig, filterCoefficientRS_SINR),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterCoefficient,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_4_cmp_4,       /* Compare DEFAULT 4 */
+               &asn_DFL_4_set_4,       /* Set DEFAULT 4 */
+               "filterCoefficientRS-SINR"
+               },
+};
+static const int asn_MAP_FilterConfig_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_FilterConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FilterConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* filterCoefficientRSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* filterCoefficientRSRQ */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* filterCoefficientRS-SINR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FilterConfig_specs_1 = {
+       sizeof(struct FilterConfig),
+       offsetof(struct FilterConfig, _asn_ctx),
+       asn_MAP_FilterConfig_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_FilterConfig_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FilterConfig = {
+       "FilterConfig",
+       "FilterConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FilterConfig_tags_1,
+       sizeof(asn_DEF_FilterConfig_tags_1)
+               /sizeof(asn_DEF_FilterConfig_tags_1[0]), /* 1 */
+       asn_DEF_FilterConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_FilterConfig_tags_1)
+               /sizeof(asn_DEF_FilterConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FilterConfig_1,
+       3,      /* Elements count */
+       &asn_SPC_FilterConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FilterConfig.h b/src/codec_utils/RRC/FilterConfig.h
new file mode 100644 (file)
index 0000000..3d5e0d9
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FilterConfig_H_
+#define        _FilterConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FilterCoefficient.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FilterConfig */
+typedef struct FilterConfig {
+       FilterCoefficient_t     *filterCoefficientRSRP; /* DEFAULT 4 */
+       FilterCoefficient_t     *filterCoefficientRSRQ; /* DEFAULT 4 */
+       FilterCoefficient_t     *filterCoefficientRS_SINR;      /* DEFAULT 4 */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FilterConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FilterConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_FilterConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_FilterConfig_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FilterConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandIndicatorEUTRA.c b/src/codec_utils/RRC/FreqBandIndicatorEUTRA.c
new file mode 100644 (file)
index 0000000..2621d31
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandIndicatorEUTRA.h"
+
+int
+FreqBandIndicatorEUTRA_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 <= 256)) {
+               /* 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_FreqBandIndicatorEUTRA_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (1..256) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FreqBandIndicatorEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (1..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FreqBandIndicatorEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorEUTRA = {
+       "FreqBandIndicatorEUTRA",
+       "FreqBandIndicatorEUTRA",
+       &asn_OP_NativeInteger,
+       asn_DEF_FreqBandIndicatorEUTRA_tags_1,
+       sizeof(asn_DEF_FreqBandIndicatorEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqBandIndicatorEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_FreqBandIndicatorEUTRA_tags_1,  /* Same as above */
+       sizeof(asn_DEF_FreqBandIndicatorEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqBandIndicatorEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqBandIndicatorEUTRA_constr_1, &asn_PER_type_FreqBandIndicatorEUTRA_constr_1, FreqBandIndicatorEUTRA_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandIndicatorEUTRA.h b/src/codec_utils/RRC/FreqBandIndicatorEUTRA.h
new file mode 100644 (file)
index 0000000..c05cbd0
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandIndicatorEUTRA_H_
+#define        _FreqBandIndicatorEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqBandIndicatorEUTRA */
+typedef long    FreqBandIndicatorEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FreqBandIndicatorEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorEUTRA;
+asn_struct_free_f FreqBandIndicatorEUTRA_free;
+asn_struct_print_f FreqBandIndicatorEUTRA_print;
+asn_constr_check_f FreqBandIndicatorEUTRA_constraint;
+ber_type_decoder_f FreqBandIndicatorEUTRA_decode_ber;
+der_type_encoder_f FreqBandIndicatorEUTRA_encode_der;
+xer_type_decoder_f FreqBandIndicatorEUTRA_decode_xer;
+xer_type_encoder_f FreqBandIndicatorEUTRA_encode_xer;
+oer_type_decoder_f FreqBandIndicatorEUTRA_decode_oer;
+oer_type_encoder_f FreqBandIndicatorEUTRA_encode_oer;
+per_type_decoder_f FreqBandIndicatorEUTRA_decode_uper;
+per_type_encoder_f FreqBandIndicatorEUTRA_encode_uper;
+per_type_decoder_f FreqBandIndicatorEUTRA_decode_aper;
+per_type_encoder_f FreqBandIndicatorEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandIndicatorEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandIndicatorNR.c b/src/codec_utils/RRC/FreqBandIndicatorNR.c
new file mode 100644 (file)
index 0000000..391cdbf
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandIndicatorNR.h"
+
+int
+FreqBandIndicatorNR_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 <= 1024)) {
+               /* 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_FreqBandIndicatorNR_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (1..1024) */,
+       -1};
+asn_per_constraints_t asn_PER_type_FreqBandIndicatorNR_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (1..1024) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_FreqBandIndicatorNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorNR = {
+       "FreqBandIndicatorNR",
+       "FreqBandIndicatorNR",
+       &asn_OP_NativeInteger,
+       asn_DEF_FreqBandIndicatorNR_tags_1,
+       sizeof(asn_DEF_FreqBandIndicatorNR_tags_1)
+               /sizeof(asn_DEF_FreqBandIndicatorNR_tags_1[0]), /* 1 */
+       asn_DEF_FreqBandIndicatorNR_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FreqBandIndicatorNR_tags_1)
+               /sizeof(asn_DEF_FreqBandIndicatorNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqBandIndicatorNR_constr_1, &asn_PER_type_FreqBandIndicatorNR_constr_1, FreqBandIndicatorNR_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandIndicatorNR.h b/src/codec_utils/RRC/FreqBandIndicatorNR.h
new file mode 100644 (file)
index 0000000..011b97d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandIndicatorNR_H_
+#define        _FreqBandIndicatorNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqBandIndicatorNR */
+typedef long    FreqBandIndicatorNR_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FreqBandIndicatorNR_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorNR;
+asn_struct_free_f FreqBandIndicatorNR_free;
+asn_struct_print_f FreqBandIndicatorNR_print;
+asn_constr_check_f FreqBandIndicatorNR_constraint;
+ber_type_decoder_f FreqBandIndicatorNR_decode_ber;
+der_type_encoder_f FreqBandIndicatorNR_encode_der;
+xer_type_decoder_f FreqBandIndicatorNR_decode_xer;
+xer_type_encoder_f FreqBandIndicatorNR_encode_xer;
+oer_type_decoder_f FreqBandIndicatorNR_decode_oer;
+oer_type_encoder_f FreqBandIndicatorNR_encode_oer;
+per_type_decoder_f FreqBandIndicatorNR_decode_uper;
+per_type_encoder_f FreqBandIndicatorNR_encode_uper;
+per_type_decoder_f FreqBandIndicatorNR_decode_aper;
+per_type_encoder_f FreqBandIndicatorNR_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandIndicatorNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandInformation.c b/src/codec_utils/RRC/FreqBandInformation.c
new file mode 100644 (file)
index 0000000..18d5e8a
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandInformation.h"
+
+#include "FreqBandInformationEUTRA.h"
+#include "FreqBandInformationNR.h"
+static asn_oer_constraints_t asn_OER_type_FreqBandInformation_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_FreqBandInformation_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FreqBandInformation_1[] = {
+       { ATF_POINTER, 0, offsetof(struct FreqBandInformation, choice.bandInformationEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandInformationEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandInformationEUTRA"
+               },
+       { ATF_POINTER, 0, offsetof(struct FreqBandInformation, choice.bandInformationNR),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandInformationNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandInformationNR"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqBandInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandInformationEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bandInformationNR */
+};
+asn_CHOICE_specifics_t asn_SPC_FreqBandInformation_specs_1 = {
+       sizeof(struct FreqBandInformation),
+       offsetof(struct FreqBandInformation, _asn_ctx),
+       offsetof(struct FreqBandInformation, present),
+       sizeof(((struct FreqBandInformation *)0)->present),
+       asn_MAP_FreqBandInformation_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandInformation = {
+       "FreqBandInformation",
+       "FreqBandInformation",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_FreqBandInformation_constr_1, &asn_PER_type_FreqBandInformation_constr_1, CHOICE_constraint },
+       asn_MBR_FreqBandInformation_1,
+       2,      /* Elements count */
+       &asn_SPC_FreqBandInformation_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandInformation.h b/src/codec_utils/RRC/FreqBandInformation.h
new file mode 100644 (file)
index 0000000..8e34a09
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandInformation_H_
+#define        _FreqBandInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FreqBandInformation_PR {
+       FreqBandInformation_PR_NOTHING, /* No components present */
+       FreqBandInformation_PR_bandInformationEUTRA,
+       FreqBandInformation_PR_bandInformationNR
+} FreqBandInformation_PR;
+
+/* Forward declarations */
+struct FreqBandInformationEUTRA;
+struct FreqBandInformationNR;
+
+/* FreqBandInformation */
+typedef struct FreqBandInformation {
+       FreqBandInformation_PR present;
+       union FreqBandInformation_u {
+               struct FreqBandInformationEUTRA *bandInformationEUTRA;
+               struct FreqBandInformationNR    *bandInformationNR;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqBandInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandInformation;
+extern asn_CHOICE_specifics_t asn_SPC_FreqBandInformation_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqBandInformation_1[2];
+extern asn_per_constraints_t asn_PER_type_FreqBandInformation_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandInformationEUTRA.c b/src/codec_utils/RRC/FreqBandInformationEUTRA.c
new file mode 100644 (file)
index 0000000..5236466
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandInformationEUTRA.h"
+
+asn_TYPE_member_t asn_MBR_FreqBandInformationEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FreqBandInformationEUTRA, bandEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct FreqBandInformationEUTRA, ca_BandwidthClassDL_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassDL-EUTRA"
+               },
+       { ATF_POINTER, 1, offsetof(struct FreqBandInformationEUTRA, ca_BandwidthClassUL_EUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CA_BandwidthClassEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ca-BandwidthClassUL-EUTRA"
+               },
+};
+static const int asn_MAP_FreqBandInformationEUTRA_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_FreqBandInformationEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqBandInformationEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ca-BandwidthClassDL-EUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ca-BandwidthClassUL-EUTRA */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FreqBandInformationEUTRA_specs_1 = {
+       sizeof(struct FreqBandInformationEUTRA),
+       offsetof(struct FreqBandInformationEUTRA, _asn_ctx),
+       asn_MAP_FreqBandInformationEUTRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_FreqBandInformationEUTRA_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandInformationEUTRA = {
+       "FreqBandInformationEUTRA",
+       "FreqBandInformationEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FreqBandInformationEUTRA_tags_1,
+       sizeof(asn_DEF_FreqBandInformationEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqBandInformationEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_FreqBandInformationEUTRA_tags_1,        /* Same as above */
+       sizeof(asn_DEF_FreqBandInformationEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqBandInformationEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FreqBandInformationEUTRA_1,
+       3,      /* Elements count */
+       &asn_SPC_FreqBandInformationEUTRA_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandInformationEUTRA.h b/src/codec_utils/RRC/FreqBandInformationEUTRA.h
new file mode 100644 (file)
index 0000000..0cf57b6
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandInformationEUTRA_H_
+#define        _FreqBandInformationEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorEUTRA.h"
+#include "CA-BandwidthClassEUTRA.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqBandInformationEUTRA */
+typedef struct FreqBandInformationEUTRA {
+       FreqBandIndicatorEUTRA_t         bandEUTRA;
+       CA_BandwidthClassEUTRA_t        *ca_BandwidthClassDL_EUTRA;     /* OPTIONAL */
+       CA_BandwidthClassEUTRA_t        *ca_BandwidthClassUL_EUTRA;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqBandInformationEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandInformationEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandInformationEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqBandInformationEUTRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandInformationEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandInformationNR.c b/src/codec_utils/RRC/FreqBandInformationNR.c
new file mode 100644 (file)
index 0000000..c8b0160
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandInformationNR.h"
+
+static int
+memb_maxCarriersRequestedDL_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 <= 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 int
+memb_maxCarriersRequestedUL_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 <= 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_maxCarriersRequestedDL_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxCarriersRequestedDL_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxCarriersRequestedUL_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxCarriersRequestedUL_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FreqBandInformationNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FreqBandInformationNR, bandNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bandNR"
+               },
+       { ATF_POINTER, 4, offsetof(struct FreqBandInformationNR, maxBandwidthRequestedDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxBandwidthRequestedDL"
+               },
+       { ATF_POINTER, 3, offsetof(struct FreqBandInformationNR, maxBandwidthRequestedUL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxBandwidthRequestedUL"
+               },
+       { ATF_POINTER, 2, offsetof(struct FreqBandInformationNR, maxCarriersRequestedDL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxCarriersRequestedDL_constr_5, &asn_PER_memb_maxCarriersRequestedDL_constr_5,  memb_maxCarriersRequestedDL_constraint_1 },
+               0, 0, /* No default value */
+               "maxCarriersRequestedDL"
+               },
+       { ATF_POINTER, 1, offsetof(struct FreqBandInformationNR, maxCarriersRequestedUL),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxCarriersRequestedUL_constr_6, &asn_PER_memb_maxCarriersRequestedUL_constr_6,  memb_maxCarriersRequestedUL_constraint_1 },
+               0, 0, /* No default value */
+               "maxCarriersRequestedUL"
+               },
+};
+static const int asn_MAP_FreqBandInformationNR_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_FreqBandInformationNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqBandInformationNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bandNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxBandwidthRequestedDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxBandwidthRequestedUL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxCarriersRequestedDL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* maxCarriersRequestedUL */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FreqBandInformationNR_specs_1 = {
+       sizeof(struct FreqBandInformationNR),
+       offsetof(struct FreqBandInformationNR, _asn_ctx),
+       asn_MAP_FreqBandInformationNR_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_FreqBandInformationNR_oms_1,    /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandInformationNR = {
+       "FreqBandInformationNR",
+       "FreqBandInformationNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FreqBandInformationNR_tags_1,
+       sizeof(asn_DEF_FreqBandInformationNR_tags_1)
+               /sizeof(asn_DEF_FreqBandInformationNR_tags_1[0]), /* 1 */
+       asn_DEF_FreqBandInformationNR_tags_1,   /* Same as above */
+       sizeof(asn_DEF_FreqBandInformationNR_tags_1)
+               /sizeof(asn_DEF_FreqBandInformationNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FreqBandInformationNR_1,
+       5,      /* Elements count */
+       &asn_SPC_FreqBandInformationNR_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandInformationNR.h b/src/codec_utils/RRC/FreqBandInformationNR.h
new file mode 100644 (file)
index 0000000..afc9c8f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandInformationNR_H_
+#define        _FreqBandInformationNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorNR.h"
+#include "AggregatedBandwidth.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqBandInformationNR */
+typedef struct FreqBandInformationNR {
+       FreqBandIndicatorNR_t    bandNR;
+       AggregatedBandwidth_t   *maxBandwidthRequestedDL;       /* OPTIONAL */
+       AggregatedBandwidth_t   *maxBandwidthRequestedUL;       /* OPTIONAL */
+       long    *maxCarriersRequestedDL;        /* OPTIONAL */
+       long    *maxCarriersRequestedUL;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqBandInformationNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandInformationNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_FreqBandInformationNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqBandInformationNR_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandInformationNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqBandList.c b/src/codec_utils/RRC/FreqBandList.c
new file mode 100644 (file)
index 0000000..4ae18b3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqBandList.h"
+
+#include "FreqBandInformation.h"
+static asn_oer_constraints_t asn_OER_type_FreqBandList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1280)) */};
+asn_per_constraints_t asn_PER_type_FreqBandList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       11,  11,  1,  1280 }   /* (SIZE(1..1280)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FreqBandList_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_FreqBandInformation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FreqBandList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FreqBandList_specs_1 = {
+       sizeof(struct FreqBandList),
+       offsetof(struct FreqBandList, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqBandList = {
+       "FreqBandList",
+       "FreqBandList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FreqBandList_tags_1,
+       sizeof(asn_DEF_FreqBandList_tags_1)
+               /sizeof(asn_DEF_FreqBandList_tags_1[0]), /* 1 */
+       asn_DEF_FreqBandList_tags_1,    /* Same as above */
+       sizeof(asn_DEF_FreqBandList_tags_1)
+               /sizeof(asn_DEF_FreqBandList_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqBandList_constr_1, &asn_PER_type_FreqBandList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FreqBandList_1,
+       1,      /* Single element */
+       &asn_SPC_FreqBandList_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqBandList.h b/src/codec_utils/RRC/FreqBandList.h
new file mode 100644 (file)
index 0000000..e5e262b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqBandList_H_
+#define        _FreqBandList_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 FreqBandInformation;
+
+/* FreqBandList */
+typedef struct FreqBandList {
+       A_SEQUENCE_OF(struct FreqBandInformation) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqBandList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqBandList;
+extern asn_SET_OF_specifics_t asn_SPC_FreqBandList_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqBandList_1[1];
+extern asn_per_constraints_t asn_PER_type_FreqBandList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqBandList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqPriorityEUTRA.c b/src/codec_utils/RRC/FreqPriorityEUTRA.c
new file mode 100644 (file)
index 0000000..fc6435c
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqPriorityEUTRA.h"
+
+asn_TYPE_member_t asn_MBR_FreqPriorityEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FreqPriorityEUTRA, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FreqPriorityEUTRA, cellReselectionPriority),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriority"
+               },
+       { ATF_POINTER, 1, offsetof(struct FreqPriorityEUTRA, cellReselectionSubPriority),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionSubPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionSubPriority"
+               },
+};
+static const int asn_MAP_FreqPriorityEUTRA_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_FreqPriorityEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqPriorityEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellReselectionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellReselectionSubPriority */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FreqPriorityEUTRA_specs_1 = {
+       sizeof(struct FreqPriorityEUTRA),
+       offsetof(struct FreqPriorityEUTRA, _asn_ctx),
+       asn_MAP_FreqPriorityEUTRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_FreqPriorityEUTRA_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqPriorityEUTRA = {
+       "FreqPriorityEUTRA",
+       "FreqPriorityEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FreqPriorityEUTRA_tags_1,
+       sizeof(asn_DEF_FreqPriorityEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqPriorityEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_FreqPriorityEUTRA_tags_1,       /* Same as above */
+       sizeof(asn_DEF_FreqPriorityEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqPriorityEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FreqPriorityEUTRA_1,
+       3,      /* Elements count */
+       &asn_SPC_FreqPriorityEUTRA_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqPriorityEUTRA.h b/src/codec_utils/RRC/FreqPriorityEUTRA.h
new file mode 100644 (file)
index 0000000..55ee886
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqPriorityEUTRA_H_
+#define        _FreqPriorityEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include "CellReselectionPriority.h"
+#include "CellReselectionSubPriority.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqPriorityEUTRA */
+typedef struct FreqPriorityEUTRA {
+       ARFCN_ValueEUTRA_t       carrierFreq;
+       CellReselectionPriority_t        cellReselectionPriority;
+       CellReselectionSubPriority_t    *cellReselectionSubPriority;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqPriorityEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqPriorityEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_FreqPriorityEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqPriorityEUTRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqPriorityEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqPriorityListEUTRA.c b/src/codec_utils/RRC/FreqPriorityListEUTRA.c
new file mode 100644 (file)
index 0000000..01bf83e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqPriorityListEUTRA.h"
+
+#include "FreqPriorityEUTRA.h"
+static asn_oer_constraints_t asn_OER_type_FreqPriorityListEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_FreqPriorityListEUTRA_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FreqPriorityListEUTRA_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FreqPriorityEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FreqPriorityListEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FreqPriorityListEUTRA_specs_1 = {
+       sizeof(struct FreqPriorityListEUTRA),
+       offsetof(struct FreqPriorityListEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqPriorityListEUTRA = {
+       "FreqPriorityListEUTRA",
+       "FreqPriorityListEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FreqPriorityListEUTRA_tags_1,
+       sizeof(asn_DEF_FreqPriorityListEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqPriorityListEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_FreqPriorityListEUTRA_tags_1,   /* Same as above */
+       sizeof(asn_DEF_FreqPriorityListEUTRA_tags_1)
+               /sizeof(asn_DEF_FreqPriorityListEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqPriorityListEUTRA_constr_1, &asn_PER_type_FreqPriorityListEUTRA_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FreqPriorityListEUTRA_1,
+       1,      /* Single element */
+       &asn_SPC_FreqPriorityListEUTRA_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqPriorityListEUTRA.h b/src/codec_utils/RRC/FreqPriorityListEUTRA.h
new file mode 100644 (file)
index 0000000..e33d02b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqPriorityListEUTRA_H_
+#define        _FreqPriorityListEUTRA_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 FreqPriorityEUTRA;
+
+/* FreqPriorityListEUTRA */
+typedef struct FreqPriorityListEUTRA {
+       A_SEQUENCE_OF(struct FreqPriorityEUTRA) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqPriorityListEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqPriorityListEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_FreqPriorityListEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqPriorityListEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_FreqPriorityListEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqPriorityListEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqPriorityListNR.c b/src/codec_utils/RRC/FreqPriorityListNR.c
new file mode 100644 (file)
index 0000000..68618a8
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqPriorityListNR.h"
+
+#include "FreqPriorityNR.h"
+static asn_oer_constraints_t asn_OER_type_FreqPriorityListNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_FreqPriorityListNR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_FreqPriorityListNR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FreqPriorityNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FreqPriorityListNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_FreqPriorityListNR_specs_1 = {
+       sizeof(struct FreqPriorityListNR),
+       offsetof(struct FreqPriorityListNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqPriorityListNR = {
+       "FreqPriorityListNR",
+       "FreqPriorityListNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_FreqPriorityListNR_tags_1,
+       sizeof(asn_DEF_FreqPriorityListNR_tags_1)
+               /sizeof(asn_DEF_FreqPriorityListNR_tags_1[0]), /* 1 */
+       asn_DEF_FreqPriorityListNR_tags_1,      /* Same as above */
+       sizeof(asn_DEF_FreqPriorityListNR_tags_1)
+               /sizeof(asn_DEF_FreqPriorityListNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqPriorityListNR_constr_1, &asn_PER_type_FreqPriorityListNR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_FreqPriorityListNR_1,
+       1,      /* Single element */
+       &asn_SPC_FreqPriorityListNR_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqPriorityListNR.h b/src/codec_utils/RRC/FreqPriorityListNR.h
new file mode 100644 (file)
index 0000000..bb58d19
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqPriorityListNR_H_
+#define        _FreqPriorityListNR_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 FreqPriorityNR;
+
+/* FreqPriorityListNR */
+typedef struct FreqPriorityListNR {
+       A_SEQUENCE_OF(struct FreqPriorityNR) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqPriorityListNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqPriorityListNR;
+extern asn_SET_OF_specifics_t asn_SPC_FreqPriorityListNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqPriorityListNR_1[1];
+extern asn_per_constraints_t asn_PER_type_FreqPriorityListNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqPriorityListNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqPriorityNR.c b/src/codec_utils/RRC/FreqPriorityNR.c
new file mode 100644 (file)
index 0000000..50dd9e2
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqPriorityNR.h"
+
+asn_TYPE_member_t asn_MBR_FreqPriorityNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FreqPriorityNR, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FreqPriorityNR, cellReselectionPriority),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriority"
+               },
+       { ATF_POINTER, 1, offsetof(struct FreqPriorityNR, cellReselectionSubPriority),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionSubPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionSubPriority"
+               },
+};
+static const int asn_MAP_FreqPriorityNR_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_FreqPriorityNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FreqPriorityNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellReselectionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cellReselectionSubPriority */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FreqPriorityNR_specs_1 = {
+       sizeof(struct FreqPriorityNR),
+       offsetof(struct FreqPriorityNR, _asn_ctx),
+       asn_MAP_FreqPriorityNR_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_FreqPriorityNR_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FreqPriorityNR = {
+       "FreqPriorityNR",
+       "FreqPriorityNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FreqPriorityNR_tags_1,
+       sizeof(asn_DEF_FreqPriorityNR_tags_1)
+               /sizeof(asn_DEF_FreqPriorityNR_tags_1[0]), /* 1 */
+       asn_DEF_FreqPriorityNR_tags_1,  /* Same as above */
+       sizeof(asn_DEF_FreqPriorityNR_tags_1)
+               /sizeof(asn_DEF_FreqPriorityNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FreqPriorityNR_1,
+       3,      /* Elements count */
+       &asn_SPC_FreqPriorityNR_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqPriorityNR.h b/src/codec_utils/RRC/FreqPriorityNR.h
new file mode 100644 (file)
index 0000000..82c9a4d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqPriorityNR_H_
+#define        _FreqPriorityNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "CellReselectionPriority.h"
+#include "CellReselectionSubPriority.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* FreqPriorityNR */
+typedef struct FreqPriorityNR {
+       ARFCN_ValueNR_t  carrierFreq;
+       CellReselectionPriority_t        cellReselectionPriority;
+       CellReselectionSubPriority_t    *cellReselectionSubPriority;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FreqPriorityNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FreqPriorityNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_FreqPriorityNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_FreqPriorityNR_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqPriorityNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FreqSeparationClass.c b/src/codec_utils/RRC/FreqSeparationClass.c
new file mode 100644 (file)
index 0000000..3ccd7a1
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FreqSeparationClass.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_FreqSeparationClass_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_FreqSeparationClass_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_enum_map_t asn_MAP_FreqSeparationClass_value2enum_1[] = {
+       { 0,    2,      "c1" },
+       { 1,    2,      "c2" },
+       { 2,    2,      "c3" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_FreqSeparationClass_enum2value_1[] = {
+       0,      /* c1(0) */
+       1,      /* c2(1) */
+       2       /* c3(2) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_FreqSeparationClass_specs_1 = {
+       asn_MAP_FreqSeparationClass_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_FreqSeparationClass_enum2value_1,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       4,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_FreqSeparationClass_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_FreqSeparationClass = {
+       "FreqSeparationClass",
+       "FreqSeparationClass",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_FreqSeparationClass_tags_1,
+       sizeof(asn_DEF_FreqSeparationClass_tags_1)
+               /sizeof(asn_DEF_FreqSeparationClass_tags_1[0]), /* 1 */
+       asn_DEF_FreqSeparationClass_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FreqSeparationClass_tags_1)
+               /sizeof(asn_DEF_FreqSeparationClass_tags_1[0]), /* 1 */
+       { &asn_OER_type_FreqSeparationClass_constr_1, &asn_PER_type_FreqSeparationClass_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_FreqSeparationClass_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FreqSeparationClass.h b/src/codec_utils/RRC/FreqSeparationClass.h
new file mode 100644 (file)
index 0000000..5ba5dac
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FreqSeparationClass_H_
+#define        _FreqSeparationClass_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FreqSeparationClass {
+       FreqSeparationClass_c1  = 0,
+       FreqSeparationClass_c2  = 1,
+       FreqSeparationClass_c3  = 2
+       /*
+        * Enumeration is extensible
+        */
+} e_FreqSeparationClass;
+
+/* FreqSeparationClass */
+typedef long    FreqSeparationClass_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_FreqSeparationClass_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_FreqSeparationClass;
+extern const asn_INTEGER_specifics_t asn_SPC_FreqSeparationClass_specs_1;
+asn_struct_free_f FreqSeparationClass_free;
+asn_struct_print_f FreqSeparationClass_print;
+asn_constr_check_f FreqSeparationClass_constraint;
+ber_type_decoder_f FreqSeparationClass_decode_ber;
+der_type_encoder_f FreqSeparationClass_encode_der;
+xer_type_decoder_f FreqSeparationClass_decode_xer;
+xer_type_encoder_f FreqSeparationClass_encode_xer;
+oer_type_decoder_f FreqSeparationClass_decode_oer;
+oer_type_encoder_f FreqSeparationClass_encode_oer;
+per_type_decoder_f FreqSeparationClass_decode_uper;
+per_type_encoder_f FreqSeparationClass_encode_uper;
+per_type_decoder_f FreqSeparationClass_decode_aper;
+per_type_encoder_f FreqSeparationClass_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FreqSeparationClass_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FrequencyInfoDL-SIB.c b/src/codec_utils/RRC/FrequencyInfoDL-SIB.c
new file mode 100644 (file)
index 0000000..cdb3905
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FrequencyInfoDL-SIB.h"
+
+#include "SCS-SpecificCarrier.h"
+static int
+memb_offsetToPointA_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 >= 0 && value <= 2199)) {
+               /* 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_scs_SpecificCarrierList_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 <= 5)) {
+               /* 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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_offsetToPointA_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2199) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_offsetToPointA_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2199 }   /* (0..2199) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_4 = {
+       sizeof(struct FrequencyInfoDL_SIB__scs_SpecificCarrierList),
+       offsetof(struct FrequencyInfoDL_SIB__scs_SpecificCarrierList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_4 = {
+       "scs-SpecificCarrierList",
+       "scs-SpecificCarrierList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_scs_SpecificCarrierList_tags_4,
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_scs_SpecificCarrierList_tags_4, /* Same as above */
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]), /* 2 */
+       { &asn_OER_type_scs_SpecificCarrierList_constr_4, &asn_PER_type_scs_SpecificCarrierList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_scs_SpecificCarrierList_4,
+       1,      /* Single element */
+       &asn_SPC_scs_SpecificCarrierList_specs_4        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FrequencyInfoDL_SIB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, offsetToPointA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_offsetToPointA_constr_3, &asn_PER_memb_offsetToPointA_constr_3,  memb_offsetToPointA_constraint_1 },
+               0, 0, /* No default value */
+               "offsetToPointA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, scs_SpecificCarrierList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_scs_SpecificCarrierList_4,
+               0,
+               { &asn_OER_memb_scs_SpecificCarrierList_constr_4, &asn_PER_memb_scs_SpecificCarrierList_constr_4,  memb_scs_SpecificCarrierList_constraint_1 },
+               0, 0, /* No default value */
+               "scs-SpecificCarrierList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_FrequencyInfoDL_SIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoDL_SIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offsetToPointA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* scs-SpecificCarrierList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_SIB_specs_1 = {
+       sizeof(struct FrequencyInfoDL_SIB),
+       offsetof(struct FrequencyInfoDL_SIB, _asn_ctx),
+       asn_MAP_FrequencyInfoDL_SIB_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL_SIB = {
+       "FrequencyInfoDL-SIB",
+       "FrequencyInfoDL-SIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FrequencyInfoDL_SIB_tags_1,
+       sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1[0]), /* 1 */
+       asn_DEF_FrequencyInfoDL_SIB_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FrequencyInfoDL_SIB_1,
+       3,      /* Elements count */
+       &asn_SPC_FrequencyInfoDL_SIB_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FrequencyInfoDL-SIB.h b/src/codec_utils/RRC/FrequencyInfoDL-SIB.h
new file mode 100644 (file)
index 0000000..329660b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FrequencyInfoDL_SIB_H_
+#define        _FrequencyInfoDL_SIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MultiFrequencyBandListNR-SIB.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SCS_SpecificCarrier;
+
+/* FrequencyInfoDL-SIB */
+typedef struct FrequencyInfoDL_SIB {
+       MultiFrequencyBandListNR_SIB_t   frequencyBandList;
+       long     offsetToPointA;
+       struct FrequencyInfoDL_SIB__scs_SpecificCarrierList {
+               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } scs_SpecificCarrierList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FrequencyInfoDL_SIB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL_SIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_SIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_FrequencyInfoDL_SIB_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FrequencyInfoDL_SIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FrequencyInfoDL.c b/src/codec_utils/RRC/FrequencyInfoDL.c
new file mode 100644 (file)
index 0000000..94ae7a3
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FrequencyInfoDL.h"
+
+#include "SCS-SpecificCarrier.h"
+static int
+memb_scs_SpecificCarrierList_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 <= 5)) {
+               /* 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_scs_SpecificCarrierList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_scs_SpecificCarrierList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_5 = {
+       sizeof(struct FrequencyInfoDL__scs_SpecificCarrierList),
+       offsetof(struct FrequencyInfoDL__scs_SpecificCarrierList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_5 = {
+       "scs-SpecificCarrierList",
+       "scs-SpecificCarrierList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_scs_SpecificCarrierList_tags_5,
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_5)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_scs_SpecificCarrierList_tags_5, /* Same as above */
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_5)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_5[0]), /* 2 */
+       { &asn_OER_type_scs_SpecificCarrierList_constr_5, &asn_PER_type_scs_SpecificCarrierList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_scs_SpecificCarrierList_5,
+       1,      /* Single element */
+       &asn_SPC_scs_SpecificCarrierList_specs_5        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FrequencyInfoDL_1[] = {
+       { ATF_POINTER, 1, offsetof(struct FrequencyInfoDL, absoluteFrequencySSB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absoluteFrequencySSB"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL, absoluteFrequencyPointA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absoluteFrequencyPointA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL, scs_SpecificCarrierList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_scs_SpecificCarrierList_5,
+               0,
+               { &asn_OER_memb_scs_SpecificCarrierList_constr_5, &asn_PER_memb_scs_SpecificCarrierList_constr_5,  memb_scs_SpecificCarrierList_constraint_1 },
+               0, 0, /* No default value */
+               "scs-SpecificCarrierList"
+               },
+};
+static const int asn_MAP_FrequencyInfoDL_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_FrequencyInfoDL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoDL_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* absoluteFrequencySSB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* absoluteFrequencyPointA */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-SpecificCarrierList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_specs_1 = {
+       sizeof(struct FrequencyInfoDL),
+       offsetof(struct FrequencyInfoDL, _asn_ctx),
+       asn_MAP_FrequencyInfoDL_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_FrequencyInfoDL_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL = {
+       "FrequencyInfoDL",
+       "FrequencyInfoDL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FrequencyInfoDL_tags_1,
+       sizeof(asn_DEF_FrequencyInfoDL_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoDL_tags_1[0]), /* 1 */
+       asn_DEF_FrequencyInfoDL_tags_1, /* Same as above */
+       sizeof(asn_DEF_FrequencyInfoDL_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoDL_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FrequencyInfoDL_1,
+       4,      /* Elements count */
+       &asn_SPC_FrequencyInfoDL_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FrequencyInfoDL.h b/src/codec_utils/RRC/FrequencyInfoDL.h
new file mode 100644 (file)
index 0000000..ad5be69
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FrequencyInfoDL_H_
+#define        _FrequencyInfoDL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "MultiFrequencyBandListNR.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SCS_SpecificCarrier;
+
+/* FrequencyInfoDL */
+typedef struct FrequencyInfoDL {
+       ARFCN_ValueNR_t *absoluteFrequencySSB;  /* OPTIONAL */
+       MultiFrequencyBandListNR_t       frequencyBandList;
+       ARFCN_ValueNR_t  absoluteFrequencyPointA;
+       struct FrequencyInfoDL__scs_SpecificCarrierList {
+               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } scs_SpecificCarrierList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FrequencyInfoDL_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL;
+extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_specs_1;
+extern asn_TYPE_member_t asn_MBR_FrequencyInfoDL_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FrequencyInfoDL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FrequencyInfoUL-SIB.c b/src/codec_utils/RRC/FrequencyInfoUL-SIB.c
new file mode 100644 (file)
index 0000000..03cdca1
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FrequencyInfoUL-SIB.h"
+
+#include "MultiFrequencyBandListNR-SIB.h"
+#include "SCS-SpecificCarrier.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_scs_SpecificCarrierList_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 <= 5)) {
+               /* 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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyShift7p5khz_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyShift7p5khz_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_4 = {
+       sizeof(struct FrequencyInfoUL_SIB__scs_SpecificCarrierList),
+       offsetof(struct FrequencyInfoUL_SIB__scs_SpecificCarrierList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_4 = {
+       "scs-SpecificCarrierList",
+       "scs-SpecificCarrierList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_scs_SpecificCarrierList_tags_4,
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_scs_SpecificCarrierList_tags_4, /* Same as above */
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]), /* 2 */
+       { &asn_OER_type_scs_SpecificCarrierList_constr_4, &asn_PER_type_scs_SpecificCarrierList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_scs_SpecificCarrierList_4,
+       1,      /* Single element */
+       &asn_SPC_scs_SpecificCarrierList_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_frequencyShift7p5khz_value2enum_7[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_frequencyShift7p5khz_enum2value_7[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_frequencyShift7p5khz_specs_7 = {
+       asn_MAP_frequencyShift7p5khz_value2enum_7,      /* "tag" => N; sorted by tag */
+       asn_MAP_frequencyShift7p5khz_enum2value_7,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_frequencyShift7p5khz_tags_7[] = {
+       (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_frequencyShift7p5khz_7 = {
+       "frequencyShift7p5khz",
+       "frequencyShift7p5khz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_frequencyShift7p5khz_tags_7,
+       sizeof(asn_DEF_frequencyShift7p5khz_tags_7)
+               /sizeof(asn_DEF_frequencyShift7p5khz_tags_7[0]) - 1, /* 1 */
+       asn_DEF_frequencyShift7p5khz_tags_7,    /* Same as above */
+       sizeof(asn_DEF_frequencyShift7p5khz_tags_7)
+               /sizeof(asn_DEF_frequencyShift7p5khz_tags_7[0]), /* 2 */
+       { &asn_OER_type_frequencyShift7p5khz_constr_7, &asn_PER_type_frequencyShift7p5khz_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_frequencyShift7p5khz_specs_7   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FrequencyInfoUL_SIB_1[] = {
+       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL_SIB, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL_SIB, absoluteFrequencyPointA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absoluteFrequencyPointA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoUL_SIB, scs_SpecificCarrierList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_scs_SpecificCarrierList_4,
+               0,
+               { &asn_OER_memb_scs_SpecificCarrierList_constr_4, &asn_PER_memb_scs_SpecificCarrierList_constr_4,  memb_scs_SpecificCarrierList_constraint_1 },
+               0, 0, /* No default value */
+               "scs-SpecificCarrierList"
+               },
+       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL_SIB, p_Max),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-Max"
+               },
+       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL_SIB, frequencyShift7p5khz),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_frequencyShift7p5khz_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyShift7p5khz"
+               },
+};
+static const int asn_MAP_FrequencyInfoUL_SIB_oms_1[] = { 0, 1, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_FrequencyInfoUL_SIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoUL_SIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* absoluteFrequencyPointA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-SpecificCarrierList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* p-Max */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* frequencyShift7p5khz */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_SIB_specs_1 = {
+       sizeof(struct FrequencyInfoUL_SIB),
+       offsetof(struct FrequencyInfoUL_SIB, _asn_ctx),
+       asn_MAP_FrequencyInfoUL_SIB_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_FrequencyInfoUL_SIB_oms_1,      /* Optional members */
+       4, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL_SIB = {
+       "FrequencyInfoUL-SIB",
+       "FrequencyInfoUL-SIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FrequencyInfoUL_SIB_tags_1,
+       sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1[0]), /* 1 */
+       asn_DEF_FrequencyInfoUL_SIB_tags_1,     /* Same as above */
+       sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FrequencyInfoUL_SIB_1,
+       5,      /* Elements count */
+       &asn_SPC_FrequencyInfoUL_SIB_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FrequencyInfoUL-SIB.h b/src/codec_utils/RRC/FrequencyInfoUL-SIB.h
new file mode 100644 (file)
index 0000000..50c530d
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FrequencyInfoUL_SIB_H_
+#define        _FrequencyInfoUL_SIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "P-Max.h"
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FrequencyInfoUL_SIB__frequencyShift7p5khz {
+       FrequencyInfoUL_SIB__frequencyShift7p5khz_true  = 0
+} e_FrequencyInfoUL_SIB__frequencyShift7p5khz;
+
+/* Forward declarations */
+struct MultiFrequencyBandListNR_SIB;
+struct SCS_SpecificCarrier;
+
+/* FrequencyInfoUL-SIB */
+typedef struct FrequencyInfoUL_SIB {
+       struct MultiFrequencyBandListNR_SIB     *frequencyBandList;     /* OPTIONAL */
+       ARFCN_ValueNR_t *absoluteFrequencyPointA;       /* OPTIONAL */
+       struct FrequencyInfoUL_SIB__scs_SpecificCarrierList {
+               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } scs_SpecificCarrierList;
+       P_Max_t *p_Max; /* OPTIONAL */
+       long    *frequencyShift7p5khz;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FrequencyInfoUL_SIB_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_frequencyShift7p5khz_7;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL_SIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_SIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_FrequencyInfoUL_SIB_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FrequencyInfoUL_SIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/FrequencyInfoUL.c b/src/codec_utils/RRC/FrequencyInfoUL.c
new file mode 100644 (file)
index 0000000..97defb6
--- /dev/null
@@ -0,0 +1,230 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "FrequencyInfoUL.h"
+
+#include "MultiFrequencyBandListNR.h"
+#include "SCS-SpecificCarrier.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_scs_SpecificCarrierList_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 <= 5)) {
+               /* 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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyShift7p5khz_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyShift7p5khz_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_4 = {
+       sizeof(struct FrequencyInfoUL__scs_SpecificCarrierList),
+       offsetof(struct FrequencyInfoUL__scs_SpecificCarrierList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_4 = {
+       "scs-SpecificCarrierList",
+       "scs-SpecificCarrierList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_scs_SpecificCarrierList_tags_4,
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_scs_SpecificCarrierList_tags_4, /* Same as above */
+       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
+               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]), /* 2 */
+       { &asn_OER_type_scs_SpecificCarrierList_constr_4, &asn_PER_type_scs_SpecificCarrierList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_scs_SpecificCarrierList_4,
+       1,      /* Single element */
+       &asn_SPC_scs_SpecificCarrierList_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_frequencyShift7p5khz_value2enum_8[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_frequencyShift7p5khz_enum2value_8[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_frequencyShift7p5khz_specs_8 = {
+       asn_MAP_frequencyShift7p5khz_value2enum_8,      /* "tag" => N; sorted by tag */
+       asn_MAP_frequencyShift7p5khz_enum2value_8,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_frequencyShift7p5khz_tags_8[] = {
+       (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_frequencyShift7p5khz_8 = {
+       "frequencyShift7p5khz",
+       "frequencyShift7p5khz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_frequencyShift7p5khz_tags_8,
+       sizeof(asn_DEF_frequencyShift7p5khz_tags_8)
+               /sizeof(asn_DEF_frequencyShift7p5khz_tags_8[0]) - 1, /* 1 */
+       asn_DEF_frequencyShift7p5khz_tags_8,    /* Same as above */
+       sizeof(asn_DEF_frequencyShift7p5khz_tags_8)
+               /sizeof(asn_DEF_frequencyShift7p5khz_tags_8[0]), /* 2 */
+       { &asn_OER_type_frequencyShift7p5khz_constr_8, &asn_PER_type_frequencyShift7p5khz_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_frequencyShift7p5khz_specs_8   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_FrequencyInfoUL_1[] = {
+       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL, absoluteFrequencyPointA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absoluteFrequencyPointA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoUL, scs_SpecificCarrierList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_scs_SpecificCarrierList_4,
+               0,
+               { &asn_OER_memb_scs_SpecificCarrierList_constr_4, &asn_PER_memb_scs_SpecificCarrierList_constr_4,  memb_scs_SpecificCarrierList_constraint_1 },
+               0, 0, /* No default value */
+               "scs-SpecificCarrierList"
+               },
+       { ATF_POINTER, 3, offsetof(struct FrequencyInfoUL, additionalSpectrumEmission),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AdditionalSpectrumEmission,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalSpectrumEmission"
+               },
+       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL, p_Max),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-Max"
+               },
+       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL, frequencyShift7p5khz),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_frequencyShift7p5khz_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyShift7p5khz"
+               },
+};
+static const int asn_MAP_FrequencyInfoUL_oms_1[] = { 0, 1, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_FrequencyInfoUL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoUL_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* absoluteFrequencyPointA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-SpecificCarrierList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* additionalSpectrumEmission */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* p-Max */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* frequencyShift7p5khz */
+};
+asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_specs_1 = {
+       sizeof(struct FrequencyInfoUL),
+       offsetof(struct FrequencyInfoUL, _asn_ctx),
+       asn_MAP_FrequencyInfoUL_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_FrequencyInfoUL_oms_1,  /* Optional members */
+       5, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL = {
+       "FrequencyInfoUL",
+       "FrequencyInfoUL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_FrequencyInfoUL_tags_1,
+       sizeof(asn_DEF_FrequencyInfoUL_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoUL_tags_1[0]), /* 1 */
+       asn_DEF_FrequencyInfoUL_tags_1, /* Same as above */
+       sizeof(asn_DEF_FrequencyInfoUL_tags_1)
+               /sizeof(asn_DEF_FrequencyInfoUL_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_FrequencyInfoUL_1,
+       6,      /* Elements count */
+       &asn_SPC_FrequencyInfoUL_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/FrequencyInfoUL.h b/src/codec_utils/RRC/FrequencyInfoUL.h
new file mode 100644 (file)
index 0000000..27390a5
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _FrequencyInfoUL_H_
+#define        _FrequencyInfoUL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "AdditionalSpectrumEmission.h"
+#include "P-Max.h"
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum FrequencyInfoUL__frequencyShift7p5khz {
+       FrequencyInfoUL__frequencyShift7p5khz_true      = 0
+} e_FrequencyInfoUL__frequencyShift7p5khz;
+
+/* Forward declarations */
+struct MultiFrequencyBandListNR;
+struct SCS_SpecificCarrier;
+
+/* FrequencyInfoUL */
+typedef struct FrequencyInfoUL {
+       struct MultiFrequencyBandListNR *frequencyBandList;     /* OPTIONAL */
+       ARFCN_ValueNR_t *absoluteFrequencyPointA;       /* OPTIONAL */
+       struct FrequencyInfoUL__scs_SpecificCarrierList {
+               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } scs_SpecificCarrierList;
+       AdditionalSpectrumEmission_t    *additionalSpectrumEmission;    /* OPTIONAL */
+       P_Max_t *p_Max; /* OPTIONAL */
+       long    *frequencyShift7p5khz;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} FrequencyInfoUL_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_frequencyShift7p5khz_8;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL;
+extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_specs_1;
+extern asn_TYPE_member_t asn_MBR_FrequencyInfoUL_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _FrequencyInfoUL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/GapConfig.c b/src/codec_utils/RRC/GapConfig.c
new file mode 100644 (file)
index 0000000..119fe2f
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GapConfig.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.
+ */
+static int
+memb_gapOffset_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 >= 0 && value <= 159)) {
+               /* 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_mgl_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mgl_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_mgrp_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mgrp_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_mgta_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mgta_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_gapOffset_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_gapOffset_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_mgl_value2enum_3[] = {
+       { 0,    7,      "ms1dot5" },
+       { 1,    3,      "ms3" },
+       { 2,    7,      "ms3dot5" },
+       { 3,    3,      "ms4" },
+       { 4,    7,      "ms5dot5" },
+       { 5,    3,      "ms6" }
+};
+static const unsigned int asn_MAP_mgl_enum2value_3[] = {
+       0,      /* ms1dot5(0) */
+       1,      /* ms3(1) */
+       2,      /* ms3dot5(2) */
+       3,      /* ms4(3) */
+       4,      /* ms5dot5(4) */
+       5       /* ms6(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mgl_specs_3 = {
+       asn_MAP_mgl_value2enum_3,       /* "tag" => N; sorted by tag */
+       asn_MAP_mgl_enum2value_3,       /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mgl_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_mgl_3 = {
+       "mgl",
+       "mgl",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mgl_tags_3,
+       sizeof(asn_DEF_mgl_tags_3)
+               /sizeof(asn_DEF_mgl_tags_3[0]) - 1, /* 1 */
+       asn_DEF_mgl_tags_3,     /* Same as above */
+       sizeof(asn_DEF_mgl_tags_3)
+               /sizeof(asn_DEF_mgl_tags_3[0]), /* 2 */
+       { &asn_OER_type_mgl_constr_3, &asn_PER_type_mgl_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mgl_specs_3    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mgrp_value2enum_10[] = {
+       { 0,    4,      "ms20" },
+       { 1,    4,      "ms40" },
+       { 2,    4,      "ms80" },
+       { 3,    5,      "ms160" }
+};
+static const unsigned int asn_MAP_mgrp_enum2value_10[] = {
+       3,      /* ms160(3) */
+       0,      /* ms20(0) */
+       1,      /* ms40(1) */
+       2       /* ms80(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mgrp_specs_10 = {
+       asn_MAP_mgrp_value2enum_10,     /* "tag" => N; sorted by tag */
+       asn_MAP_mgrp_enum2value_10,     /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mgrp_tags_10[] = {
+       (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_mgrp_10 = {
+       "mgrp",
+       "mgrp",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mgrp_tags_10,
+       sizeof(asn_DEF_mgrp_tags_10)
+               /sizeof(asn_DEF_mgrp_tags_10[0]) - 1, /* 1 */
+       asn_DEF_mgrp_tags_10,   /* Same as above */
+       sizeof(asn_DEF_mgrp_tags_10)
+               /sizeof(asn_DEF_mgrp_tags_10[0]), /* 2 */
+       { &asn_OER_type_mgrp_constr_10, &asn_PER_type_mgrp_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mgrp_specs_10  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mgta_value2enum_15[] = {
+       { 0,    3,      "ms0" },
+       { 1,    8,      "ms0dot25" },
+       { 2,    7,      "ms0dot5" }
+};
+static const unsigned int asn_MAP_mgta_enum2value_15[] = {
+       0,      /* ms0(0) */
+       1,      /* ms0dot25(1) */
+       2       /* ms0dot5(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mgta_specs_15 = {
+       asn_MAP_mgta_value2enum_15,     /* "tag" => N; sorted by tag */
+       asn_MAP_mgta_enum2value_15,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mgta_tags_15[] = {
+       (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_mgta_15 = {
+       "mgta",
+       "mgta",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mgta_tags_15,
+       sizeof(asn_DEF_mgta_tags_15)
+               /sizeof(asn_DEF_mgta_tags_15[0]) - 1, /* 1 */
+       asn_DEF_mgta_tags_15,   /* Same as above */
+       sizeof(asn_DEF_mgta_tags_15)
+               /sizeof(asn_DEF_mgta_tags_15[0]), /* 2 */
+       { &asn_OER_type_mgta_constr_15, &asn_PER_type_mgta_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mgta_specs_15  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_GapConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct GapConfig, gapOffset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_gapOffset_constr_2, &asn_PER_memb_gapOffset_constr_2,  memb_gapOffset_constraint_1 },
+               0, 0, /* No default value */
+               "gapOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GapConfig, mgl),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mgl_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mgl"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GapConfig, mgrp),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mgrp_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mgrp"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct GapConfig, mgta),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mgta_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mgta"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_GapConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GapConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gapOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mgl */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mgrp */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* mgta */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GapConfig_specs_1 = {
+       sizeof(struct GapConfig),
+       offsetof(struct GapConfig, _asn_ctx),
+       asn_MAP_GapConfig_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_GapConfig = {
+       "GapConfig",
+       "GapConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GapConfig_tags_1,
+       sizeof(asn_DEF_GapConfig_tags_1)
+               /sizeof(asn_DEF_GapConfig_tags_1[0]), /* 1 */
+       asn_DEF_GapConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_GapConfig_tags_1)
+               /sizeof(asn_DEF_GapConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GapConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_GapConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/GapConfig.h b/src/codec_utils/RRC/GapConfig.h
new file mode 100644 (file)
index 0000000..84c5529
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GapConfig_H_
+#define        _GapConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GapConfig__mgl {
+       GapConfig__mgl_ms1dot5  = 0,
+       GapConfig__mgl_ms3      = 1,
+       GapConfig__mgl_ms3dot5  = 2,
+       GapConfig__mgl_ms4      = 3,
+       GapConfig__mgl_ms5dot5  = 4,
+       GapConfig__mgl_ms6      = 5
+} e_GapConfig__mgl;
+typedef enum GapConfig__mgrp {
+       GapConfig__mgrp_ms20    = 0,
+       GapConfig__mgrp_ms40    = 1,
+       GapConfig__mgrp_ms80    = 2,
+       GapConfig__mgrp_ms160   = 3
+} e_GapConfig__mgrp;
+typedef enum GapConfig__mgta {
+       GapConfig__mgta_ms0     = 0,
+       GapConfig__mgta_ms0dot25        = 1,
+       GapConfig__mgta_ms0dot5 = 2
+} e_GapConfig__mgta;
+
+/* GapConfig */
+typedef struct GapConfig {
+       long     gapOffset;
+       long     mgl;
+       long     mgrp;
+       long     mgta;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GapConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_mgl_3; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mgrp_10;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mgta_15;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_GapConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_GapConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_GapConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GapConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.c b/src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.c
new file mode 100644 (file)
index 0000000..53b267b
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "GeneralParametersMRDC-XDD-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_splitSRB_WithOneUL_Path_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_splitSRB_WithOneUL_Path_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_splitDRB_withUL_Both_MCG_SCG_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_splitDRB_withUL_Both_MCG_SCG_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srb3_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srb3_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_v2x_EUTRA_v1530_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_v2x_EUTRA_v1530_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_splitSRB_WithOneUL_Path_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_splitSRB_WithOneUL_Path_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_splitSRB_WithOneUL_Path_specs_2 = {
+       asn_MAP_splitSRB_WithOneUL_Path_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_splitSRB_WithOneUL_Path_enum2value_2,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_splitSRB_WithOneUL_Path_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_splitSRB_WithOneUL_Path_2 = {
+       "splitSRB-WithOneUL-Path",
+       "splitSRB-WithOneUL-Path",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_splitSRB_WithOneUL_Path_tags_2,
+       sizeof(asn_DEF_splitSRB_WithOneUL_Path_tags_2)
+               /sizeof(asn_DEF_splitSRB_WithOneUL_Path_tags_2[0]) - 1, /* 1 */
+       asn_DEF_splitSRB_WithOneUL_Path_tags_2, /* Same as above */
+       sizeof(asn_DEF_splitSRB_WithOneUL_Path_tags_2)
+               /sizeof(asn_DEF_splitSRB_WithOneUL_Path_tags_2[0]), /* 2 */
+       { &asn_OER_type_splitSRB_WithOneUL_Path_constr_2, &asn_PER_type_splitSRB_WithOneUL_Path_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_splitSRB_WithOneUL_Path_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_splitDRB_withUL_Both_MCG_SCG_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_splitDRB_withUL_Both_MCG_SCG_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_splitDRB_withUL_Both_MCG_SCG_specs_4 = {
+       asn_MAP_splitDRB_withUL_Both_MCG_SCG_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_splitDRB_withUL_Both_MCG_SCG_enum2value_4,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4[] = {
+       (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_splitDRB_withUL_Both_MCG_SCG_4 = {
+       "splitDRB-withUL-Both-MCG-SCG",
+       "splitDRB-withUL-Both-MCG-SCG",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4,
+       sizeof(asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4)
+               /sizeof(asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4[0]) - 1, /* 1 */
+       asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4,    /* Same as above */
+       sizeof(asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4)
+               /sizeof(asn_DEF_splitDRB_withUL_Both_MCG_SCG_tags_4[0]), /* 2 */
+       { &asn_OER_type_splitDRB_withUL_Both_MCG_SCG_constr_4, &asn_PER_type_splitDRB_withUL_Both_MCG_SCG_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_splitDRB_withUL_Both_MCG_SCG_specs_4   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_srb3_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_srb3_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_srb3_specs_6 = {
+       asn_MAP_srb3_value2enum_6,      /* "tag" => N; sorted by tag */
+       asn_MAP_srb3_enum2value_6,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_srb3_tags_6[] = {
+       (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_srb3_6 = {
+       "srb3",
+       "srb3",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_srb3_tags_6,
+       sizeof(asn_DEF_srb3_tags_6)
+               /sizeof(asn_DEF_srb3_tags_6[0]) - 1, /* 1 */
+       asn_DEF_srb3_tags_6,    /* Same as above */
+       sizeof(asn_DEF_srb3_tags_6)
+               /sizeof(asn_DEF_srb3_tags_6[0]), /* 2 */
+       { &asn_OER_type_srb3_constr_6, &asn_PER_type_srb3_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_srb3_specs_6   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_v2x_EUTRA_v1530_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_v2x_EUTRA_v1530_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_v2x_EUTRA_v1530_specs_8 = {
+       asn_MAP_v2x_EUTRA_v1530_value2enum_8,   /* "tag" => N; sorted by tag */
+       asn_MAP_v2x_EUTRA_v1530_enum2value_8,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_v2x_EUTRA_v1530_tags_8[] = {
+       (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_v2x_EUTRA_v1530_8 = {
+       "v2x-EUTRA-v1530",
+       "v2x-EUTRA-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_v2x_EUTRA_v1530_tags_8,
+       sizeof(asn_DEF_v2x_EUTRA_v1530_tags_8)
+               /sizeof(asn_DEF_v2x_EUTRA_v1530_tags_8[0]) - 1, /* 1 */
+       asn_DEF_v2x_EUTRA_v1530_tags_8, /* Same as above */
+       sizeof(asn_DEF_v2x_EUTRA_v1530_tags_8)
+               /sizeof(asn_DEF_v2x_EUTRA_v1530_tags_8[0]), /* 2 */
+       { &asn_OER_type_v2x_EUTRA_v1530_constr_8, &asn_PER_type_v2x_EUTRA_v1530_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_v2x_EUTRA_v1530_specs_8        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_GeneralParametersMRDC_XDD_Diff_1[] = {
+       { ATF_POINTER, 4, offsetof(struct GeneralParametersMRDC_XDD_Diff, splitSRB_WithOneUL_Path),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_splitSRB_WithOneUL_Path_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "splitSRB-WithOneUL-Path"
+               },
+       { ATF_POINTER, 3, offsetof(struct GeneralParametersMRDC_XDD_Diff, splitDRB_withUL_Both_MCG_SCG),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_splitDRB_withUL_Both_MCG_SCG_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "splitDRB-withUL-Both-MCG-SCG"
+               },
+       { ATF_POINTER, 2, offsetof(struct GeneralParametersMRDC_XDD_Diff, srb3),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_srb3_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srb3"
+               },
+       { ATF_POINTER, 1, offsetof(struct GeneralParametersMRDC_XDD_Diff, v2x_EUTRA_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_v2x_EUTRA_v1530_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "v2x-EUTRA-v1530"
+               },
+};
+static const int asn_MAP_GeneralParametersMRDC_XDD_Diff_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_GeneralParametersMRDC_XDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* splitSRB-WithOneUL-Path */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* splitDRB-withUL-Both-MCG-SCG */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* srb3 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* v2x-EUTRA-v1530 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_GeneralParametersMRDC_XDD_Diff_specs_1 = {
+       sizeof(struct GeneralParametersMRDC_XDD_Diff),
+       offsetof(struct GeneralParametersMRDC_XDD_Diff, _asn_ctx),
+       asn_MAP_GeneralParametersMRDC_XDD_Diff_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_GeneralParametersMRDC_XDD_Diff_oms_1,   /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_GeneralParametersMRDC_XDD_Diff = {
+       "GeneralParametersMRDC-XDD-Diff",
+       "GeneralParametersMRDC-XDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1,
+       sizeof(asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1)
+               /sizeof(asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1,  /* Same as above */
+       sizeof(asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1)
+               /sizeof(asn_DEF_GeneralParametersMRDC_XDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_GeneralParametersMRDC_XDD_Diff_1,
+       4,      /* Elements count */
+       &asn_SPC_GeneralParametersMRDC_XDD_Diff_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.h b/src/codec_utils/RRC/GeneralParametersMRDC-XDD-Diff.h
new file mode 100644 (file)
index 0000000..5ee9ce3
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _GeneralParametersMRDC_XDD_Diff_H_
+#define        _GeneralParametersMRDC_XDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum GeneralParametersMRDC_XDD_Diff__splitSRB_WithOneUL_Path {
+       GeneralParametersMRDC_XDD_Diff__splitSRB_WithOneUL_Path_supported       = 0
+} e_GeneralParametersMRDC_XDD_Diff__splitSRB_WithOneUL_Path;
+typedef enum GeneralParametersMRDC_XDD_Diff__splitDRB_withUL_Both_MCG_SCG {
+       GeneralParametersMRDC_XDD_Diff__splitDRB_withUL_Both_MCG_SCG_supported  = 0
+} e_GeneralParametersMRDC_XDD_Diff__splitDRB_withUL_Both_MCG_SCG;
+typedef enum GeneralParametersMRDC_XDD_Diff__srb3 {
+       GeneralParametersMRDC_XDD_Diff__srb3_supported  = 0
+} e_GeneralParametersMRDC_XDD_Diff__srb3;
+typedef enum GeneralParametersMRDC_XDD_Diff__v2x_EUTRA_v1530 {
+       GeneralParametersMRDC_XDD_Diff__v2x_EUTRA_v1530_supported       = 0
+} e_GeneralParametersMRDC_XDD_Diff__v2x_EUTRA_v1530;
+
+/* GeneralParametersMRDC-XDD-Diff */
+typedef struct GeneralParametersMRDC_XDD_Diff {
+       long    *splitSRB_WithOneUL_Path;       /* OPTIONAL */
+       long    *splitDRB_withUL_Both_MCG_SCG;  /* OPTIONAL */
+       long    *srb3;  /* OPTIONAL */
+       long    *v2x_EUTRA_v1530;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} GeneralParametersMRDC_XDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_splitSRB_WithOneUL_Path_2;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_splitDRB_withUL_Both_MCG_SCG_4;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_srb3_6;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_v2x_EUTRA_v1530_8;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_GeneralParametersMRDC_XDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_GeneralParametersMRDC_XDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_GeneralParametersMRDC_XDD_Diff_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GeneralParametersMRDC_XDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/HandoverCommand-IEs.c b/src/codec_utils/RRC/HandoverCommand-IEs.c
new file mode 100644 (file)
index 0000000..a0dfcba
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "HandoverCommand-IEs.h"
+
+static int
+memb_handoverCommandMessage_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_handoverCommandMessage_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_handoverCommandMessage_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct HandoverCommand_IEs__nonCriticalExtension),
+       offsetof(struct HandoverCommand_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_HandoverCommand_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverCommand_IEs, handoverCommandMessage),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_handoverCommandMessage_constr_2, &asn_PER_memb_handoverCommandMessage_constr_2,  memb_handoverCommandMessage_constraint_1 },
+               0, 0, /* No default value */
+               "handoverCommandMessage"
+               },
+       { ATF_POINTER, 1, offsetof(struct HandoverCommand_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_HandoverCommand_IEs_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_HandoverCommand_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HandoverCommand_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverCommandMessage */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_HandoverCommand_IEs_specs_1 = {
+       sizeof(struct HandoverCommand_IEs),
+       offsetof(struct HandoverCommand_IEs, _asn_ctx),
+       asn_MAP_HandoverCommand_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_HandoverCommand_IEs_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_HandoverCommand_IEs = {
+       "HandoverCommand-IEs",
+       "HandoverCommand-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_HandoverCommand_IEs_tags_1,
+       sizeof(asn_DEF_HandoverCommand_IEs_tags_1)
+               /sizeof(asn_DEF_HandoverCommand_IEs_tags_1[0]), /* 1 */
+       asn_DEF_HandoverCommand_IEs_tags_1,     /* Same as above */
+       sizeof(asn_DEF_HandoverCommand_IEs_tags_1)
+               /sizeof(asn_DEF_HandoverCommand_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_HandoverCommand_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_HandoverCommand_IEs_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/HandoverCommand-IEs.h b/src/codec_utils/RRC/HandoverCommand-IEs.h
new file mode 100644 (file)
index 0000000..d332421
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _HandoverCommand_IEs_H_
+#define        _HandoverCommand_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* HandoverCommand-IEs */
+typedef struct HandoverCommand_IEs {
+       OCTET_STRING_t   handoverCommandMessage;
+       struct HandoverCommand_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} HandoverCommand_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HandoverCommand_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCommand_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_HandoverCommand_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HandoverCommand_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/HandoverCommand.c b/src/codec_utils/RRC/HandoverCommand.c
new file mode 100644 (file)
index 0000000..a8ca0c9
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "HandoverCommand.h"
+
+#include "HandoverCommand-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct HandoverCommand__criticalExtensions__c1, choice.handoverCommand),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_HandoverCommand_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverCommand"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverCommand__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverCommand__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverCommand__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverCommand */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct HandoverCommand__criticalExtensions__c1),
+       offsetof(struct HandoverCommand__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct HandoverCommand__criticalExtensions__c1, present),
+       sizeof(((struct HandoverCommand__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_8 = {
+       sizeof(struct HandoverCommand__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct HandoverCommand__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_8 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_8,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_8,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct HandoverCommand__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct HandoverCommand__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct HandoverCommand__criticalExtensions),
+       offsetof(struct HandoverCommand__criticalExtensions, _asn_ctx),
+       offsetof(struct HandoverCommand__criticalExtensions, present),
+       sizeof(((struct HandoverCommand__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HandoverCommand_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverCommand, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_HandoverCommand_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HandoverCommand_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HandoverCommand_specs_1 = {
+       sizeof(struct HandoverCommand),
+       offsetof(struct HandoverCommand, _asn_ctx),
+       asn_MAP_HandoverCommand_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_HandoverCommand = {
+       "HandoverCommand",
+       "HandoverCommand",
+       &asn_OP_SEQUENCE,
+       asn_DEF_HandoverCommand_tags_1,
+       sizeof(asn_DEF_HandoverCommand_tags_1)
+               /sizeof(asn_DEF_HandoverCommand_tags_1[0]), /* 1 */
+       asn_DEF_HandoverCommand_tags_1, /* Same as above */
+       sizeof(asn_DEF_HandoverCommand_tags_1)
+               /sizeof(asn_DEF_HandoverCommand_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_HandoverCommand_1,
+       1,      /* Elements count */
+       &asn_SPC_HandoverCommand_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/HandoverCommand.h b/src/codec_utils/RRC/HandoverCommand.h
new file mode 100644 (file)
index 0000000..9dccba0
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _HandoverCommand_H_
+#define        _HandoverCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HandoverCommand__criticalExtensions_PR {
+       HandoverCommand__criticalExtensions_PR_NOTHING, /* No components present */
+       HandoverCommand__criticalExtensions_PR_c1,
+       HandoverCommand__criticalExtensions_PR_criticalExtensionsFuture
+} HandoverCommand__criticalExtensions_PR;
+typedef enum HandoverCommand__criticalExtensions__c1_PR {
+       HandoverCommand__criticalExtensions__c1_PR_NOTHING,     /* No components present */
+       HandoverCommand__criticalExtensions__c1_PR_handoverCommand,
+       HandoverCommand__criticalExtensions__c1_PR_spare3,
+       HandoverCommand__criticalExtensions__c1_PR_spare2,
+       HandoverCommand__criticalExtensions__c1_PR_spare1
+} HandoverCommand__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct HandoverCommand_IEs;
+
+/* HandoverCommand */
+typedef struct HandoverCommand {
+       struct HandoverCommand__criticalExtensions {
+               HandoverCommand__criticalExtensions_PR present;
+               union HandoverCommand__criticalExtensions_u {
+                       struct HandoverCommand__criticalExtensions__c1 {
+                               HandoverCommand__criticalExtensions__c1_PR present;
+                               union HandoverCommand__criticalExtensions__c1_u {
+                                       struct HandoverCommand_IEs      *handoverCommand;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct HandoverCommand__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} HandoverCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HandoverCommand;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HandoverCommand_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/HandoverPreparationInformation-IEs.c b/src/codec_utils/RRC/HandoverPreparationInformation-IEs.c
new file mode 100644 (file)
index 0000000..6088d33
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "HandoverPreparationInformation-IEs.h"
+
+#include "AS-Config.h"
+#include "RRM-Config.h"
+#include "AS-Context.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_6 = {
+       sizeof(struct HandoverPreparationInformation_IEs__nonCriticalExtension),
+       offsetof(struct HandoverPreparationInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_6 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_6,
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_6,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_HandoverPreparationInformation_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationInformation_IEs, ue_CapabilityRAT_List),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_CapabilityRAT_ContainerList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-CapabilityRAT-List"
+               },
+       { ATF_POINTER, 4, offsetof(struct HandoverPreparationInformation_IEs, sourceConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AS_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sourceConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct HandoverPreparationInformation_IEs, rrm_Config),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRM_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrm-Config"
+               },
+       { ATF_POINTER, 2, offsetof(struct HandoverPreparationInformation_IEs, as_Context),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AS_Context,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "as-Context"
+               },
+       { ATF_POINTER, 1, offsetof(struct HandoverPreparationInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_HandoverPreparationInformation_IEs_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_HandoverPreparationInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-CapabilityRAT-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sourceConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rrm-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* as-Context */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationInformation_IEs_specs_1 = {
+       sizeof(struct HandoverPreparationInformation_IEs),
+       offsetof(struct HandoverPreparationInformation_IEs, _asn_ctx),
+       asn_MAP_HandoverPreparationInformation_IEs_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_HandoverPreparationInformation_IEs_oms_1,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_HandoverPreparationInformation_IEs = {
+       "HandoverPreparationInformation-IEs",
+       "HandoverPreparationInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_HandoverPreparationInformation_IEs_tags_1,
+       sizeof(asn_DEF_HandoverPreparationInformation_IEs_tags_1)
+               /sizeof(asn_DEF_HandoverPreparationInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_HandoverPreparationInformation_IEs_tags_1,      /* Same as above */
+       sizeof(asn_DEF_HandoverPreparationInformation_IEs_tags_1)
+               /sizeof(asn_DEF_HandoverPreparationInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_HandoverPreparationInformation_IEs_1,
+       5,      /* Elements count */
+       &asn_SPC_HandoverPreparationInformation_IEs_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/HandoverPreparationInformation-IEs.h b/src/codec_utils/RRC/HandoverPreparationInformation-IEs.h
new file mode 100644 (file)
index 0000000..ad48ea8
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _HandoverPreparationInformation_IEs_H_
+#define        _HandoverPreparationInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UE-CapabilityRAT-ContainerList.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct AS_Config;
+struct RRM_Config;
+struct AS_Context;
+
+/* HandoverPreparationInformation-IEs */
+typedef struct HandoverPreparationInformation_IEs {
+       UE_CapabilityRAT_ContainerList_t         ue_CapabilityRAT_List;
+       struct AS_Config        *sourceConfig;  /* OPTIONAL */
+       struct RRM_Config       *rrm_Config;    /* OPTIONAL */
+       struct AS_Context       *as_Context;    /* OPTIONAL */
+       struct HandoverPreparationInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} HandoverPreparationInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_HandoverPreparationInformation_IEs_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HandoverPreparationInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/HandoverPreparationInformation.c b/src/codec_utils/RRC/HandoverPreparationInformation.c
new file mode 100644 (file)
index 0000000..e500874
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "HandoverPreparationInformation.h"
+
+#include "HandoverPreparationInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, choice.handoverPreparationInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_HandoverPreparationInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverPreparationInformation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverPreparationInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct HandoverPreparationInformation__criticalExtensions__c1),
+       offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct HandoverPreparationInformation__criticalExtensions__c1, present),
+       sizeof(((struct HandoverPreparationInformation__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_8 = {
+       sizeof(struct HandoverPreparationInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct HandoverPreparationInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_8 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_8,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_8,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct HandoverPreparationInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct HandoverPreparationInformation__criticalExtensions),
+       offsetof(struct HandoverPreparationInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct HandoverPreparationInformation__criticalExtensions, present),
+       sizeof(((struct HandoverPreparationInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_HandoverPreparationInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct HandoverPreparationInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_HandoverPreparationInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_HandoverPreparationInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationInformation_specs_1 = {
+       sizeof(struct HandoverPreparationInformation),
+       offsetof(struct HandoverPreparationInformation, _asn_ctx),
+       asn_MAP_HandoverPreparationInformation_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_HandoverPreparationInformation = {
+       "HandoverPreparationInformation",
+       "HandoverPreparationInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_HandoverPreparationInformation_tags_1,
+       sizeof(asn_DEF_HandoverPreparationInformation_tags_1)
+               /sizeof(asn_DEF_HandoverPreparationInformation_tags_1[0]), /* 1 */
+       asn_DEF_HandoverPreparationInformation_tags_1,  /* Same as above */
+       sizeof(asn_DEF_HandoverPreparationInformation_tags_1)
+               /sizeof(asn_DEF_HandoverPreparationInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_HandoverPreparationInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_HandoverPreparationInformation_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/HandoverPreparationInformation.h b/src/codec_utils/RRC/HandoverPreparationInformation.h
new file mode 100644 (file)
index 0000000..faa1227
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _HandoverPreparationInformation_H_
+#define        _HandoverPreparationInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum HandoverPreparationInformation__criticalExtensions_PR {
+       HandoverPreparationInformation__criticalExtensions_PR_NOTHING,  /* No components present */
+       HandoverPreparationInformation__criticalExtensions_PR_c1,
+       HandoverPreparationInformation__criticalExtensions_PR_criticalExtensionsFuture
+} HandoverPreparationInformation__criticalExtensions_PR;
+typedef enum HandoverPreparationInformation__criticalExtensions__c1_PR {
+       HandoverPreparationInformation__criticalExtensions__c1_PR_NOTHING,      /* No components present */
+       HandoverPreparationInformation__criticalExtensions__c1_PR_handoverPreparationInformation,
+       HandoverPreparationInformation__criticalExtensions__c1_PR_spare3,
+       HandoverPreparationInformation__criticalExtensions__c1_PR_spare2,
+       HandoverPreparationInformation__criticalExtensions__c1_PR_spare1
+} HandoverPreparationInformation__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct HandoverPreparationInformation_IEs;
+
+/* HandoverPreparationInformation */
+typedef struct HandoverPreparationInformation {
+       struct HandoverPreparationInformation__criticalExtensions {
+               HandoverPreparationInformation__criticalExtensions_PR present;
+               union HandoverPreparationInformation__criticalExtensions_u {
+                       struct HandoverPreparationInformation__criticalExtensions__c1 {
+                               HandoverPreparationInformation__criticalExtensions__c1_PR present;
+                               union HandoverPreparationInformation__criticalExtensions__c1_u {
+                                       struct HandoverPreparationInformation_IEs       *handoverPreparationInformation;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct HandoverPreparationInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} HandoverPreparationInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _HandoverPreparationInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Hysteresis.c b/src/codec_utils/RRC/Hysteresis.c
new file mode 100644 (file)
index 0000000..235189c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Hysteresis.h"
+
+int
+Hysteresis_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 <= 30)) {
+               /* 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_Hysteresis_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..30) */,
+       -1};
+asn_per_constraints_t asn_PER_type_Hysteresis_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  30 }       /* (0..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Hysteresis_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Hysteresis = {
+       "Hysteresis",
+       "Hysteresis",
+       &asn_OP_NativeInteger,
+       asn_DEF_Hysteresis_tags_1,
+       sizeof(asn_DEF_Hysteresis_tags_1)
+               /sizeof(asn_DEF_Hysteresis_tags_1[0]), /* 1 */
+       asn_DEF_Hysteresis_tags_1,      /* Same as above */
+       sizeof(asn_DEF_Hysteresis_tags_1)
+               /sizeof(asn_DEF_Hysteresis_tags_1[0]), /* 1 */
+       { &asn_OER_type_Hysteresis_constr_1, &asn_PER_type_Hysteresis_constr_1, Hysteresis_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/Hysteresis.h b/src/codec_utils/RRC/Hysteresis.h
new file mode 100644 (file)
index 0000000..211ca5b
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Hysteresis_H_
+#define        _Hysteresis_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Hysteresis */
+typedef long    Hysteresis_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_Hysteresis_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_Hysteresis;
+asn_struct_free_f Hysteresis_free;
+asn_struct_print_f Hysteresis_print;
+asn_constr_check_f Hysteresis_constraint;
+ber_type_decoder_f Hysteresis_decode_ber;
+der_type_encoder_f Hysteresis_encode_der;
+xer_type_decoder_f Hysteresis_decode_xer;
+xer_type_encoder_f Hysteresis_encode_xer;
+oer_type_decoder_f Hysteresis_decode_oer;
+oer_type_encoder_f Hysteresis_encode_oer;
+per_type_decoder_f Hysteresis_decode_uper;
+per_type_encoder_f Hysteresis_encode_uper;
+per_type_decoder_f Hysteresis_decode_aper;
+per_type_encoder_f Hysteresis_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Hysteresis_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/I-RNTI-Value.c b/src/codec_utils/RRC/I-RNTI-Value.c
new file mode 100644 (file)
index 0000000..d063214
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "I-RNTI-Value.h"
+
+int
+I_RNTI_Value_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 == 40)) {
+               /* 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_I_RNTI_Value_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       40      /* (SIZE(40..40)) */};
+asn_per_constraints_t asn_PER_type_I_RNTI_Value_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  40,  40 }      /* (SIZE(40..40)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_I_RNTI_Value_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_I_RNTI_Value = {
+       "I-RNTI-Value",
+       "I-RNTI-Value",
+       &asn_OP_BIT_STRING,
+       asn_DEF_I_RNTI_Value_tags_1,
+       sizeof(asn_DEF_I_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_I_RNTI_Value_tags_1[0]), /* 1 */
+       asn_DEF_I_RNTI_Value_tags_1,    /* Same as above */
+       sizeof(asn_DEF_I_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_I_RNTI_Value_tags_1[0]), /* 1 */
+       { &asn_OER_type_I_RNTI_Value_constr_1, &asn_PER_type_I_RNTI_Value_constr_1, I_RNTI_Value_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/I-RNTI-Value.h b/src/codec_utils/RRC/I-RNTI-Value.h
new file mode 100644 (file)
index 0000000..23c6c49
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _I_RNTI_Value_H_
+#define        _I_RNTI_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* I-RNTI-Value */
+typedef BIT_STRING_t    I_RNTI_Value_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_I_RNTI_Value_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_I_RNTI_Value;
+asn_struct_free_f I_RNTI_Value_free;
+asn_struct_print_f I_RNTI_Value_print;
+asn_constr_check_f I_RNTI_Value_constraint;
+ber_type_decoder_f I_RNTI_Value_decode_ber;
+der_type_encoder_f I_RNTI_Value_encode_der;
+xer_type_decoder_f I_RNTI_Value_decode_xer;
+xer_type_encoder_f I_RNTI_Value_encode_xer;
+oer_type_decoder_f I_RNTI_Value_decode_oer;
+oer_type_encoder_f I_RNTI_Value_encode_oer;
+per_type_decoder_f I_RNTI_Value_decode_uper;
+per_type_encoder_f I_RNTI_Value_encode_uper;
+per_type_decoder_f I_RNTI_Value_decode_aper;
+per_type_encoder_f I_RNTI_Value_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _I_RNTI_Value_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/INT-ConfigurationPerServingCell.c b/src/codec_utils/RRC/INT-ConfigurationPerServingCell.c
new file mode 100644 (file)
index 0000000..ad7deee
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "INT-ConfigurationPerServingCell.h"
+
+static int
+memb_positionInDCI_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 >= 0 && value <= 125)) {
+               /* 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_positionInDCI_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..125) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_positionInDCI_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  125 }      /* (0..125) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_INT_ConfigurationPerServingCell_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct INT_ConfigurationPerServingCell, servingCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct INT_ConfigurationPerServingCell, positionInDCI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_positionInDCI_constr_3, &asn_PER_memb_positionInDCI_constr_3,  memb_positionInDCI_constraint_1 },
+               0, 0, /* No default value */
+               "positionInDCI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_INT_ConfigurationPerServingCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_INT_ConfigurationPerServingCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* positionInDCI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_INT_ConfigurationPerServingCell_specs_1 = {
+       sizeof(struct INT_ConfigurationPerServingCell),
+       offsetof(struct INT_ConfigurationPerServingCell, _asn_ctx),
+       asn_MAP_INT_ConfigurationPerServingCell_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_INT_ConfigurationPerServingCell = {
+       "INT-ConfigurationPerServingCell",
+       "INT-ConfigurationPerServingCell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_INT_ConfigurationPerServingCell_tags_1,
+       sizeof(asn_DEF_INT_ConfigurationPerServingCell_tags_1)
+               /sizeof(asn_DEF_INT_ConfigurationPerServingCell_tags_1[0]), /* 1 */
+       asn_DEF_INT_ConfigurationPerServingCell_tags_1, /* Same as above */
+       sizeof(asn_DEF_INT_ConfigurationPerServingCell_tags_1)
+               /sizeof(asn_DEF_INT_ConfigurationPerServingCell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_INT_ConfigurationPerServingCell_1,
+       2,      /* Elements count */
+       &asn_SPC_INT_ConfigurationPerServingCell_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/INT-ConfigurationPerServingCell.h b/src/codec_utils/RRC/INT-ConfigurationPerServingCell.h
new file mode 100644 (file)
index 0000000..e25ae14
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _INT_ConfigurationPerServingCell_H_
+#define        _INT_ConfigurationPerServingCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* INT-ConfigurationPerServingCell */
+typedef struct INT_ConfigurationPerServingCell {
+       ServCellIndex_t  servingCellId;
+       long     positionInDCI;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} INT_ConfigurationPerServingCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_INT_ConfigurationPerServingCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_INT_ConfigurationPerServingCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_INT_ConfigurationPerServingCell_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _INT_ConfigurationPerServingCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InitialUE-Identity.c b/src/codec_utils/RRC/InitialUE-Identity.c
new file mode 100644 (file)
index 0000000..5d9cc5d
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InitialUE-Identity.h"
+
+static int
+memb_ng_5G_S_TMSI_Part1_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 == 39)) {
+               /* 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_randomValue_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 == 39)) {
+               /* 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_ng_5G_S_TMSI_Part1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       39      /* (SIZE(39..39)) */};
+static asn_per_constraints_t asn_PER_memb_ng_5G_S_TMSI_Part1_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  39,  39 }      /* (SIZE(39..39)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_randomValue_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       39      /* (SIZE(39..39)) */};
+static asn_per_constraints_t asn_PER_memb_randomValue_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  39,  39 }      /* (SIZE(39..39)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_InitialUE_Identity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_InitialUE_Identity_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InitialUE_Identity_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct InitialUE_Identity, choice.ng_5G_S_TMSI_Part1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_ng_5G_S_TMSI_Part1_constr_2, &asn_PER_memb_ng_5G_S_TMSI_Part1_constr_2,  memb_ng_5G_S_TMSI_Part1_constraint_1 },
+               0, 0, /* No default value */
+               "ng-5G-S-TMSI-Part1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InitialUE_Identity, choice.randomValue),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_randomValue_constr_3, &asn_PER_memb_randomValue_constr_3,  memb_randomValue_constraint_1 },
+               0, 0, /* No default value */
+               "randomValue"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_InitialUE_Identity_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ng-5G-S-TMSI-Part1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* randomValue */
+};
+asn_CHOICE_specifics_t asn_SPC_InitialUE_Identity_specs_1 = {
+       sizeof(struct InitialUE_Identity),
+       offsetof(struct InitialUE_Identity, _asn_ctx),
+       offsetof(struct InitialUE_Identity, present),
+       sizeof(((struct InitialUE_Identity *)0)->present),
+       asn_MAP_InitialUE_Identity_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_InitialUE_Identity = {
+       "InitialUE-Identity",
+       "InitialUE-Identity",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_InitialUE_Identity_constr_1, &asn_PER_type_InitialUE_Identity_constr_1, CHOICE_constraint },
+       asn_MBR_InitialUE_Identity_1,
+       2,      /* Elements count */
+       &asn_SPC_InitialUE_Identity_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InitialUE-Identity.h b/src/codec_utils/RRC/InitialUE-Identity.h
new file mode 100644 (file)
index 0000000..e3ecd35
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InitialUE_Identity_H_
+#define        _InitialUE_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum InitialUE_Identity_PR {
+       InitialUE_Identity_PR_NOTHING,  /* No components present */
+       InitialUE_Identity_PR_ng_5G_S_TMSI_Part1,
+       InitialUE_Identity_PR_randomValue
+} InitialUE_Identity_PR;
+
+/* InitialUE-Identity */
+typedef struct InitialUE_Identity {
+       InitialUE_Identity_PR present;
+       union InitialUE_Identity_u {
+               BIT_STRING_t     ng_5G_S_TMSI_Part1;
+               BIT_STRING_t     randomValue;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InitialUE_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InitialUE_Identity;
+extern asn_CHOICE_specifics_t asn_SPC_InitialUE_Identity_specs_1;
+extern asn_TYPE_member_t asn_MBR_InitialUE_Identity_1[2];
+extern asn_per_constraints_t asn_PER_type_InitialUE_Identity_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InitialUE_Identity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/IntegrityProtAlgorithm.c b/src/codec_utils/RRC/IntegrityProtAlgorithm.c
new file mode 100644 (file)
index 0000000..f1bb10a
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "IntegrityProtAlgorithm.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_IntegrityProtAlgorithm_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_IntegrityProtAlgorithm_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }    /* (0..7,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_IntegrityProtAlgorithm_value2enum_1[] = {
+       { 0,    4,      "nia0" },
+       { 1,    4,      "nia1" },
+       { 2,    4,      "nia2" },
+       { 3,    4,      "nia3" },
+       { 4,    6,      "spare4" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_IntegrityProtAlgorithm_enum2value_1[] = {
+       0,      /* nia0(0) */
+       1,      /* nia1(1) */
+       2,      /* nia2(2) */
+       3,      /* nia3(3) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5,      /* spare3(5) */
+       4       /* spare4(4) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_IntegrityProtAlgorithm_specs_1 = {
+       asn_MAP_IntegrityProtAlgorithm_value2enum_1,    /* "tag" => N; sorted by tag */
+       asn_MAP_IntegrityProtAlgorithm_enum2value_1,    /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       9,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_IntegrityProtAlgorithm_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_IntegrityProtAlgorithm = {
+       "IntegrityProtAlgorithm",
+       "IntegrityProtAlgorithm",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_IntegrityProtAlgorithm_tags_1,
+       sizeof(asn_DEF_IntegrityProtAlgorithm_tags_1)
+               /sizeof(asn_DEF_IntegrityProtAlgorithm_tags_1[0]), /* 1 */
+       asn_DEF_IntegrityProtAlgorithm_tags_1,  /* Same as above */
+       sizeof(asn_DEF_IntegrityProtAlgorithm_tags_1)
+               /sizeof(asn_DEF_IntegrityProtAlgorithm_tags_1[0]), /* 1 */
+       { &asn_OER_type_IntegrityProtAlgorithm_constr_1, &asn_PER_type_IntegrityProtAlgorithm_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_IntegrityProtAlgorithm_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/IntegrityProtAlgorithm.h b/src/codec_utils/RRC/IntegrityProtAlgorithm.h
new file mode 100644 (file)
index 0000000..f751130
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _IntegrityProtAlgorithm_H_
+#define        _IntegrityProtAlgorithm_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum IntegrityProtAlgorithm {
+       IntegrityProtAlgorithm_nia0     = 0,
+       IntegrityProtAlgorithm_nia1     = 1,
+       IntegrityProtAlgorithm_nia2     = 2,
+       IntegrityProtAlgorithm_nia3     = 3,
+       IntegrityProtAlgorithm_spare4   = 4,
+       IntegrityProtAlgorithm_spare3   = 5,
+       IntegrityProtAlgorithm_spare2   = 6,
+       IntegrityProtAlgorithm_spare1   = 7
+       /*
+        * Enumeration is extensible
+        */
+} e_IntegrityProtAlgorithm;
+
+/* IntegrityProtAlgorithm */
+typedef long    IntegrityProtAlgorithm_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_IntegrityProtAlgorithm_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_IntegrityProtAlgorithm;
+extern const asn_INTEGER_specifics_t asn_SPC_IntegrityProtAlgorithm_specs_1;
+asn_struct_free_f IntegrityProtAlgorithm_free;
+asn_struct_print_f IntegrityProtAlgorithm_print;
+asn_constr_check_f IntegrityProtAlgorithm_constraint;
+ber_type_decoder_f IntegrityProtAlgorithm_decode_ber;
+der_type_encoder_f IntegrityProtAlgorithm_encode_der;
+xer_type_decoder_f IntegrityProtAlgorithm_decode_xer;
+xer_type_encoder_f IntegrityProtAlgorithm_encode_xer;
+oer_type_decoder_f IntegrityProtAlgorithm_decode_oer;
+oer_type_encoder_f IntegrityProtAlgorithm_encode_oer;
+per_type_decoder_f IntegrityProtAlgorithm_decode_uper;
+per_type_encoder_f IntegrityProtAlgorithm_encode_uper;
+per_type_decoder_f IntegrityProtAlgorithm_decode_aper;
+per_type_encoder_f IntegrityProtAlgorithm_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IntegrityProtAlgorithm_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterFreqBlackCellList.c b/src/codec_utils/RRC/InterFreqBlackCellList.c
new file mode 100644 (file)
index 0000000..63fec11
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterFreqBlackCellList.h"
+
+#include "PCI-Range.h"
+static asn_oer_constraints_t asn_OER_type_InterFreqBlackCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_InterFreqBlackCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InterFreqBlackCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PCI_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_InterFreqBlackCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_InterFreqBlackCellList_specs_1 = {
+       sizeof(struct InterFreqBlackCellList),
+       offsetof(struct InterFreqBlackCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_InterFreqBlackCellList = {
+       "InterFreqBlackCellList",
+       "InterFreqBlackCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_InterFreqBlackCellList_tags_1,
+       sizeof(asn_DEF_InterFreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_InterFreqBlackCellList_tags_1[0]), /* 1 */
+       asn_DEF_InterFreqBlackCellList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_InterFreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_InterFreqBlackCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_InterFreqBlackCellList_constr_1, &asn_PER_type_InterFreqBlackCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_InterFreqBlackCellList_1,
+       1,      /* Single element */
+       &asn_SPC_InterFreqBlackCellList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterFreqBlackCellList.h b/src/codec_utils/RRC/InterFreqBlackCellList.h
new file mode 100644 (file)
index 0000000..c8e77a2
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterFreqBlackCellList_H_
+#define        _InterFreqBlackCellList_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 PCI_Range;
+
+/* InterFreqBlackCellList */
+typedef struct InterFreqBlackCellList {
+       A_SEQUENCE_OF(struct PCI_Range) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterFreqBlackCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterFreqBlackCellList;
+extern asn_SET_OF_specifics_t asn_SPC_InterFreqBlackCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_InterFreqBlackCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_InterFreqBlackCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterFreqBlackCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterFreqCarrierFreqInfo.c b/src/codec_utils/RRC/InterFreqCarrierFreqInfo.c
new file mode 100644 (file)
index 0000000..952a630
--- /dev/null
@@ -0,0 +1,399 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterFreqCarrierFreqInfo.h"
+
+#include "MultiFrequencyBandListNR-SIB.h"
+#include "ThresholdNR.h"
+#include "SSB-MTC.h"
+#include "SSB-ToMeasure.h"
+#include "SS-RSSI-Measurement.h"
+#include "SpeedStateScaleFactors.h"
+#include "InterFreqNeighCellList.h"
+#include "InterFreqBlackCellList.h"
+static int
+memb_nrofSS_BlocksToAverage_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 >= 2 && value <= 16)) {
+               /* 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_nrofSS_BlocksToAverage_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (2..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSS_BlocksToAverage_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  2,  16 }       /* (2..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_threshX_Q_20[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo__threshX_Q, threshX_HighQ),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-HighQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo__threshX_Q, threshX_LowQ),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-LowQ"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_threshX_Q_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_threshX_Q_tag2el_20[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* threshX-HighQ */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* threshX-LowQ */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_threshX_Q_specs_20 = {
+       sizeof(struct InterFreqCarrierFreqInfo__threshX_Q),
+       offsetof(struct InterFreqCarrierFreqInfo__threshX_Q, _asn_ctx),
+       asn_MAP_threshX_Q_tag2el_20,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_threshX_Q_20 = {
+       "threshX-Q",
+       "threshX-Q",
+       &asn_OP_SEQUENCE,
+       asn_DEF_threshX_Q_tags_20,
+       sizeof(asn_DEF_threshX_Q_tags_20)
+               /sizeof(asn_DEF_threshX_Q_tags_20[0]) - 1, /* 1 */
+       asn_DEF_threshX_Q_tags_20,      /* Same as above */
+       sizeof(asn_DEF_threshX_Q_tags_20)
+               /sizeof(asn_DEF_threshX_Q_tags_20[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_threshX_Q_20,
+       2,      /* Elements count */
+       &asn_SPC_threshX_Q_specs_20     /* Additional specs */
+};
+
+static int asn_DFL_25_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_25_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+asn_TYPE_member_t asn_MBR_InterFreqCarrierFreqInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, dl_CarrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-CarrierFreq"
+               },
+       { ATF_POINTER, 5, offsetof(struct InterFreqCarrierFreqInfo, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_POINTER, 4, offsetof(struct InterFreqCarrierFreqInfo, frequencyBandListSUL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandListSUL"
+               },
+       { ATF_POINTER, 3, offsetof(struct InterFreqCarrierFreqInfo, nrofSS_BlocksToAverage),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSS_BlocksToAverage_constr_5, &asn_PER_memb_nrofSS_BlocksToAverage_constr_5,  memb_nrofSS_BlocksToAverage_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSS-BlocksToAverage"
+               },
+       { ATF_POINTER, 2, offsetof(struct InterFreqCarrierFreqInfo, absThreshSS_BlocksConsolidation),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ThresholdNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absThreshSS-BlocksConsolidation"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, smtc),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, ssbSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbSubcarrierSpacing"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, ssb_ToMeasure),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SSB_ToMeasure,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-ToMeasure"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, deriveSSB_IndexFromCell),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deriveSSB-IndexFromCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, ss_RSSI_Measurement),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SS_RSSI_Measurement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ss-RSSI-Measurement"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, q_RxLevMin),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMin"
+               },
+       { ATF_POINTER, 3, offsetof(struct InterFreqCarrierFreqInfo, q_RxLevMinSUL),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMinSUL"
+               },
+       { ATF_POINTER, 2, offsetof(struct InterFreqCarrierFreqInfo, q_QualMin),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_QualMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-QualMin"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, p_Max),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-Max"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, t_ReselectionNR),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_Reselection,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionNR"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, t_ReselectionNR_SF),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SpeedStateScaleFactors,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionNR-SF"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, threshX_HighP),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-HighP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqCarrierFreqInfo, threshX_LowP),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-LowP"
+               },
+       { ATF_POINTER, 6, offsetof(struct InterFreqCarrierFreqInfo, threshX_Q),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               0,
+               &asn_DEF_threshX_Q_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshX-Q"
+               },
+       { ATF_POINTER, 5, offsetof(struct InterFreqCarrierFreqInfo, cellReselectionPriority),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriority"
+               },
+       { ATF_POINTER, 4, offsetof(struct InterFreqCarrierFreqInfo, cellReselectionSubPriority),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionSubPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionSubPriority"
+               },
+       { ATF_POINTER, 3, offsetof(struct InterFreqCarrierFreqInfo, q_OffsetFreq),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_25_cmp_15,     /* Compare DEFAULT 15 */
+               &asn_DFL_25_set_15,     /* Set DEFAULT 15 */
+               "q-OffsetFreq"
+               },
+       { ATF_POINTER, 2, offsetof(struct InterFreqCarrierFreqInfo, interFreqNeighCellList),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_InterFreqNeighCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interFreqNeighCellList"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqCarrierFreqInfo, interFreqBlackCellList),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_InterFreqBlackCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interFreqBlackCellList"
+               },
+};
+static const int asn_MAP_InterFreqCarrierFreqInfo_oms_1[] = { 1, 2, 3, 4, 5, 7, 9, 11, 12, 13, 15, 18, 19, 20, 21, 22, 23 };
+static const ber_tlv_tag_t asn_DEF_InterFreqCarrierFreqInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterFreqCarrierFreqInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-CarrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* frequencyBandListSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrofSS-BlocksToAverage */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* absThreshSS-BlocksConsolidation */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* smtc */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ssbSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ssb-ToMeasure */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* deriveSSB-IndexFromCell */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* ss-RSSI-Measurement */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* q-RxLevMin */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* q-RxLevMinSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* q-QualMin */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* p-Max */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* t-ReselectionNR */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* t-ReselectionNR-SF */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* threshX-HighP */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* threshX-LowP */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* threshX-Q */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* cellReselectionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* cellReselectionSubPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* q-OffsetFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* interFreqNeighCellList */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 } /* interFreqBlackCellList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterFreqCarrierFreqInfo_specs_1 = {
+       sizeof(struct InterFreqCarrierFreqInfo),
+       offsetof(struct InterFreqCarrierFreqInfo, _asn_ctx),
+       asn_MAP_InterFreqCarrierFreqInfo_tag2el_1,
+       24,     /* Count of tags in the map */
+       asn_MAP_InterFreqCarrierFreqInfo_oms_1, /* Optional members */
+       17, 0,  /* Root/Additions */
+       24,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterFreqCarrierFreqInfo = {
+       "InterFreqCarrierFreqInfo",
+       "InterFreqCarrierFreqInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_InterFreqCarrierFreqInfo_tags_1,
+       sizeof(asn_DEF_InterFreqCarrierFreqInfo_tags_1)
+               /sizeof(asn_DEF_InterFreqCarrierFreqInfo_tags_1[0]), /* 1 */
+       asn_DEF_InterFreqCarrierFreqInfo_tags_1,        /* Same as above */
+       sizeof(asn_DEF_InterFreqCarrierFreqInfo_tags_1)
+               /sizeof(asn_DEF_InterFreqCarrierFreqInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_InterFreqCarrierFreqInfo_1,
+       24,     /* Elements count */
+       &asn_SPC_InterFreqCarrierFreqInfo_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterFreqCarrierFreqInfo.h b/src/codec_utils/RRC/InterFreqCarrierFreqInfo.h
new file mode 100644 (file)
index 0000000..6ad7415
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterFreqCarrierFreqInfo_H_
+#define        _InterFreqCarrierFreqInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include <NativeInteger.h>
+#include "SubcarrierSpacing.h"
+#include <BOOLEAN.h>
+#include "Q-RxLevMin.h"
+#include "Q-QualMin.h"
+#include "P-Max.h"
+#include "T-Reselection.h"
+#include "ReselectionThreshold.h"
+#include "CellReselectionPriority.h"
+#include "CellReselectionSubPriority.h"
+#include "Q-OffsetRange.h"
+#include "ReselectionThresholdQ.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MultiFrequencyBandListNR_SIB;
+struct ThresholdNR;
+struct SSB_MTC;
+struct SSB_ToMeasure;
+struct SS_RSSI_Measurement;
+struct SpeedStateScaleFactors;
+struct InterFreqNeighCellList;
+struct InterFreqBlackCellList;
+
+/* InterFreqCarrierFreqInfo */
+typedef struct InterFreqCarrierFreqInfo {
+       ARFCN_ValueNR_t  dl_CarrierFreq;
+       struct MultiFrequencyBandListNR_SIB     *frequencyBandList;     /* OPTIONAL */
+       struct MultiFrequencyBandListNR_SIB     *frequencyBandListSUL;  /* OPTIONAL */
+       long    *nrofSS_BlocksToAverage;        /* OPTIONAL */
+       struct ThresholdNR      *absThreshSS_BlocksConsolidation;       /* OPTIONAL */
+       struct SSB_MTC  *smtc;  /* OPTIONAL */
+       SubcarrierSpacing_t      ssbSubcarrierSpacing;
+       struct SSB_ToMeasure    *ssb_ToMeasure; /* OPTIONAL */
+       BOOLEAN_t        deriveSSB_IndexFromCell;
+       struct SS_RSSI_Measurement      *ss_RSSI_Measurement;   /* OPTIONAL */
+       Q_RxLevMin_t     q_RxLevMin;
+       Q_RxLevMin_t    *q_RxLevMinSUL; /* OPTIONAL */
+       Q_QualMin_t     *q_QualMin;     /* OPTIONAL */
+       P_Max_t *p_Max; /* OPTIONAL */
+       T_Reselection_t  t_ReselectionNR;
+       struct SpeedStateScaleFactors   *t_ReselectionNR_SF;    /* OPTIONAL */
+       ReselectionThreshold_t   threshX_HighP;
+       ReselectionThreshold_t   threshX_LowP;
+       struct InterFreqCarrierFreqInfo__threshX_Q {
+               ReselectionThresholdQ_t  threshX_HighQ;
+               ReselectionThresholdQ_t  threshX_LowQ;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *threshX_Q;
+       CellReselectionPriority_t       *cellReselectionPriority;       /* OPTIONAL */
+       CellReselectionSubPriority_t    *cellReselectionSubPriority;    /* OPTIONAL */
+       Q_OffsetRange_t *q_OffsetFreq;  /* DEFAULT 15 */
+       struct InterFreqNeighCellList   *interFreqNeighCellList;        /* OPTIONAL */
+       struct InterFreqBlackCellList   *interFreqBlackCellList;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterFreqCarrierFreqInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterFreqCarrierFreqInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_InterFreqCarrierFreqInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_InterFreqCarrierFreqInfo_1[24];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterFreqCarrierFreqInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterFreqCarrierFreqList.c b/src/codec_utils/RRC/InterFreqCarrierFreqList.c
new file mode 100644 (file)
index 0000000..2ac6fbd
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterFreqCarrierFreqList.h"
+
+#include "InterFreqCarrierFreqInfo.h"
+static asn_oer_constraints_t asn_OER_type_InterFreqCarrierFreqList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_InterFreqCarrierFreqList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InterFreqCarrierFreqList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_InterFreqCarrierFreqInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_InterFreqCarrierFreqList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_InterFreqCarrierFreqList_specs_1 = {
+       sizeof(struct InterFreqCarrierFreqList),
+       offsetof(struct InterFreqCarrierFreqList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_InterFreqCarrierFreqList = {
+       "InterFreqCarrierFreqList",
+       "InterFreqCarrierFreqList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_InterFreqCarrierFreqList_tags_1,
+       sizeof(asn_DEF_InterFreqCarrierFreqList_tags_1)
+               /sizeof(asn_DEF_InterFreqCarrierFreqList_tags_1[0]), /* 1 */
+       asn_DEF_InterFreqCarrierFreqList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_InterFreqCarrierFreqList_tags_1)
+               /sizeof(asn_DEF_InterFreqCarrierFreqList_tags_1[0]), /* 1 */
+       { &asn_OER_type_InterFreqCarrierFreqList_constr_1, &asn_PER_type_InterFreqCarrierFreqList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_InterFreqCarrierFreqList_1,
+       1,      /* Single element */
+       &asn_SPC_InterFreqCarrierFreqList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterFreqCarrierFreqList.h b/src/codec_utils/RRC/InterFreqCarrierFreqList.h
new file mode 100644 (file)
index 0000000..8a747bb
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterFreqCarrierFreqList_H_
+#define        _InterFreqCarrierFreqList_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 InterFreqCarrierFreqInfo;
+
+/* InterFreqCarrierFreqList */
+typedef struct InterFreqCarrierFreqList {
+       A_SEQUENCE_OF(struct InterFreqCarrierFreqInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterFreqCarrierFreqList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterFreqCarrierFreqList;
+extern asn_SET_OF_specifics_t asn_SPC_InterFreqCarrierFreqList_specs_1;
+extern asn_TYPE_member_t asn_MBR_InterFreqCarrierFreqList_1[1];
+extern asn_per_constraints_t asn_PER_type_InterFreqCarrierFreqList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterFreqCarrierFreqList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterFreqNeighCellInfo.c b/src/codec_utils/RRC/InterFreqNeighCellInfo.c
new file mode 100644 (file)
index 0000000..cfdf4c7
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterFreqNeighCellInfo.h"
+
+static int
+memb_q_RxLevMinOffsetCell_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 <= 8)) {
+               /* 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_q_RxLevMinOffsetCellSUL_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 <= 8)) {
+               /* 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_q_QualMinOffsetCell_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 <= 8)) {
+               /* 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_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_RxLevMinOffsetCellSUL_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffsetCellSUL_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_QualMinOffsetCell_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_QualMinOffsetCell_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InterFreqNeighCellInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqNeighCellInfo, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct InterFreqNeighCellInfo, q_OffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-OffsetCell"
+               },
+       { ATF_POINTER, 3, offsetof(struct InterFreqNeighCellInfo, q_RxLevMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffsetCell_constr_4, &asn_PER_memb_q_RxLevMinOffsetCell_constr_4,  memb_q_RxLevMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffsetCell"
+               },
+       { ATF_POINTER, 2, offsetof(struct InterFreqNeighCellInfo, q_RxLevMinOffsetCellSUL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffsetCellSUL_constr_5, &asn_PER_memb_q_RxLevMinOffsetCellSUL_constr_5,  memb_q_RxLevMinOffsetCellSUL_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffsetCellSUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct InterFreqNeighCellInfo, q_QualMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_QualMinOffsetCell_constr_6, &asn_PER_memb_q_QualMinOffsetCell_constr_6,  memb_q_QualMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-QualMinOffsetCell"
+               },
+};
+static const int asn_MAP_InterFreqNeighCellInfo_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_InterFreqNeighCellInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterFreqNeighCellInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-OffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-RxLevMinOffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* q-RxLevMinOffsetCellSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* q-QualMinOffsetCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_InterFreqNeighCellInfo_specs_1 = {
+       sizeof(struct InterFreqNeighCellInfo),
+       offsetof(struct InterFreqNeighCellInfo, _asn_ctx),
+       asn_MAP_InterFreqNeighCellInfo_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_InterFreqNeighCellInfo_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterFreqNeighCellInfo = {
+       "InterFreqNeighCellInfo",
+       "InterFreqNeighCellInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_InterFreqNeighCellInfo_tags_1,
+       sizeof(asn_DEF_InterFreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_InterFreqNeighCellInfo_tags_1[0]), /* 1 */
+       asn_DEF_InterFreqNeighCellInfo_tags_1,  /* Same as above */
+       sizeof(asn_DEF_InterFreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_InterFreqNeighCellInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_InterFreqNeighCellInfo_1,
+       5,      /* Elements count */
+       &asn_SPC_InterFreqNeighCellInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterFreqNeighCellInfo.h b/src/codec_utils/RRC/InterFreqNeighCellInfo.h
new file mode 100644 (file)
index 0000000..23aa3f5
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterFreqNeighCellInfo_H_
+#define        _InterFreqNeighCellInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "Q-OffsetRange.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* InterFreqNeighCellInfo */
+typedef struct InterFreqNeighCellInfo {
+       PhysCellId_t     physCellId;
+       Q_OffsetRange_t  q_OffsetCell;
+       long    *q_RxLevMinOffsetCell;  /* OPTIONAL */
+       long    *q_RxLevMinOffsetCellSUL;       /* OPTIONAL */
+       long    *q_QualMinOffsetCell;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterFreqNeighCellInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterFreqNeighCellInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_InterFreqNeighCellInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_InterFreqNeighCellInfo_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterFreqNeighCellInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterFreqNeighCellList.c b/src/codec_utils/RRC/InterFreqNeighCellList.c
new file mode 100644 (file)
index 0000000..8b1e169
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterFreqNeighCellList.h"
+
+#include "InterFreqNeighCellInfo.h"
+static asn_oer_constraints_t asn_OER_type_InterFreqNeighCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_InterFreqNeighCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_InterFreqNeighCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_InterFreqNeighCellInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_InterFreqNeighCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_InterFreqNeighCellList_specs_1 = {
+       sizeof(struct InterFreqNeighCellList),
+       offsetof(struct InterFreqNeighCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_InterFreqNeighCellList = {
+       "InterFreqNeighCellList",
+       "InterFreqNeighCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_InterFreqNeighCellList_tags_1,
+       sizeof(asn_DEF_InterFreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_InterFreqNeighCellList_tags_1[0]), /* 1 */
+       asn_DEF_InterFreqNeighCellList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_InterFreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_InterFreqNeighCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_InterFreqNeighCellList_constr_1, &asn_PER_type_InterFreqNeighCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_InterFreqNeighCellList_1,
+       1,      /* Single element */
+       &asn_SPC_InterFreqNeighCellList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterFreqNeighCellList.h b/src/codec_utils/RRC/InterFreqNeighCellList.h
new file mode 100644 (file)
index 0000000..a23e67c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterFreqNeighCellList_H_
+#define        _InterFreqNeighCellList_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 InterFreqNeighCellInfo;
+
+/* InterFreqNeighCellList */
+typedef struct InterFreqNeighCellList {
+       A_SEQUENCE_OF(struct InterFreqNeighCellInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterFreqNeighCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterFreqNeighCellList;
+extern asn_SET_OF_specifics_t asn_SPC_InterFreqNeighCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_InterFreqNeighCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_InterFreqNeighCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterFreqNeighCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/InterRAT-Parameters.c b/src/codec_utils/RRC/InterRAT-Parameters.c
new file mode 100644 (file)
index 0000000..097f4e5
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "InterRAT-Parameters.h"
+
+#include "EUTRA-Parameters.h"
+static asn_TYPE_member_t asn_MBR_InterRAT_Parameters_1[] = {
+       { ATF_POINTER, 1, offsetof(struct InterRAT_Parameters, eutra),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra"
+               },
+};
+static const int asn_MAP_InterRAT_Parameters_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_InterRAT_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_InterRAT_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eutra */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_InterRAT_Parameters_specs_1 = {
+       sizeof(struct InterRAT_Parameters),
+       offsetof(struct InterRAT_Parameters, _asn_ctx),
+       asn_MAP_InterRAT_Parameters_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_InterRAT_Parameters_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_InterRAT_Parameters = {
+       "InterRAT-Parameters",
+       "InterRAT-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_InterRAT_Parameters_tags_1,
+       sizeof(asn_DEF_InterRAT_Parameters_tags_1)
+               /sizeof(asn_DEF_InterRAT_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_InterRAT_Parameters_tags_1,     /* Same as above */
+       sizeof(asn_DEF_InterRAT_Parameters_tags_1)
+               /sizeof(asn_DEF_InterRAT_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_InterRAT_Parameters_1,
+       1,      /* Elements count */
+       &asn_SPC_InterRAT_Parameters_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/InterRAT-Parameters.h b/src/codec_utils/RRC/InterRAT-Parameters.h
new file mode 100644 (file)
index 0000000..3fd4d24
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _InterRAT_Parameters_H_
+#define        _InterRAT_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct EUTRA_Parameters;
+
+/* InterRAT-Parameters */
+typedef struct InterRAT_Parameters {
+       struct EUTRA_Parameters *eutra; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} InterRAT_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_InterRAT_Parameters;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _InterRAT_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/IntraFreqBlackCellList.c b/src/codec_utils/RRC/IntraFreqBlackCellList.c
new file mode 100644 (file)
index 0000000..165b7b0
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "IntraFreqBlackCellList.h"
+
+#include "PCI-Range.h"
+static asn_oer_constraints_t asn_OER_type_IntraFreqBlackCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_IntraFreqBlackCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_IntraFreqBlackCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PCI_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_IntraFreqBlackCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_IntraFreqBlackCellList_specs_1 = {
+       sizeof(struct IntraFreqBlackCellList),
+       offsetof(struct IntraFreqBlackCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_IntraFreqBlackCellList = {
+       "IntraFreqBlackCellList",
+       "IntraFreqBlackCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_IntraFreqBlackCellList_tags_1,
+       sizeof(asn_DEF_IntraFreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_IntraFreqBlackCellList_tags_1[0]), /* 1 */
+       asn_DEF_IntraFreqBlackCellList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_IntraFreqBlackCellList_tags_1)
+               /sizeof(asn_DEF_IntraFreqBlackCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_IntraFreqBlackCellList_constr_1, &asn_PER_type_IntraFreqBlackCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_IntraFreqBlackCellList_1,
+       1,      /* Single element */
+       &asn_SPC_IntraFreqBlackCellList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/IntraFreqBlackCellList.h b/src/codec_utils/RRC/IntraFreqBlackCellList.h
new file mode 100644 (file)
index 0000000..e482b3f
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _IntraFreqBlackCellList_H_
+#define        _IntraFreqBlackCellList_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 PCI_Range;
+
+/* IntraFreqBlackCellList */
+typedef struct IntraFreqBlackCellList {
+       A_SEQUENCE_OF(struct PCI_Range) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} IntraFreqBlackCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IntraFreqBlackCellList;
+extern asn_SET_OF_specifics_t asn_SPC_IntraFreqBlackCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_IntraFreqBlackCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_IntraFreqBlackCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IntraFreqBlackCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/IntraFreqNeighCellInfo.c b/src/codec_utils/RRC/IntraFreqNeighCellInfo.c
new file mode 100644 (file)
index 0000000..555c60f
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "IntraFreqNeighCellInfo.h"
+
+static int
+memb_q_RxLevMinOffsetCell_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 <= 8)) {
+               /* 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_q_RxLevMinOffsetCellSUL_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 <= 8)) {
+               /* 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_q_QualMinOffsetCell_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 <= 8)) {
+               /* 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_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffsetCell_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_RxLevMinOffsetCellSUL_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffsetCellSUL_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_QualMinOffsetCell_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_QualMinOffsetCell_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_IntraFreqNeighCellInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct IntraFreqNeighCellInfo, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct IntraFreqNeighCellInfo, q_OffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-OffsetCell"
+               },
+       { ATF_POINTER, 3, offsetof(struct IntraFreqNeighCellInfo, q_RxLevMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffsetCell_constr_4, &asn_PER_memb_q_RxLevMinOffsetCell_constr_4,  memb_q_RxLevMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffsetCell"
+               },
+       { ATF_POINTER, 2, offsetof(struct IntraFreqNeighCellInfo, q_RxLevMinOffsetCellSUL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffsetCellSUL_constr_5, &asn_PER_memb_q_RxLevMinOffsetCellSUL_constr_5,  memb_q_RxLevMinOffsetCellSUL_constraint_1 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffsetCellSUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct IntraFreqNeighCellInfo, q_QualMinOffsetCell),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_QualMinOffsetCell_constr_6, &asn_PER_memb_q_QualMinOffsetCell_constr_6,  memb_q_QualMinOffsetCell_constraint_1 },
+               0, 0, /* No default value */
+               "q-QualMinOffsetCell"
+               },
+};
+static const int asn_MAP_IntraFreqNeighCellInfo_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_IntraFreqNeighCellInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_IntraFreqNeighCellInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-OffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-RxLevMinOffsetCell */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* q-RxLevMinOffsetCellSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* q-QualMinOffsetCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_IntraFreqNeighCellInfo_specs_1 = {
+       sizeof(struct IntraFreqNeighCellInfo),
+       offsetof(struct IntraFreqNeighCellInfo, _asn_ctx),
+       asn_MAP_IntraFreqNeighCellInfo_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_IntraFreqNeighCellInfo_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_IntraFreqNeighCellInfo = {
+       "IntraFreqNeighCellInfo",
+       "IntraFreqNeighCellInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_IntraFreqNeighCellInfo_tags_1,
+       sizeof(asn_DEF_IntraFreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_IntraFreqNeighCellInfo_tags_1[0]), /* 1 */
+       asn_DEF_IntraFreqNeighCellInfo_tags_1,  /* Same as above */
+       sizeof(asn_DEF_IntraFreqNeighCellInfo_tags_1)
+               /sizeof(asn_DEF_IntraFreqNeighCellInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_IntraFreqNeighCellInfo_1,
+       5,      /* Elements count */
+       &asn_SPC_IntraFreqNeighCellInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/IntraFreqNeighCellInfo.h b/src/codec_utils/RRC/IntraFreqNeighCellInfo.h
new file mode 100644 (file)
index 0000000..2ef026d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _IntraFreqNeighCellInfo_H_
+#define        _IntraFreqNeighCellInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "Q-OffsetRange.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IntraFreqNeighCellInfo */
+typedef struct IntraFreqNeighCellInfo {
+       PhysCellId_t     physCellId;
+       Q_OffsetRange_t  q_OffsetCell;
+       long    *q_RxLevMinOffsetCell;  /* OPTIONAL */
+       long    *q_RxLevMinOffsetCellSUL;       /* OPTIONAL */
+       long    *q_QualMinOffsetCell;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} IntraFreqNeighCellInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IntraFreqNeighCellInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_IntraFreqNeighCellInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_IntraFreqNeighCellInfo_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IntraFreqNeighCellInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/IntraFreqNeighCellList.c b/src/codec_utils/RRC/IntraFreqNeighCellList.c
new file mode 100644 (file)
index 0000000..9c4419f
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "IntraFreqNeighCellList.h"
+
+#include "IntraFreqNeighCellInfo.h"
+static asn_oer_constraints_t asn_OER_type_IntraFreqNeighCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_IntraFreqNeighCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_IntraFreqNeighCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_IntraFreqNeighCellInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_IntraFreqNeighCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_IntraFreqNeighCellList_specs_1 = {
+       sizeof(struct IntraFreqNeighCellList),
+       offsetof(struct IntraFreqNeighCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_IntraFreqNeighCellList = {
+       "IntraFreqNeighCellList",
+       "IntraFreqNeighCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_IntraFreqNeighCellList_tags_1,
+       sizeof(asn_DEF_IntraFreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_IntraFreqNeighCellList_tags_1[0]), /* 1 */
+       asn_DEF_IntraFreqNeighCellList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_IntraFreqNeighCellList_tags_1)
+               /sizeof(asn_DEF_IntraFreqNeighCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_IntraFreqNeighCellList_constr_1, &asn_PER_type_IntraFreqNeighCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_IntraFreqNeighCellList_1,
+       1,      /* Single element */
+       &asn_SPC_IntraFreqNeighCellList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/IntraFreqNeighCellList.h b/src/codec_utils/RRC/IntraFreqNeighCellList.h
new file mode 100644 (file)
index 0000000..823dec8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _IntraFreqNeighCellList_H_
+#define        _IntraFreqNeighCellList_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 IntraFreqNeighCellInfo;
+
+/* IntraFreqNeighCellList */
+typedef struct IntraFreqNeighCellList {
+       A_SEQUENCE_OF(struct IntraFreqNeighCellInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} IntraFreqNeighCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IntraFreqNeighCellList;
+extern asn_SET_OF_specifics_t asn_SPC_IntraFreqNeighCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_IntraFreqNeighCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_IntraFreqNeighCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _IntraFreqNeighCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/LocationMeasurementIndication-IEs.c b/src/codec_utils/RRC/LocationMeasurementIndication-IEs.c
new file mode 100644 (file)
index 0000000..d431bac
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LocationMeasurementIndication-IEs.h"
+
+#include "LocationMeasurementInfo.h"
+static asn_oer_constraints_t asn_OER_type_measurementIndication_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_measurementIndication_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_measurementIndication_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct LocationMeasurementIndication_IEs__measurementIndication, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct LocationMeasurementIndication_IEs__measurementIndication, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_LocationMeasurementInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_measurementIndication_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_measurementIndication_specs_2 = {
+       sizeof(struct LocationMeasurementIndication_IEs__measurementIndication),
+       offsetof(struct LocationMeasurementIndication_IEs__measurementIndication, _asn_ctx),
+       offsetof(struct LocationMeasurementIndication_IEs__measurementIndication, present),
+       sizeof(((struct LocationMeasurementIndication_IEs__measurementIndication *)0)->present),
+       asn_MAP_measurementIndication_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measurementIndication_2 = {
+       "measurementIndication",
+       "measurementIndication",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_measurementIndication_constr_2, &asn_PER_type_measurementIndication_constr_2, CHOICE_constraint },
+       asn_MBR_measurementIndication_2,
+       2,      /* Elements count */
+       &asn_SPC_measurementIndication_specs_2  /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_6 = {
+       sizeof(struct LocationMeasurementIndication_IEs__nonCriticalExtension),
+       offsetof(struct LocationMeasurementIndication_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_6 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_6,
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_6,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_LocationMeasurementIndication_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct LocationMeasurementIndication_IEs, measurementIndication),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_measurementIndication_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measurementIndication"
+               },
+       { ATF_POINTER, 2, offsetof(struct LocationMeasurementIndication_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct LocationMeasurementIndication_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_LocationMeasurementIndication_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_LocationMeasurementIndication_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LocationMeasurementIndication_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementIndication */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_LocationMeasurementIndication_IEs_specs_1 = {
+       sizeof(struct LocationMeasurementIndication_IEs),
+       offsetof(struct LocationMeasurementIndication_IEs, _asn_ctx),
+       asn_MAP_LocationMeasurementIndication_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_LocationMeasurementIndication_IEs_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_LocationMeasurementIndication_IEs = {
+       "LocationMeasurementIndication-IEs",
+       "LocationMeasurementIndication-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_LocationMeasurementIndication_IEs_tags_1,
+       sizeof(asn_DEF_LocationMeasurementIndication_IEs_tags_1)
+               /sizeof(asn_DEF_LocationMeasurementIndication_IEs_tags_1[0]), /* 1 */
+       asn_DEF_LocationMeasurementIndication_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_LocationMeasurementIndication_IEs_tags_1)
+               /sizeof(asn_DEF_LocationMeasurementIndication_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_LocationMeasurementIndication_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_LocationMeasurementIndication_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/LocationMeasurementIndication-IEs.h b/src/codec_utils/RRC/LocationMeasurementIndication-IEs.h
new file mode 100644 (file)
index 0000000..e45751c
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LocationMeasurementIndication_IEs_H_
+#define        _LocationMeasurementIndication_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LocationMeasurementIndication_IEs__measurementIndication_PR {
+       LocationMeasurementIndication_IEs__measurementIndication_PR_NOTHING,    /* No components present */
+       LocationMeasurementIndication_IEs__measurementIndication_PR_release,
+       LocationMeasurementIndication_IEs__measurementIndication_PR_setup
+} LocationMeasurementIndication_IEs__measurementIndication_PR;
+
+/* Forward declarations */
+struct LocationMeasurementInfo;
+
+/* LocationMeasurementIndication-IEs */
+typedef struct LocationMeasurementIndication_IEs {
+       struct LocationMeasurementIndication_IEs__measurementIndication {
+               LocationMeasurementIndication_IEs__measurementIndication_PR present;
+               union LocationMeasurementIndication_IEs__measurementIndication_u {
+                       NULL_t   release;
+                       struct LocationMeasurementInfo  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } measurementIndication;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct LocationMeasurementIndication_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LocationMeasurementIndication_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LocationMeasurementIndication_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_LocationMeasurementIndication_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_LocationMeasurementIndication_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LocationMeasurementIndication_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/LocationMeasurementIndication.c b/src/codec_utils/RRC/LocationMeasurementIndication.c
new file mode 100644 (file)
index 0000000..042264d
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LocationMeasurementIndication.h"
+
+#include "LocationMeasurementIndication-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct LocationMeasurementIndication__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct LocationMeasurementIndication__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct LocationMeasurementIndication__criticalExtensions, choice.locationMeasurementIndication),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LocationMeasurementIndication_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "locationMeasurementIndication"
+               },
+       { ATF_POINTER, 0, offsetof(struct LocationMeasurementIndication__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* locationMeasurementIndication */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct LocationMeasurementIndication__criticalExtensions),
+       offsetof(struct LocationMeasurementIndication__criticalExtensions, _asn_ctx),
+       offsetof(struct LocationMeasurementIndication__criticalExtensions, present),
+       sizeof(((struct LocationMeasurementIndication__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_LocationMeasurementIndication_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct LocationMeasurementIndication, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_LocationMeasurementIndication_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LocationMeasurementIndication_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_LocationMeasurementIndication_specs_1 = {
+       sizeof(struct LocationMeasurementIndication),
+       offsetof(struct LocationMeasurementIndication, _asn_ctx),
+       asn_MAP_LocationMeasurementIndication_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_LocationMeasurementIndication = {
+       "LocationMeasurementIndication",
+       "LocationMeasurementIndication",
+       &asn_OP_SEQUENCE,
+       asn_DEF_LocationMeasurementIndication_tags_1,
+       sizeof(asn_DEF_LocationMeasurementIndication_tags_1)
+               /sizeof(asn_DEF_LocationMeasurementIndication_tags_1[0]), /* 1 */
+       asn_DEF_LocationMeasurementIndication_tags_1,   /* Same as above */
+       sizeof(asn_DEF_LocationMeasurementIndication_tags_1)
+               /sizeof(asn_DEF_LocationMeasurementIndication_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_LocationMeasurementIndication_1,
+       1,      /* Elements count */
+       &asn_SPC_LocationMeasurementIndication_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/LocationMeasurementIndication.h b/src/codec_utils/RRC/LocationMeasurementIndication.h
new file mode 100644 (file)
index 0000000..245368e
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LocationMeasurementIndication_H_
+#define        _LocationMeasurementIndication_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LocationMeasurementIndication__criticalExtensions_PR {
+       LocationMeasurementIndication__criticalExtensions_PR_NOTHING,   /* No components present */
+       LocationMeasurementIndication__criticalExtensions_PR_locationMeasurementIndication,
+       LocationMeasurementIndication__criticalExtensions_PR_criticalExtensionsFuture
+} LocationMeasurementIndication__criticalExtensions_PR;
+
+/* Forward declarations */
+struct LocationMeasurementIndication_IEs;
+
+/* LocationMeasurementIndication */
+typedef struct LocationMeasurementIndication {
+       struct LocationMeasurementIndication__criticalExtensions {
+               LocationMeasurementIndication__criticalExtensions_PR present;
+               union LocationMeasurementIndication__criticalExtensions_u {
+                       struct LocationMeasurementIndication_IEs        *locationMeasurementIndication;
+                       struct LocationMeasurementIndication__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LocationMeasurementIndication_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LocationMeasurementIndication;
+extern asn_SEQUENCE_specifics_t asn_SPC_LocationMeasurementIndication_specs_1;
+extern asn_TYPE_member_t asn_MBR_LocationMeasurementIndication_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LocationMeasurementIndication_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/LocationMeasurementInfo.c b/src/codec_utils/RRC/LocationMeasurementInfo.c
new file mode 100644 (file)
index 0000000..8f6cc45
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LocationMeasurementInfo.h"
+
+#include "EUTRA-RSTD-InfoList.h"
+static asn_oer_constraints_t asn_OER_type_LocationMeasurementInfo_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_LocationMeasurementInfo_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_LocationMeasurementInfo_1[] = {
+       { ATF_POINTER, 0, offsetof(struct LocationMeasurementInfo, choice.eutra_RSTD),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_RSTD_InfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-RSTD"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct LocationMeasurementInfo, choice.eutra_FineTimingDetection),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-FineTimingDetection"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_LocationMeasurementInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra-RSTD */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eutra-FineTimingDetection */
+};
+asn_CHOICE_specifics_t asn_SPC_LocationMeasurementInfo_specs_1 = {
+       sizeof(struct LocationMeasurementInfo),
+       offsetof(struct LocationMeasurementInfo, _asn_ctx),
+       offsetof(struct LocationMeasurementInfo, present),
+       sizeof(((struct LocationMeasurementInfo *)0)->present),
+       asn_MAP_LocationMeasurementInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_LocationMeasurementInfo = {
+       "LocationMeasurementInfo",
+       "LocationMeasurementInfo",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_LocationMeasurementInfo_constr_1, &asn_PER_type_LocationMeasurementInfo_constr_1, CHOICE_constraint },
+       asn_MBR_LocationMeasurementInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_LocationMeasurementInfo_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/LocationMeasurementInfo.h b/src/codec_utils/RRC/LocationMeasurementInfo.h
new file mode 100644 (file)
index 0000000..ee1e5ba
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LocationMeasurementInfo_H_
+#define        _LocationMeasurementInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LocationMeasurementInfo_PR {
+       LocationMeasurementInfo_PR_NOTHING,     /* No components present */
+       LocationMeasurementInfo_PR_eutra_RSTD,
+       /* Extensions may appear below */
+       LocationMeasurementInfo_PR_eutra_FineTimingDetection
+} LocationMeasurementInfo_PR;
+
+/* Forward declarations */
+struct EUTRA_RSTD_InfoList;
+
+/* LocationMeasurementInfo */
+typedef struct LocationMeasurementInfo {
+       LocationMeasurementInfo_PR present;
+       union LocationMeasurementInfo_u {
+               struct EUTRA_RSTD_InfoList      *eutra_RSTD;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               NULL_t   eutra_FineTimingDetection;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LocationMeasurementInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_LocationMeasurementInfo;
+extern asn_CHOICE_specifics_t asn_SPC_LocationMeasurementInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_LocationMeasurementInfo_1[2];
+extern asn_per_constraints_t asn_PER_type_LocationMeasurementInfo_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LocationMeasurementInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/LogicalChannelConfig.c b/src/codec_utils/RRC/LogicalChannelConfig.c
new file mode 100644 (file)
index 0000000..bc69149
--- /dev/null
@@ -0,0 +1,754 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LogicalChannelConfig.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.
+ */
+static int
+memb_priority_constraint_2(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 <= 16)) {
+               /* 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_allowedServingCells_constraint_2(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 <= 31)) {
+               /* 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_allowedSCS_List_constraint_2(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 <= 5)) {
+               /* 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_logicalChannelGroup_constraint_2(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 <= 7)) {
+               /* 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_prioritisedBitRate_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_prioritisedBitRate_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_bucketSizeDuration_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bucketSizeDuration_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_allowedServingCells_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_type_allowedServingCells_constr_38 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_allowedSCS_List_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_allowedSCS_List_constr_40 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxPUSCH_Duration_constr_42 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxPUSCH_Duration_constr_42 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_configuredGrantType1Allowed_constr_51 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_configuredGrantType1Allowed_constr_51 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bitRateQueryProhibitTimer_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bitRateQueryProhibitTimer_constr_58 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_priority_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_priority_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_allowedServingCells_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..31)) */};
+static asn_per_constraints_t asn_PER_memb_allowedServingCells_constr_38 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (SIZE(1..31)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_allowedSCS_List_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_allowedSCS_List_constr_40 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_logicalChannelGroup_constr_53 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_logicalChannelGroup_constr_53 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_prioritisedBitRate_value2enum_4[] = {
+       { 0,    5,      "kBps0" },
+       { 1,    5,      "kBps8" },
+       { 2,    6,      "kBps16" },
+       { 3,    6,      "kBps32" },
+       { 4,    6,      "kBps64" },
+       { 5,    7,      "kBps128" },
+       { 6,    7,      "kBps256" },
+       { 7,    7,      "kBps512" },
+       { 8,    8,      "kBps1024" },
+       { 9,    8,      "kBps2048" },
+       { 10,   8,      "kBps4096" },
+       { 11,   8,      "kBps8192" },
+       { 12,   9,      "kBps16384" },
+       { 13,   9,      "kBps32768" },
+       { 14,   9,      "kBps65536" },
+       { 15,   8,      "infinity" }
+};
+static const unsigned int asn_MAP_prioritisedBitRate_enum2value_4[] = {
+       15,     /* infinity(15) */
+       0,      /* kBps0(0) */
+       8,      /* kBps1024(8) */
+       5,      /* kBps128(5) */
+       2,      /* kBps16(2) */
+       12,     /* kBps16384(12) */
+       9,      /* kBps2048(9) */
+       6,      /* kBps256(6) */
+       3,      /* kBps32(3) */
+       13,     /* kBps32768(13) */
+       10,     /* kBps4096(10) */
+       7,      /* kBps512(7) */
+       4,      /* kBps64(4) */
+       14,     /* kBps65536(14) */
+       1,      /* kBps8(1) */
+       11      /* kBps8192(11) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_prioritisedBitRate_specs_4 = {
+       asn_MAP_prioritisedBitRate_value2enum_4,        /* "tag" => N; sorted by tag */
+       asn_MAP_prioritisedBitRate_enum2value_4,        /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_prioritisedBitRate_tags_4[] = {
+       (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_prioritisedBitRate_4 = {
+       "prioritisedBitRate",
+       "prioritisedBitRate",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_prioritisedBitRate_tags_4,
+       sizeof(asn_DEF_prioritisedBitRate_tags_4)
+               /sizeof(asn_DEF_prioritisedBitRate_tags_4[0]) - 1, /* 1 */
+       asn_DEF_prioritisedBitRate_tags_4,      /* Same as above */
+       sizeof(asn_DEF_prioritisedBitRate_tags_4)
+               /sizeof(asn_DEF_prioritisedBitRate_tags_4[0]), /* 2 */
+       { &asn_OER_type_prioritisedBitRate_constr_4, &asn_PER_type_prioritisedBitRate_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_prioritisedBitRate_specs_4     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bucketSizeDuration_value2enum_21[] = {
+       { 0,    3,      "ms5" },
+       { 1,    4,      "ms10" },
+       { 2,    4,      "ms20" },
+       { 3,    4,      "ms50" },
+       { 4,    5,      "ms100" },
+       { 5,    5,      "ms150" },
+       { 6,    5,      "ms300" },
+       { 7,    5,      "ms500" },
+       { 8,    6,      "ms1000" },
+       { 9,    6,      "spare7" },
+       { 10,   6,      "spare6" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_bucketSizeDuration_enum2value_21[] = {
+       1,      /* ms10(1) */
+       4,      /* ms100(4) */
+       8,      /* ms1000(8) */
+       5,      /* ms150(5) */
+       2,      /* ms20(2) */
+       6,      /* ms300(6) */
+       0,      /* ms5(0) */
+       3,      /* ms50(3) */
+       7,      /* ms500(7) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11,     /* spare5(11) */
+       10,     /* spare6(10) */
+       9       /* spare7(9) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bucketSizeDuration_specs_21 = {
+       asn_MAP_bucketSizeDuration_value2enum_21,       /* "tag" => N; sorted by tag */
+       asn_MAP_bucketSizeDuration_enum2value_21,       /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bucketSizeDuration_tags_21[] = {
+       (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_bucketSizeDuration_21 = {
+       "bucketSizeDuration",
+       "bucketSizeDuration",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bucketSizeDuration_tags_21,
+       sizeof(asn_DEF_bucketSizeDuration_tags_21)
+               /sizeof(asn_DEF_bucketSizeDuration_tags_21[0]) - 1, /* 1 */
+       asn_DEF_bucketSizeDuration_tags_21,     /* Same as above */
+       sizeof(asn_DEF_bucketSizeDuration_tags_21)
+               /sizeof(asn_DEF_bucketSizeDuration_tags_21[0]), /* 2 */
+       { &asn_OER_type_bucketSizeDuration_constr_21, &asn_PER_type_bucketSizeDuration_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bucketSizeDuration_specs_21    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_allowedServingCells_38[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_allowedServingCells_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_allowedServingCells_specs_38 = {
+       sizeof(struct LogicalChannelConfig__ul_SpecificParameters__allowedServingCells),
+       offsetof(struct LogicalChannelConfig__ul_SpecificParameters__allowedServingCells, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_allowedServingCells_38 = {
+       "allowedServingCells",
+       "allowedServingCells",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_allowedServingCells_tags_38,
+       sizeof(asn_DEF_allowedServingCells_tags_38)
+               /sizeof(asn_DEF_allowedServingCells_tags_38[0]) - 1, /* 1 */
+       asn_DEF_allowedServingCells_tags_38,    /* Same as above */
+       sizeof(asn_DEF_allowedServingCells_tags_38)
+               /sizeof(asn_DEF_allowedServingCells_tags_38[0]), /* 2 */
+       { &asn_OER_type_allowedServingCells_constr_38, &asn_PER_type_allowedServingCells_constr_38, SEQUENCE_OF_constraint },
+       asn_MBR_allowedServingCells_38,
+       1,      /* Single element */
+       &asn_SPC_allowedServingCells_specs_38   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_allowedSCS_List_40[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
+               0,
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_allowedSCS_List_tags_40[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_allowedSCS_List_specs_40 = {
+       sizeof(struct LogicalChannelConfig__ul_SpecificParameters__allowedSCS_List),
+       offsetof(struct LogicalChannelConfig__ul_SpecificParameters__allowedSCS_List, _asn_ctx),
+       1,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_allowedSCS_List_40 = {
+       "allowedSCS-List",
+       "allowedSCS-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_allowedSCS_List_tags_40,
+       sizeof(asn_DEF_allowedSCS_List_tags_40)
+               /sizeof(asn_DEF_allowedSCS_List_tags_40[0]) - 1, /* 1 */
+       asn_DEF_allowedSCS_List_tags_40,        /* Same as above */
+       sizeof(asn_DEF_allowedSCS_List_tags_40)
+               /sizeof(asn_DEF_allowedSCS_List_tags_40[0]), /* 2 */
+       { &asn_OER_type_allowedSCS_List_constr_40, &asn_PER_type_allowedSCS_List_constr_40, SEQUENCE_OF_constraint },
+       asn_MBR_allowedSCS_List_40,
+       1,      /* Single element */
+       &asn_SPC_allowedSCS_List_specs_40       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxPUSCH_Duration_value2enum_42[] = {
+       { 0,    6,      "ms0p02" },
+       { 1,    6,      "ms0p04" },
+       { 2,    8,      "ms0p0625" },
+       { 3,    7,      "ms0p125" },
+       { 4,    6,      "ms0p25" },
+       { 5,    5,      "ms0p5" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_maxPUSCH_Duration_enum2value_42[] = {
+       0,      /* ms0p02(0) */
+       1,      /* ms0p04(1) */
+       2,      /* ms0p0625(2) */
+       3,      /* ms0p125(3) */
+       4,      /* ms0p25(4) */
+       5,      /* ms0p5(5) */
+       7,      /* spare1(7) */
+       6       /* spare2(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxPUSCH_Duration_specs_42 = {
+       asn_MAP_maxPUSCH_Duration_value2enum_42,        /* "tag" => N; sorted by tag */
+       asn_MAP_maxPUSCH_Duration_enum2value_42,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxPUSCH_Duration_tags_42[] = {
+       (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_maxPUSCH_Duration_42 = {
+       "maxPUSCH-Duration",
+       "maxPUSCH-Duration",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxPUSCH_Duration_tags_42,
+       sizeof(asn_DEF_maxPUSCH_Duration_tags_42)
+               /sizeof(asn_DEF_maxPUSCH_Duration_tags_42[0]) - 1, /* 1 */
+       asn_DEF_maxPUSCH_Duration_tags_42,      /* Same as above */
+       sizeof(asn_DEF_maxPUSCH_Duration_tags_42)
+               /sizeof(asn_DEF_maxPUSCH_Duration_tags_42[0]), /* 2 */
+       { &asn_OER_type_maxPUSCH_Duration_constr_42, &asn_PER_type_maxPUSCH_Duration_constr_42, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxPUSCH_Duration_specs_42     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_configuredGrantType1Allowed_value2enum_51[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_configuredGrantType1Allowed_enum2value_51[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_configuredGrantType1Allowed_specs_51 = {
+       asn_MAP_configuredGrantType1Allowed_value2enum_51,      /* "tag" => N; sorted by tag */
+       asn_MAP_configuredGrantType1Allowed_enum2value_51,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_configuredGrantType1Allowed_tags_51[] = {
+       (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_configuredGrantType1Allowed_51 = {
+       "configuredGrantType1Allowed",
+       "configuredGrantType1Allowed",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_configuredGrantType1Allowed_tags_51,
+       sizeof(asn_DEF_configuredGrantType1Allowed_tags_51)
+               /sizeof(asn_DEF_configuredGrantType1Allowed_tags_51[0]) - 1, /* 1 */
+       asn_DEF_configuredGrantType1Allowed_tags_51,    /* Same as above */
+       sizeof(asn_DEF_configuredGrantType1Allowed_tags_51)
+               /sizeof(asn_DEF_configuredGrantType1Allowed_tags_51[0]), /* 2 */
+       { &asn_OER_type_configuredGrantType1Allowed_constr_51, &asn_PER_type_configuredGrantType1Allowed_constr_51, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_configuredGrantType1Allowed_specs_51   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bitRateQueryProhibitTimer_value2enum_58[] = {
+       { 0,    2,      "s0" },
+       { 1,    6,      "s0dot4" },
+       { 2,    6,      "s0dot8" },
+       { 3,    6,      "s1dot6" },
+       { 4,    2,      "s3" },
+       { 5,    2,      "s6" },
+       { 6,    3,      "s12" },
+       { 7,    3,      "s30" }
+};
+static const unsigned int asn_MAP_bitRateQueryProhibitTimer_enum2value_58[] = {
+       0,      /* s0(0) */
+       1,      /* s0dot4(1) */
+       2,      /* s0dot8(2) */
+       6,      /* s12(6) */
+       3,      /* s1dot6(3) */
+       4,      /* s3(4) */
+       7,      /* s30(7) */
+       5       /* s6(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bitRateQueryProhibitTimer_specs_58 = {
+       asn_MAP_bitRateQueryProhibitTimer_value2enum_58,        /* "tag" => N; sorted by tag */
+       asn_MAP_bitRateQueryProhibitTimer_enum2value_58,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bitRateQueryProhibitTimer_tags_58[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_bitRateQueryProhibitTimer_58 = {
+       "bitRateQueryProhibitTimer",
+       "bitRateQueryProhibitTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bitRateQueryProhibitTimer_tags_58,
+       sizeof(asn_DEF_bitRateQueryProhibitTimer_tags_58)
+               /sizeof(asn_DEF_bitRateQueryProhibitTimer_tags_58[0]) - 1, /* 1 */
+       asn_DEF_bitRateQueryProhibitTimer_tags_58,      /* Same as above */
+       sizeof(asn_DEF_bitRateQueryProhibitTimer_tags_58)
+               /sizeof(asn_DEF_bitRateQueryProhibitTimer_tags_58[0]), /* 2 */
+       { &asn_OER_type_bitRateQueryProhibitTimer_constr_58, &asn_PER_type_bitRateQueryProhibitTimer_constr_58, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bitRateQueryProhibitTimer_specs_58     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ul_SpecificParameters_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, priority),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_priority_constr_3, &asn_PER_memb_priority_constr_3,  memb_priority_constraint_2 },
+               0, 0, /* No default value */
+               "priority"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, prioritisedBitRate),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_prioritisedBitRate_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "prioritisedBitRate"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, bucketSizeDuration),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bucketSizeDuration_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bucketSizeDuration"
+               },
+       { ATF_POINTER, 6, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, allowedServingCells),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_allowedServingCells_38,
+               0,
+               { &asn_OER_memb_allowedServingCells_constr_38, &asn_PER_memb_allowedServingCells_constr_38,  memb_allowedServingCells_constraint_2 },
+               0, 0, /* No default value */
+               "allowedServingCells"
+               },
+       { ATF_POINTER, 5, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, allowedSCS_List),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_allowedSCS_List_40,
+               0,
+               { &asn_OER_memb_allowedSCS_List_constr_40, &asn_PER_memb_allowedSCS_List_constr_40,  memb_allowedSCS_List_constraint_2 },
+               0, 0, /* No default value */
+               "allowedSCS-List"
+               },
+       { ATF_POINTER, 4, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, maxPUSCH_Duration),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxPUSCH_Duration_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxPUSCH-Duration"
+               },
+       { ATF_POINTER, 3, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, configuredGrantType1Allowed),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_configuredGrantType1Allowed_51,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configuredGrantType1Allowed"
+               },
+       { ATF_POINTER, 2, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, logicalChannelGroup),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_logicalChannelGroup_constr_53, &asn_PER_memb_logicalChannelGroup_constr_53,  memb_logicalChannelGroup_constraint_2 },
+               0, 0, /* No default value */
+               "logicalChannelGroup"
+               },
+       { ATF_POINTER, 1, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, schedulingRequestID),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SchedulingRequestId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingRequestID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, logicalChannelSR_Mask),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelSR-Mask"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, logicalChannelSR_DelayTimerApplied),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelSR-DelayTimerApplied"
+               },
+       { ATF_POINTER, 1, offsetof(struct LogicalChannelConfig__ul_SpecificParameters, bitRateQueryProhibitTimer),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bitRateQueryProhibitTimer_58,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bitRateQueryProhibitTimer"
+               },
+};
+static const int asn_MAP_ul_SpecificParameters_oms_2[] = { 3, 4, 5, 6, 7, 8, 11 };
+static const ber_tlv_tag_t asn_DEF_ul_SpecificParameters_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ul_SpecificParameters_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* priority */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* prioritisedBitRate */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bucketSizeDuration */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* allowedServingCells */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* allowedSCS-List */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maxPUSCH-Duration */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* configuredGrantType1Allowed */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* logicalChannelGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* schedulingRequestID */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* logicalChannelSR-Mask */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* logicalChannelSR-DelayTimerApplied */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* bitRateQueryProhibitTimer */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ul_SpecificParameters_specs_2 = {
+       sizeof(struct LogicalChannelConfig__ul_SpecificParameters),
+       offsetof(struct LogicalChannelConfig__ul_SpecificParameters, _asn_ctx),
+       asn_MAP_ul_SpecificParameters_tag2el_2,
+       12,     /* Count of tags in the map */
+       asn_MAP_ul_SpecificParameters_oms_2,    /* Optional members */
+       6, 1,   /* Root/Additions */
+       11,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ul_SpecificParameters_2 = {
+       "ul-SpecificParameters",
+       "ul-SpecificParameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ul_SpecificParameters_tags_2,
+       sizeof(asn_DEF_ul_SpecificParameters_tags_2)
+               /sizeof(asn_DEF_ul_SpecificParameters_tags_2[0]) - 1, /* 1 */
+       asn_DEF_ul_SpecificParameters_tags_2,   /* Same as above */
+       sizeof(asn_DEF_ul_SpecificParameters_tags_2)
+               /sizeof(asn_DEF_ul_SpecificParameters_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ul_SpecificParameters_2,
+       12,     /* Elements count */
+       &asn_SPC_ul_SpecificParameters_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_LogicalChannelConfig_1[] = {
+       { ATF_POINTER, 1, offsetof(struct LogicalChannelConfig, ul_SpecificParameters),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_ul_SpecificParameters_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-SpecificParameters"
+               },
+};
+static const int asn_MAP_LogicalChannelConfig_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_LogicalChannelConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_LogicalChannelConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ul-SpecificParameters */
+};
+asn_SEQUENCE_specifics_t asn_SPC_LogicalChannelConfig_specs_1 = {
+       sizeof(struct LogicalChannelConfig),
+       offsetof(struct LogicalChannelConfig, _asn_ctx),
+       asn_MAP_LogicalChannelConfig_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_LogicalChannelConfig_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_LogicalChannelConfig = {
+       "LogicalChannelConfig",
+       "LogicalChannelConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_LogicalChannelConfig_tags_1,
+       sizeof(asn_DEF_LogicalChannelConfig_tags_1)
+               /sizeof(asn_DEF_LogicalChannelConfig_tags_1[0]), /* 1 */
+       asn_DEF_LogicalChannelConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_LogicalChannelConfig_tags_1)
+               /sizeof(asn_DEF_LogicalChannelConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_LogicalChannelConfig_1,
+       1,      /* Elements count */
+       &asn_SPC_LogicalChannelConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/LogicalChannelConfig.h b/src/codec_utils/RRC/LogicalChannelConfig.h
new file mode 100644 (file)
index 0000000..a1f0e64
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LogicalChannelConfig_H_
+#define        _LogicalChannelConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include "SchedulingRequestId.h"
+#include <BOOLEAN.h>
+#include "ServCellIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "SubcarrierSpacing.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate {
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps0   = 0,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8   = 1,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps16  = 2,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps32  = 3,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps64  = 4,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps128 = 5,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps256 = 6,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps512 = 7,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps1024        = 8,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps2048        = 9,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps4096        = 10,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps8192        = 11,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps16384       = 12,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps32768       = 13,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_kBps65536       = 14,
+       LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate_infinity        = 15
+} e_LogicalChannelConfig__ul_SpecificParameters__prioritisedBitRate;
+typedef enum LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration {
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms5     = 0,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms10    = 1,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms20    = 2,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms50    = 3,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms100   = 4,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms150   = 5,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms300   = 6,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms500   = 7,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_ms1000  = 8,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare7  = 9,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare6  = 10,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare5  = 11,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare4  = 12,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare3  = 13,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare2  = 14,
+       LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration_spare1  = 15
+} e_LogicalChannelConfig__ul_SpecificParameters__bucketSizeDuration;
+typedef enum LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration {
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p02   = 0,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p04   = 1,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p0625 = 2,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p125  = 3,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p25   = 4,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_ms0p5    = 5,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_spare2   = 6,
+       LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration_spare1   = 7
+} e_LogicalChannelConfig__ul_SpecificParameters__maxPUSCH_Duration;
+typedef enum LogicalChannelConfig__ul_SpecificParameters__configuredGrantType1Allowed {
+       LogicalChannelConfig__ul_SpecificParameters__configuredGrantType1Allowed_true   = 0
+} e_LogicalChannelConfig__ul_SpecificParameters__configuredGrantType1Allowed;
+typedef enum LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer {
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s0       = 0,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s0dot4   = 1,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s0dot8   = 2,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s1dot6   = 3,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s3       = 4,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s6       = 5,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s12      = 6,
+       LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer_s30      = 7
+} e_LogicalChannelConfig__ul_SpecificParameters__bitRateQueryProhibitTimer;
+
+/* LogicalChannelConfig */
+typedef struct LogicalChannelConfig {
+       struct LogicalChannelConfig__ul_SpecificParameters {
+               long     priority;
+               long     prioritisedBitRate;
+               long     bucketSizeDuration;
+               struct LogicalChannelConfig__ul_SpecificParameters__allowedServingCells {
+                       A_SEQUENCE_OF(ServCellIndex_t) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *allowedServingCells;
+               struct LogicalChannelConfig__ul_SpecificParameters__allowedSCS_List {
+                       A_SEQUENCE_OF(SubcarrierSpacing_t) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *allowedSCS_List;
+               long    *maxPUSCH_Duration;     /* OPTIONAL */
+               long    *configuredGrantType1Allowed;   /* OPTIONAL */
+               long    *logicalChannelGroup;   /* OPTIONAL */
+               SchedulingRequestId_t   *schedulingRequestID;   /* OPTIONAL */
+               BOOLEAN_t        logicalChannelSR_Mask;
+               BOOLEAN_t        logicalChannelSR_DelayTimerApplied;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               long    *bitRateQueryProhibitTimer;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ul_SpecificParameters;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} LogicalChannelConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_prioritisedBitRate_4;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bucketSizeDuration_21; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxPUSCH_Duration_42;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_configuredGrantType1Allowed_51;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bitRateQueryProhibitTimer_58;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_LogicalChannelConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_LogicalChannelConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_LogicalChannelConfig_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LogicalChannelConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/LogicalChannelIdentity.c b/src/codec_utils/RRC/LogicalChannelIdentity.c
new file mode 100644 (file)
index 0000000..5ceb2b3
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "LogicalChannelIdentity.h"
+
+int
+LogicalChannelIdentity_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 <= 32)) {
+               /* 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_LogicalChannelIdentity_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+asn_per_constraints_t asn_PER_type_LogicalChannelIdentity_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_LogicalChannelIdentity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_LogicalChannelIdentity = {
+       "LogicalChannelIdentity",
+       "LogicalChannelIdentity",
+       &asn_OP_NativeInteger,
+       asn_DEF_LogicalChannelIdentity_tags_1,
+       sizeof(asn_DEF_LogicalChannelIdentity_tags_1)
+               /sizeof(asn_DEF_LogicalChannelIdentity_tags_1[0]), /* 1 */
+       asn_DEF_LogicalChannelIdentity_tags_1,  /* Same as above */
+       sizeof(asn_DEF_LogicalChannelIdentity_tags_1)
+               /sizeof(asn_DEF_LogicalChannelIdentity_tags_1[0]), /* 1 */
+       { &asn_OER_type_LogicalChannelIdentity_constr_1, &asn_PER_type_LogicalChannelIdentity_constr_1, LogicalChannelIdentity_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/LogicalChannelIdentity.h b/src/codec_utils/RRC/LogicalChannelIdentity.h
new file mode 100644 (file)
index 0000000..5a01589
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _LogicalChannelIdentity_H_
+#define        _LogicalChannelIdentity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* LogicalChannelIdentity */
+typedef long    LogicalChannelIdentity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_LogicalChannelIdentity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_LogicalChannelIdentity;
+asn_struct_free_f LogicalChannelIdentity_free;
+asn_struct_print_f LogicalChannelIdentity_print;
+asn_constr_check_f LogicalChannelIdentity_constraint;
+ber_type_decoder_f LogicalChannelIdentity_decode_ber;
+der_type_encoder_f LogicalChannelIdentity_encode_der;
+xer_type_decoder_f LogicalChannelIdentity_decode_xer;
+xer_type_encoder_f LogicalChannelIdentity_encode_xer;
+oer_type_decoder_f LogicalChannelIdentity_decode_oer;
+oer_type_encoder_f LogicalChannelIdentity_encode_oer;
+per_type_decoder_f LogicalChannelIdentity_decode_uper;
+per_type_encoder_f LogicalChannelIdentity_encode_uper;
+per_type_decoder_f LogicalChannelIdentity_decode_aper;
+per_type_encoder_f LogicalChannelIdentity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _LogicalChannelIdentity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MAC-CellGroupConfig.c b/src/codec_utils/RRC/MAC-CellGroupConfig.c
new file mode 100644 (file)
index 0000000..2f93727
--- /dev/null
@@ -0,0 +1,343 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MAC-CellGroupConfig.h"
+
+#include "SchedulingRequestConfig.h"
+#include "BSR-Config.h"
+#include "TAG-Config.h"
+#include "DRX-Config.h"
+#include "PHR-Config.h"
+static asn_oer_constraints_t asn_OER_type_drx_Config_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drx_Config_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_phr_Config_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phr_Config_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dataInactivityTimer_v1530_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dataInactivityTimer_v1530_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_drx_Config_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MAC_CellGroupConfig__drx_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MAC_CellGroupConfig__drx_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRX_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_drx_Config_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_drx_Config_specs_2 = {
+       sizeof(struct MAC_CellGroupConfig__drx_Config),
+       offsetof(struct MAC_CellGroupConfig__drx_Config, _asn_ctx),
+       offsetof(struct MAC_CellGroupConfig__drx_Config, present),
+       sizeof(((struct MAC_CellGroupConfig__drx_Config *)0)->present),
+       asn_MAP_drx_Config_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_drx_Config_2 = {
+       "drx-Config",
+       "drx-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_drx_Config_constr_2, &asn_PER_type_drx_Config_constr_2, CHOICE_constraint },
+       asn_MBR_drx_Config_2,
+       2,      /* Elements count */
+       &asn_SPC_drx_Config_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_phr_Config_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MAC_CellGroupConfig__phr_Config, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MAC_CellGroupConfig__phr_Config, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PHR_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_phr_Config_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_phr_Config_specs_8 = {
+       sizeof(struct MAC_CellGroupConfig__phr_Config),
+       offsetof(struct MAC_CellGroupConfig__phr_Config, _asn_ctx),
+       offsetof(struct MAC_CellGroupConfig__phr_Config, present),
+       sizeof(((struct MAC_CellGroupConfig__phr_Config *)0)->present),
+       asn_MAP_phr_Config_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_phr_Config_8 = {
+       "phr-Config",
+       "phr-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_phr_Config_constr_8, &asn_PER_type_phr_Config_constr_8, CHOICE_constraint },
+       asn_MBR_phr_Config_8,
+       2,      /* Elements count */
+       &asn_SPC_phr_Config_specs_8     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dataInactivityTimer_v1530_15[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DataInactivityTimer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_dataInactivityTimer_v1530_tag2el_15[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_dataInactivityTimer_v1530_specs_15 = {
+       sizeof(struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530),
+       offsetof(struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530, _asn_ctx),
+       offsetof(struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530, present),
+       sizeof(((struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530 *)0)->present),
+       asn_MAP_dataInactivityTimer_v1530_tag2el_15,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dataInactivityTimer_v1530_15 = {
+       "dataInactivityTimer-v1530",
+       "dataInactivityTimer-v1530",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_dataInactivityTimer_v1530_constr_15, &asn_PER_type_dataInactivityTimer_v1530_constr_15, CHOICE_constraint },
+       asn_MBR_dataInactivityTimer_v1530_15,
+       2,      /* Elements count */
+       &asn_SPC_dataInactivityTimer_v1530_specs_15     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_13[] = {
+       { ATF_POINTER, 2, offsetof(struct MAC_CellGroupConfig__ext1, csi_Mask_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-Mask-v1530"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_CellGroupConfig__ext1, dataInactivityTimer_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_dataInactivityTimer_v1530_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dataInactivityTimer-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_13[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_13[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-Mask-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dataInactivityTimer-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_13 = {
+       sizeof(struct MAC_CellGroupConfig__ext1),
+       offsetof(struct MAC_CellGroupConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_13,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_13,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_13 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_13,
+       sizeof(asn_DEF_ext1_tags_13)
+               /sizeof(asn_DEF_ext1_tags_13[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_13,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_13)
+               /sizeof(asn_DEF_ext1_tags_13[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_13,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_13  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MAC_CellGroupConfig_1[] = {
+       { ATF_POINTER, 5, offsetof(struct MAC_CellGroupConfig, drx_Config),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_drx_Config_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drx-Config"
+               },
+       { ATF_POINTER, 4, offsetof(struct MAC_CellGroupConfig, schedulingRequestConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SchedulingRequestConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingRequestConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct MAC_CellGroupConfig, bsr_Config),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BSR_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bsr-Config"
+               },
+       { ATF_POINTER, 2, offsetof(struct MAC_CellGroupConfig, tag_Config),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TAG_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tag-Config"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_CellGroupConfig, phr_Config),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_phr_Config_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-Config"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MAC_CellGroupConfig, skipUplinkTxDynamic),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "skipUplinkTxDynamic"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_CellGroupConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_ext1_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MAC_CellGroupConfig_oms_1[] = { 0, 1, 2, 3, 4, 6 };
+static const ber_tlv_tag_t asn_DEF_MAC_CellGroupConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MAC_CellGroupConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drx-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* schedulingRequestConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bsr-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* tag-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* phr-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* skipUplinkTxDynamic */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MAC_CellGroupConfig_specs_1 = {
+       sizeof(struct MAC_CellGroupConfig),
+       offsetof(struct MAC_CellGroupConfig, _asn_ctx),
+       asn_MAP_MAC_CellGroupConfig_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_MAC_CellGroupConfig_oms_1,      /* Optional members */
+       5, 1,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MAC_CellGroupConfig = {
+       "MAC-CellGroupConfig",
+       "MAC-CellGroupConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MAC_CellGroupConfig_tags_1,
+       sizeof(asn_DEF_MAC_CellGroupConfig_tags_1)
+               /sizeof(asn_DEF_MAC_CellGroupConfig_tags_1[0]), /* 1 */
+       asn_DEF_MAC_CellGroupConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MAC_CellGroupConfig_tags_1)
+               /sizeof(asn_DEF_MAC_CellGroupConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MAC_CellGroupConfig_1,
+       7,      /* Elements count */
+       &asn_SPC_MAC_CellGroupConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MAC-CellGroupConfig.h b/src/codec_utils/RRC/MAC-CellGroupConfig.h
new file mode 100644 (file)
index 0000000..5a842d0
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MAC_CellGroupConfig_H_
+#define        _MAC_CellGroupConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include "DataInactivityTimer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MAC_CellGroupConfig__drx_Config_PR {
+       MAC_CellGroupConfig__drx_Config_PR_NOTHING,     /* No components present */
+       MAC_CellGroupConfig__drx_Config_PR_release,
+       MAC_CellGroupConfig__drx_Config_PR_setup
+} MAC_CellGroupConfig__drx_Config_PR;
+typedef enum MAC_CellGroupConfig__phr_Config_PR {
+       MAC_CellGroupConfig__phr_Config_PR_NOTHING,     /* No components present */
+       MAC_CellGroupConfig__phr_Config_PR_release,
+       MAC_CellGroupConfig__phr_Config_PR_setup
+} MAC_CellGroupConfig__phr_Config_PR;
+typedef enum MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR {
+       MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR_NOTHING,        /* No components present */
+       MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR_release,
+       MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR_setup
+} MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR;
+
+/* Forward declarations */
+struct SchedulingRequestConfig;
+struct BSR_Config;
+struct TAG_Config;
+struct DRX_Config;
+struct PHR_Config;
+
+/* MAC-CellGroupConfig */
+typedef struct MAC_CellGroupConfig {
+       struct MAC_CellGroupConfig__drx_Config {
+               MAC_CellGroupConfig__drx_Config_PR present;
+               union MAC_CellGroupConfig__drx_Config_u {
+                       NULL_t   release;
+                       struct DRX_Config       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *drx_Config;
+       struct SchedulingRequestConfig  *schedulingRequestConfig;       /* OPTIONAL */
+       struct BSR_Config       *bsr_Config;    /* OPTIONAL */
+       struct TAG_Config       *tag_Config;    /* OPTIONAL */
+       struct MAC_CellGroupConfig__phr_Config {
+               MAC_CellGroupConfig__phr_Config_PR present;
+               union MAC_CellGroupConfig__phr_Config_u {
+                       NULL_t   release;
+                       struct PHR_Config       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *phr_Config;
+       BOOLEAN_t        skipUplinkTxDynamic;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MAC_CellGroupConfig__ext1 {
+               BOOLEAN_t       *csi_Mask_v1530;        /* OPTIONAL */
+               struct MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530 {
+                       MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_PR present;
+                       union MAC_CellGroupConfig__ext1__dataInactivityTimer_v1530_u {
+                               NULL_t   release;
+                               DataInactivityTimer_t    setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *dataInactivityTimer_v1530;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MAC_CellGroupConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MAC_CellGroupConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_MAC_CellGroupConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_MAC_CellGroupConfig_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAC_CellGroupConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MAC-Parameters.c b/src/codec_utils/RRC/MAC-Parameters.c
new file mode 100644 (file)
index 0000000..a22982d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MAC-Parameters.h"
+
+#include "MAC-ParametersCommon.h"
+#include "MAC-ParametersXDD-Diff.h"
+asn_TYPE_member_t asn_MBR_MAC_Parameters_1[] = {
+       { ATF_POINTER, 2, offsetof(struct MAC_Parameters, mac_ParametersCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MAC_ParametersCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-ParametersCommon"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_Parameters, mac_ParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MAC_ParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-ParametersXDD-Diff"
+               },
+};
+static const int asn_MAP_MAC_Parameters_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_MAC_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MAC_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mac-ParametersCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* mac-ParametersXDD-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MAC_Parameters_specs_1 = {
+       sizeof(struct MAC_Parameters),
+       offsetof(struct MAC_Parameters, _asn_ctx),
+       asn_MAP_MAC_Parameters_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MAC_Parameters_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MAC_Parameters = {
+       "MAC-Parameters",
+       "MAC-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MAC_Parameters_tags_1,
+       sizeof(asn_DEF_MAC_Parameters_tags_1)
+               /sizeof(asn_DEF_MAC_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_MAC_Parameters_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MAC_Parameters_tags_1)
+               /sizeof(asn_DEF_MAC_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MAC_Parameters_1,
+       2,      /* Elements count */
+       &asn_SPC_MAC_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MAC-Parameters.h b/src/codec_utils/RRC/MAC-Parameters.h
new file mode 100644 (file)
index 0000000..bd86923
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MAC_Parameters_H_
+#define        _MAC_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MAC_ParametersCommon;
+struct MAC_ParametersXDD_Diff;
+
+/* MAC-Parameters */
+typedef struct MAC_Parameters {
+       struct MAC_ParametersCommon     *mac_ParametersCommon;  /* OPTIONAL */
+       struct MAC_ParametersXDD_Diff   *mac_ParametersXDD_Diff;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MAC_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MAC_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_MAC_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_MAC_Parameters_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAC_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MAC-ParametersCommon.c b/src/codec_utils/RRC/MAC-ParametersCommon.c
new file mode 100644 (file)
index 0000000..e9f735e
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MAC-ParametersCommon.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.
+ */
+static asn_oer_constraints_t asn_OER_type_lcp_Restriction_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_lcp_Restriction_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_SpatialRelInfoMAC_CE_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_SpatialRelInfoMAC_CE_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_lch_ToSCellRestriction_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_lch_ToSCellRestriction_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_recommendedBitRate_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_recommendedBitRate_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_recommendedBitRateQuery_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_recommendedBitRateQuery_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_lcp_Restriction_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_lcp_Restriction_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_lcp_Restriction_specs_2 = {
+       asn_MAP_lcp_Restriction_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_lcp_Restriction_enum2value_2,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_lcp_Restriction_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_lcp_Restriction_2 = {
+       "lcp-Restriction",
+       "lcp-Restriction",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_lcp_Restriction_tags_2,
+       sizeof(asn_DEF_lcp_Restriction_tags_2)
+               /sizeof(asn_DEF_lcp_Restriction_tags_2[0]) - 1, /* 1 */
+       asn_DEF_lcp_Restriction_tags_2, /* Same as above */
+       sizeof(asn_DEF_lcp_Restriction_tags_2)
+               /sizeof(asn_DEF_lcp_Restriction_tags_2[0]), /* 2 */
+       { &asn_OER_type_lcp_Restriction_constr_2, &asn_PER_type_lcp_Restriction_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_lcp_Restriction_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_SpatialRelInfoMAC_CE_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_SpatialRelInfoMAC_CE_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_SpatialRelInfoMAC_CE_specs_4 = {
+       asn_MAP_pucch_SpatialRelInfoMAC_CE_value2enum_4,        /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_SpatialRelInfoMAC_CE_enum2value_4,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4[] = {
+       (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_pucch_SpatialRelInfoMAC_CE_4 = {
+       "pucch-SpatialRelInfoMAC-CE",
+       "pucch-SpatialRelInfoMAC-CE",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4,
+       sizeof(asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4)
+               /sizeof(asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4[0]) - 1, /* 1 */
+       asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4,      /* Same as above */
+       sizeof(asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4)
+               /sizeof(asn_DEF_pucch_SpatialRelInfoMAC_CE_tags_4[0]), /* 2 */
+       { &asn_OER_type_pucch_SpatialRelInfoMAC_CE_constr_4, &asn_PER_type_pucch_SpatialRelInfoMAC_CE_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_SpatialRelInfoMAC_CE_specs_4     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_lch_ToSCellRestriction_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_lch_ToSCellRestriction_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_lch_ToSCellRestriction_specs_6 = {
+       asn_MAP_lch_ToSCellRestriction_value2enum_6,    /* "tag" => N; sorted by tag */
+       asn_MAP_lch_ToSCellRestriction_enum2value_6,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_lch_ToSCellRestriction_tags_6[] = {
+       (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_lch_ToSCellRestriction_6 = {
+       "lch-ToSCellRestriction",
+       "lch-ToSCellRestriction",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_lch_ToSCellRestriction_tags_6,
+       sizeof(asn_DEF_lch_ToSCellRestriction_tags_6)
+               /sizeof(asn_DEF_lch_ToSCellRestriction_tags_6[0]) - 1, /* 1 */
+       asn_DEF_lch_ToSCellRestriction_tags_6,  /* Same as above */
+       sizeof(asn_DEF_lch_ToSCellRestriction_tags_6)
+               /sizeof(asn_DEF_lch_ToSCellRestriction_tags_6[0]), /* 2 */
+       { &asn_OER_type_lch_ToSCellRestriction_constr_6, &asn_PER_type_lch_ToSCellRestriction_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_lch_ToSCellRestriction_specs_6 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_recommendedBitRate_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_recommendedBitRate_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_recommendedBitRate_specs_10 = {
+       asn_MAP_recommendedBitRate_value2enum_10,       /* "tag" => N; sorted by tag */
+       asn_MAP_recommendedBitRate_enum2value_10,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_recommendedBitRate_tags_10[] = {
+       (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_recommendedBitRate_10 = {
+       "recommendedBitRate",
+       "recommendedBitRate",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_recommendedBitRate_tags_10,
+       sizeof(asn_DEF_recommendedBitRate_tags_10)
+               /sizeof(asn_DEF_recommendedBitRate_tags_10[0]) - 1, /* 1 */
+       asn_DEF_recommendedBitRate_tags_10,     /* Same as above */
+       sizeof(asn_DEF_recommendedBitRate_tags_10)
+               /sizeof(asn_DEF_recommendedBitRate_tags_10[0]), /* 2 */
+       { &asn_OER_type_recommendedBitRate_constr_10, &asn_PER_type_recommendedBitRate_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_recommendedBitRate_specs_10    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_recommendedBitRateQuery_value2enum_12[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_recommendedBitRateQuery_enum2value_12[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_recommendedBitRateQuery_specs_12 = {
+       asn_MAP_recommendedBitRateQuery_value2enum_12,  /* "tag" => N; sorted by tag */
+       asn_MAP_recommendedBitRateQuery_enum2value_12,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_recommendedBitRateQuery_tags_12[] = {
+       (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_recommendedBitRateQuery_12 = {
+       "recommendedBitRateQuery",
+       "recommendedBitRateQuery",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_recommendedBitRateQuery_tags_12,
+       sizeof(asn_DEF_recommendedBitRateQuery_tags_12)
+               /sizeof(asn_DEF_recommendedBitRateQuery_tags_12[0]) - 1, /* 1 */
+       asn_DEF_recommendedBitRateQuery_tags_12,        /* Same as above */
+       sizeof(asn_DEF_recommendedBitRateQuery_tags_12)
+               /sizeof(asn_DEF_recommendedBitRateQuery_tags_12[0]), /* 2 */
+       { &asn_OER_type_recommendedBitRateQuery_constr_12, &asn_PER_type_recommendedBitRateQuery_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_recommendedBitRateQuery_specs_12       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_9[] = {
+       { ATF_POINTER, 2, offsetof(struct MAC_ParametersCommon__ext1, recommendedBitRate),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_recommendedBitRate_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "recommendedBitRate"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_ParametersCommon__ext1, recommendedBitRateQuery),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_recommendedBitRateQuery_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "recommendedBitRateQuery"
+               },
+};
+static const int asn_MAP_ext1_oms_9[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* recommendedBitRate */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* recommendedBitRateQuery */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_9 = {
+       sizeof(struct MAC_ParametersCommon__ext1),
+       offsetof(struct MAC_ParametersCommon__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_9,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_9,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_9 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_9,
+       sizeof(asn_DEF_ext1_tags_9)
+               /sizeof(asn_DEF_ext1_tags_9[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_9,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_9)
+               /sizeof(asn_DEF_ext1_tags_9[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_9,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_9   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MAC_ParametersCommon_1[] = {
+       { ATF_POINTER, 4, offsetof(struct MAC_ParametersCommon, lcp_Restriction),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_lcp_Restriction_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lcp-Restriction"
+               },
+       { ATF_POINTER, 3, offsetof(struct MAC_ParametersCommon, pucch_SpatialRelInfoMAC_CE),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_SpatialRelInfoMAC_CE_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-SpatialRelInfoMAC-CE"
+               },
+       { ATF_POINTER, 2, offsetof(struct MAC_ParametersCommon, lch_ToSCellRestriction),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_lch_ToSCellRestriction_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lch-ToSCellRestriction"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_ParametersCommon, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MAC_ParametersCommon_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MAC_ParametersCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MAC_ParametersCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lcp-Restriction */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pucch-SpatialRelInfoMAC-CE */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* lch-ToSCellRestriction */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MAC_ParametersCommon_specs_1 = {
+       sizeof(struct MAC_ParametersCommon),
+       offsetof(struct MAC_ParametersCommon, _asn_ctx),
+       asn_MAP_MAC_ParametersCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_MAC_ParametersCommon_oms_1,     /* Optional members */
+       3, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MAC_ParametersCommon = {
+       "MAC-ParametersCommon",
+       "MAC-ParametersCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MAC_ParametersCommon_tags_1,
+       sizeof(asn_DEF_MAC_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_MAC_ParametersCommon_tags_1[0]), /* 1 */
+       asn_DEF_MAC_ParametersCommon_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MAC_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_MAC_ParametersCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MAC_ParametersCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_MAC_ParametersCommon_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MAC-ParametersCommon.h b/src/codec_utils/RRC/MAC-ParametersCommon.h
new file mode 100644 (file)
index 0000000..aadb83d
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MAC_ParametersCommon_H_
+#define        _MAC_ParametersCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MAC_ParametersCommon__lcp_Restriction {
+       MAC_ParametersCommon__lcp_Restriction_supported = 0
+} e_MAC_ParametersCommon__lcp_Restriction;
+typedef enum MAC_ParametersCommon__pucch_SpatialRelInfoMAC_CE {
+       MAC_ParametersCommon__pucch_SpatialRelInfoMAC_CE_supported      = 0
+} e_MAC_ParametersCommon__pucch_SpatialRelInfoMAC_CE;
+typedef enum MAC_ParametersCommon__lch_ToSCellRestriction {
+       MAC_ParametersCommon__lch_ToSCellRestriction_supported  = 0
+} e_MAC_ParametersCommon__lch_ToSCellRestriction;
+typedef enum MAC_ParametersCommon__ext1__recommendedBitRate {
+       MAC_ParametersCommon__ext1__recommendedBitRate_supported        = 0
+} e_MAC_ParametersCommon__ext1__recommendedBitRate;
+typedef enum MAC_ParametersCommon__ext1__recommendedBitRateQuery {
+       MAC_ParametersCommon__ext1__recommendedBitRateQuery_supported   = 0
+} e_MAC_ParametersCommon__ext1__recommendedBitRateQuery;
+
+/* MAC-ParametersCommon */
+typedef struct MAC_ParametersCommon {
+       long    *lcp_Restriction;       /* OPTIONAL */
+       long    *pucch_SpatialRelInfoMAC_CE;    /* OPTIONAL */
+       long    *lch_ToSCellRestriction;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MAC_ParametersCommon__ext1 {
+               long    *recommendedBitRate;    /* OPTIONAL */
+               long    *recommendedBitRateQuery;       /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MAC_ParametersCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_lcp_Restriction_2;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_SpatialRelInfoMAC_CE_4;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_lch_ToSCellRestriction_6;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_recommendedBitRate_10; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_recommendedBitRateQuery_12;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MAC_ParametersCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_MAC_ParametersCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_MAC_ParametersCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAC_ParametersCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MAC-ParametersXDD-Diff.c b/src/codec_utils/RRC/MAC-ParametersXDD-Diff.c
new file mode 100644 (file)
index 0000000..88f241d
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MAC-ParametersXDD-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_skipUplinkTxDynamic_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_skipUplinkTxDynamic_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_logicalChannelSR_DelayTimer_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_logicalChannelSR_DelayTimer_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_longDRX_Cycle_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_longDRX_Cycle_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_shortDRX_Cycle_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_shortDRX_Cycle_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_multipleSR_Configurations_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleSR_Configurations_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_multipleConfiguredGrants_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleConfiguredGrants_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_skipUplinkTxDynamic_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_skipUplinkTxDynamic_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_skipUplinkTxDynamic_specs_2 = {
+       asn_MAP_skipUplinkTxDynamic_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_skipUplinkTxDynamic_enum2value_2,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_skipUplinkTxDynamic_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_skipUplinkTxDynamic_2 = {
+       "skipUplinkTxDynamic",
+       "skipUplinkTxDynamic",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_skipUplinkTxDynamic_tags_2,
+       sizeof(asn_DEF_skipUplinkTxDynamic_tags_2)
+               /sizeof(asn_DEF_skipUplinkTxDynamic_tags_2[0]) - 1, /* 1 */
+       asn_DEF_skipUplinkTxDynamic_tags_2,     /* Same as above */
+       sizeof(asn_DEF_skipUplinkTxDynamic_tags_2)
+               /sizeof(asn_DEF_skipUplinkTxDynamic_tags_2[0]), /* 2 */
+       { &asn_OER_type_skipUplinkTxDynamic_constr_2, &asn_PER_type_skipUplinkTxDynamic_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_skipUplinkTxDynamic_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_logicalChannelSR_DelayTimer_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_logicalChannelSR_DelayTimer_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_logicalChannelSR_DelayTimer_specs_4 = {
+       asn_MAP_logicalChannelSR_DelayTimer_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_logicalChannelSR_DelayTimer_enum2value_4,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_logicalChannelSR_DelayTimer_tags_4[] = {
+       (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_logicalChannelSR_DelayTimer_4 = {
+       "logicalChannelSR-DelayTimer",
+       "logicalChannelSR-DelayTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_logicalChannelSR_DelayTimer_tags_4,
+       sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_4)
+               /sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_4[0]) - 1, /* 1 */
+       asn_DEF_logicalChannelSR_DelayTimer_tags_4,     /* Same as above */
+       sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_4)
+               /sizeof(asn_DEF_logicalChannelSR_DelayTimer_tags_4[0]), /* 2 */
+       { &asn_OER_type_logicalChannelSR_DelayTimer_constr_4, &asn_PER_type_logicalChannelSR_DelayTimer_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_logicalChannelSR_DelayTimer_specs_4    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_longDRX_Cycle_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_longDRX_Cycle_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_longDRX_Cycle_specs_6 = {
+       asn_MAP_longDRX_Cycle_value2enum_6,     /* "tag" => N; sorted by tag */
+       asn_MAP_longDRX_Cycle_enum2value_6,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_longDRX_Cycle_tags_6[] = {
+       (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_longDRX_Cycle_6 = {
+       "longDRX-Cycle",
+       "longDRX-Cycle",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_longDRX_Cycle_tags_6,
+       sizeof(asn_DEF_longDRX_Cycle_tags_6)
+               /sizeof(asn_DEF_longDRX_Cycle_tags_6[0]) - 1, /* 1 */
+       asn_DEF_longDRX_Cycle_tags_6,   /* Same as above */
+       sizeof(asn_DEF_longDRX_Cycle_tags_6)
+               /sizeof(asn_DEF_longDRX_Cycle_tags_6[0]), /* 2 */
+       { &asn_OER_type_longDRX_Cycle_constr_6, &asn_PER_type_longDRX_Cycle_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_longDRX_Cycle_specs_6  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_shortDRX_Cycle_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_shortDRX_Cycle_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_shortDRX_Cycle_specs_8 = {
+       asn_MAP_shortDRX_Cycle_value2enum_8,    /* "tag" => N; sorted by tag */
+       asn_MAP_shortDRX_Cycle_enum2value_8,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_shortDRX_Cycle_tags_8[] = {
+       (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_shortDRX_Cycle_8 = {
+       "shortDRX-Cycle",
+       "shortDRX-Cycle",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_shortDRX_Cycle_tags_8,
+       sizeof(asn_DEF_shortDRX_Cycle_tags_8)
+               /sizeof(asn_DEF_shortDRX_Cycle_tags_8[0]) - 1, /* 1 */
+       asn_DEF_shortDRX_Cycle_tags_8,  /* Same as above */
+       sizeof(asn_DEF_shortDRX_Cycle_tags_8)
+               /sizeof(asn_DEF_shortDRX_Cycle_tags_8[0]), /* 2 */
+       { &asn_OER_type_shortDRX_Cycle_constr_8, &asn_PER_type_shortDRX_Cycle_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_shortDRX_Cycle_specs_8 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_multipleSR_Configurations_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleSR_Configurations_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleSR_Configurations_specs_10 = {
+       asn_MAP_multipleSR_Configurations_value2enum_10,        /* "tag" => N; sorted by tag */
+       asn_MAP_multipleSR_Configurations_enum2value_10,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleSR_Configurations_tags_10[] = {
+       (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_multipleSR_Configurations_10 = {
+       "multipleSR-Configurations",
+       "multipleSR-Configurations",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleSR_Configurations_tags_10,
+       sizeof(asn_DEF_multipleSR_Configurations_tags_10)
+               /sizeof(asn_DEF_multipleSR_Configurations_tags_10[0]) - 1, /* 1 */
+       asn_DEF_multipleSR_Configurations_tags_10,      /* Same as above */
+       sizeof(asn_DEF_multipleSR_Configurations_tags_10)
+               /sizeof(asn_DEF_multipleSR_Configurations_tags_10[0]), /* 2 */
+       { &asn_OER_type_multipleSR_Configurations_constr_10, &asn_PER_type_multipleSR_Configurations_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleSR_Configurations_specs_10     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_multipleConfiguredGrants_value2enum_12[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleConfiguredGrants_enum2value_12[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleConfiguredGrants_specs_12 = {
+       asn_MAP_multipleConfiguredGrants_value2enum_12, /* "tag" => N; sorted by tag */
+       asn_MAP_multipleConfiguredGrants_enum2value_12, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleConfiguredGrants_tags_12[] = {
+       (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_multipleConfiguredGrants_12 = {
+       "multipleConfiguredGrants",
+       "multipleConfiguredGrants",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleConfiguredGrants_tags_12,
+       sizeof(asn_DEF_multipleConfiguredGrants_tags_12)
+               /sizeof(asn_DEF_multipleConfiguredGrants_tags_12[0]) - 1, /* 1 */
+       asn_DEF_multipleConfiguredGrants_tags_12,       /* Same as above */
+       sizeof(asn_DEF_multipleConfiguredGrants_tags_12)
+               /sizeof(asn_DEF_multipleConfiguredGrants_tags_12[0]), /* 2 */
+       { &asn_OER_type_multipleConfiguredGrants_constr_12, &asn_PER_type_multipleConfiguredGrants_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleConfiguredGrants_specs_12      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MAC_ParametersXDD_Diff_1[] = {
+       { ATF_POINTER, 6, offsetof(struct MAC_ParametersXDD_Diff, skipUplinkTxDynamic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_skipUplinkTxDynamic_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "skipUplinkTxDynamic"
+               },
+       { ATF_POINTER, 5, offsetof(struct MAC_ParametersXDD_Diff, logicalChannelSR_DelayTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_logicalChannelSR_DelayTimer_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelSR-DelayTimer"
+               },
+       { ATF_POINTER, 4, offsetof(struct MAC_ParametersXDD_Diff, longDRX_Cycle),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_longDRX_Cycle_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "longDRX-Cycle"
+               },
+       { ATF_POINTER, 3, offsetof(struct MAC_ParametersXDD_Diff, shortDRX_Cycle),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_shortDRX_Cycle_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortDRX-Cycle"
+               },
+       { ATF_POINTER, 2, offsetof(struct MAC_ParametersXDD_Diff, multipleSR_Configurations),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleSR_Configurations_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleSR-Configurations"
+               },
+       { ATF_POINTER, 1, offsetof(struct MAC_ParametersXDD_Diff, multipleConfiguredGrants),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleConfiguredGrants_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleConfiguredGrants"
+               },
+};
+static const int asn_MAP_MAC_ParametersXDD_Diff_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_MAC_ParametersXDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MAC_ParametersXDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* skipUplinkTxDynamic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* logicalChannelSR-DelayTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* longDRX-Cycle */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* shortDRX-Cycle */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* multipleSR-Configurations */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* multipleConfiguredGrants */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MAC_ParametersXDD_Diff_specs_1 = {
+       sizeof(struct MAC_ParametersXDD_Diff),
+       offsetof(struct MAC_ParametersXDD_Diff, _asn_ctx),
+       asn_MAP_MAC_ParametersXDD_Diff_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_MAC_ParametersXDD_Diff_oms_1,   /* Optional members */
+       6, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MAC_ParametersXDD_Diff = {
+       "MAC-ParametersXDD-Diff",
+       "MAC-ParametersXDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MAC_ParametersXDD_Diff_tags_1,
+       sizeof(asn_DEF_MAC_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_MAC_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_MAC_ParametersXDD_Diff_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MAC_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_MAC_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MAC_ParametersXDD_Diff_1,
+       6,      /* Elements count */
+       &asn_SPC_MAC_ParametersXDD_Diff_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MAC-ParametersXDD-Diff.h b/src/codec_utils/RRC/MAC-ParametersXDD-Diff.h
new file mode 100644 (file)
index 0000000..ec750db
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MAC_ParametersXDD_Diff_H_
+#define        _MAC_ParametersXDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MAC_ParametersXDD_Diff__skipUplinkTxDynamic {
+       MAC_ParametersXDD_Diff__skipUplinkTxDynamic_supported   = 0
+} e_MAC_ParametersXDD_Diff__skipUplinkTxDynamic;
+typedef enum MAC_ParametersXDD_Diff__logicalChannelSR_DelayTimer {
+       MAC_ParametersXDD_Diff__logicalChannelSR_DelayTimer_supported   = 0
+} e_MAC_ParametersXDD_Diff__logicalChannelSR_DelayTimer;
+typedef enum MAC_ParametersXDD_Diff__longDRX_Cycle {
+       MAC_ParametersXDD_Diff__longDRX_Cycle_supported = 0
+} e_MAC_ParametersXDD_Diff__longDRX_Cycle;
+typedef enum MAC_ParametersXDD_Diff__shortDRX_Cycle {
+       MAC_ParametersXDD_Diff__shortDRX_Cycle_supported        = 0
+} e_MAC_ParametersXDD_Diff__shortDRX_Cycle;
+typedef enum MAC_ParametersXDD_Diff__multipleSR_Configurations {
+       MAC_ParametersXDD_Diff__multipleSR_Configurations_supported     = 0
+} e_MAC_ParametersXDD_Diff__multipleSR_Configurations;
+typedef enum MAC_ParametersXDD_Diff__multipleConfiguredGrants {
+       MAC_ParametersXDD_Diff__multipleConfiguredGrants_supported      = 0
+} e_MAC_ParametersXDD_Diff__multipleConfiguredGrants;
+
+/* MAC-ParametersXDD-Diff */
+typedef struct MAC_ParametersXDD_Diff {
+       long    *skipUplinkTxDynamic;   /* OPTIONAL */
+       long    *logicalChannelSR_DelayTimer;   /* OPTIONAL */
+       long    *longDRX_Cycle; /* OPTIONAL */
+       long    *shortDRX_Cycle;        /* OPTIONAL */
+       long    *multipleSR_Configurations;     /* OPTIONAL */
+       long    *multipleConfiguredGrants;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MAC_ParametersXDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_skipUplinkTxDynamic_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_logicalChannelSR_DelayTimer_4; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_longDRX_Cycle_6;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_shortDRX_Cycle_8;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleSR_Configurations_10;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleConfiguredGrants_12;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MAC_ParametersXDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_MAC_ParametersXDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_MAC_ParametersXDD_Diff_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MAC_ParametersXDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MCC-MNC-Digit.c b/src/codec_utils/RRC/MCC-MNC-Digit.c
new file mode 100644 (file)
index 0000000..2f0aea9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MCC-MNC-Digit.h"
+
+int
+MCC_MNC_Digit_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 <= 9)) {
+               /* 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_MCC_MNC_Digit_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+asn_per_constraints_t asn_PER_type_MCC_MNC_Digit_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MCC_MNC_Digit_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MCC_MNC_Digit = {
+       "MCC-MNC-Digit",
+       "MCC-MNC-Digit",
+       &asn_OP_NativeInteger,
+       asn_DEF_MCC_MNC_Digit_tags_1,
+       sizeof(asn_DEF_MCC_MNC_Digit_tags_1)
+               /sizeof(asn_DEF_MCC_MNC_Digit_tags_1[0]), /* 1 */
+       asn_DEF_MCC_MNC_Digit_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MCC_MNC_Digit_tags_1)
+               /sizeof(asn_DEF_MCC_MNC_Digit_tags_1[0]), /* 1 */
+       { &asn_OER_type_MCC_MNC_Digit_constr_1, &asn_PER_type_MCC_MNC_Digit_constr_1, MCC_MNC_Digit_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/MCC-MNC-Digit.h b/src/codec_utils/RRC/MCC-MNC-Digit.h
new file mode 100644 (file)
index 0000000..16f7652
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MCC_MNC_Digit_H_
+#define        _MCC_MNC_Digit_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MCC-MNC-Digit */
+typedef long    MCC_MNC_Digit_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MCC_MNC_Digit_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MCC_MNC_Digit;
+asn_struct_free_f MCC_MNC_Digit_free;
+asn_struct_print_f MCC_MNC_Digit_print;
+asn_constr_check_f MCC_MNC_Digit_constraint;
+ber_type_decoder_f MCC_MNC_Digit_decode_ber;
+der_type_encoder_f MCC_MNC_Digit_encode_der;
+xer_type_decoder_f MCC_MNC_Digit_decode_xer;
+xer_type_encoder_f MCC_MNC_Digit_encode_xer;
+oer_type_decoder_f MCC_MNC_Digit_decode_oer;
+oer_type_encoder_f MCC_MNC_Digit_encode_oer;
+per_type_decoder_f MCC_MNC_Digit_decode_uper;
+per_type_encoder_f MCC_MNC_Digit_encode_uper;
+per_type_decoder_f MCC_MNC_Digit_decode_aper;
+per_type_encoder_f MCC_MNC_Digit_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MCC_MNC_Digit_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MCC.c b/src/codec_utils/RRC/MCC.c
new file mode 100644 (file)
index 0000000..1e9013e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MCC.h"
+
+static asn_oer_constraints_t asn_OER_type_MCC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+asn_per_constraints_t asn_PER_type_MCC_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 */
+};
+asn_TYPE_member_t asn_MBR_MCC_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_MCC_MNC_Digit,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MCC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MCC_specs_1 = {
+       sizeof(struct MCC),
+       offsetof(struct MCC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MCC = {
+       "MCC",
+       "MCC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MCC_tags_1,
+       sizeof(asn_DEF_MCC_tags_1)
+               /sizeof(asn_DEF_MCC_tags_1[0]), /* 1 */
+       asn_DEF_MCC_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MCC_tags_1)
+               /sizeof(asn_DEF_MCC_tags_1[0]), /* 1 */
+       { &asn_OER_type_MCC_constr_1, &asn_PER_type_MCC_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MCC_1,
+       1,      /* Single element */
+       &asn_SPC_MCC_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MCC.h b/src/codec_utils/RRC/MCC.h
new file mode 100644 (file)
index 0000000..6551823
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MCC_H_
+#define        _MCC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MCC-MNC-Digit.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MCC */
+typedef struct MCC {
+       A_SEQUENCE_OF(MCC_MNC_Digit_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MCC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MCC;
+extern asn_SET_OF_specifics_t asn_SPC_MCC_specs_1;
+extern asn_TYPE_member_t asn_MBR_MCC_1[1];
+extern asn_per_constraints_t asn_PER_type_MCC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MCC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MIB.c b/src/codec_utils/RRC/MIB.c
new file mode 100644 (file)
index 0000000..8bf5077
--- /dev/null
@@ -0,0 +1,427 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MIB.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.
+ */
+static int
+memb_systemFrameNumber_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 == 6)) {
+               /* 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_ssb_SubcarrierOffset_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 >= 0 && 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_spare_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 == 1)) {
+               /* 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_subCarrierSpacingCommon_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_subCarrierSpacingCommon_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_TypeA_Position_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_TypeA_Position_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cellBarred_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cellBarred_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_intraFreqReselection_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_intraFreqReselection_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_systemFrameNumber_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_systemFrameNumber_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ssb_SubcarrierOffset_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ssb_SubcarrierOffset_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spare_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_17 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 asn_INTEGER_enum_map_t asn_MAP_subCarrierSpacingCommon_value2enum_3[] = {
+       { 0,    9,      "scs15or60" },
+       { 1,    10,     "scs30or120" }
+};
+static const unsigned int asn_MAP_subCarrierSpacingCommon_enum2value_3[] = {
+       0,      /* scs15or60(0) */
+       1       /* scs30or120(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_subCarrierSpacingCommon_specs_3 = {
+       asn_MAP_subCarrierSpacingCommon_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_subCarrierSpacingCommon_enum2value_3,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_subCarrierSpacingCommon_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_subCarrierSpacingCommon_3 = {
+       "subCarrierSpacingCommon",
+       "subCarrierSpacingCommon",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_subCarrierSpacingCommon_tags_3,
+       sizeof(asn_DEF_subCarrierSpacingCommon_tags_3)
+               /sizeof(asn_DEF_subCarrierSpacingCommon_tags_3[0]) - 1, /* 1 */
+       asn_DEF_subCarrierSpacingCommon_tags_3, /* Same as above */
+       sizeof(asn_DEF_subCarrierSpacingCommon_tags_3)
+               /sizeof(asn_DEF_subCarrierSpacingCommon_tags_3[0]), /* 2 */
+       { &asn_OER_type_subCarrierSpacingCommon_constr_3, &asn_PER_type_subCarrierSpacingCommon_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_subCarrierSpacingCommon_specs_3        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_TypeA_Position_value2enum_7[] = {
+       { 0,    4,      "pos2" },
+       { 1,    4,      "pos3" }
+};
+static const unsigned int asn_MAP_dmrs_TypeA_Position_enum2value_7[] = {
+       0,      /* pos2(0) */
+       1       /* pos3(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_TypeA_Position_specs_7 = {
+       asn_MAP_dmrs_TypeA_Position_value2enum_7,       /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_TypeA_Position_enum2value_7,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_TypeA_Position_tags_7[] = {
+       (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_dmrs_TypeA_Position_7 = {
+       "dmrs-TypeA-Position",
+       "dmrs-TypeA-Position",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_TypeA_Position_tags_7,
+       sizeof(asn_DEF_dmrs_TypeA_Position_tags_7)
+               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_7[0]) - 1, /* 1 */
+       asn_DEF_dmrs_TypeA_Position_tags_7,     /* Same as above */
+       sizeof(asn_DEF_dmrs_TypeA_Position_tags_7)
+               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_7[0]), /* 2 */
+       { &asn_OER_type_dmrs_TypeA_Position_constr_7, &asn_PER_type_dmrs_TypeA_Position_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_TypeA_Position_specs_7    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cellBarred_value2enum_11[] = {
+       { 0,    6,      "barred" },
+       { 1,    9,      "notBarred" }
+};
+static const unsigned int asn_MAP_cellBarred_enum2value_11[] = {
+       0,      /* barred(0) */
+       1       /* notBarred(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cellBarred_specs_11 = {
+       asn_MAP_cellBarred_value2enum_11,       /* "tag" => N; sorted by tag */
+       asn_MAP_cellBarred_enum2value_11,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cellBarred_tags_11[] = {
+       (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_cellBarred_11 = {
+       "cellBarred",
+       "cellBarred",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cellBarred_tags_11,
+       sizeof(asn_DEF_cellBarred_tags_11)
+               /sizeof(asn_DEF_cellBarred_tags_11[0]) - 1, /* 1 */
+       asn_DEF_cellBarred_tags_11,     /* Same as above */
+       sizeof(asn_DEF_cellBarred_tags_11)
+               /sizeof(asn_DEF_cellBarred_tags_11[0]), /* 2 */
+       { &asn_OER_type_cellBarred_constr_11, &asn_PER_type_cellBarred_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cellBarred_specs_11    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_intraFreqReselection_value2enum_14[] = {
+       { 0,    7,      "allowed" },
+       { 1,    10,     "notAllowed" }
+};
+static const unsigned int asn_MAP_intraFreqReselection_enum2value_14[] = {
+       0,      /* allowed(0) */
+       1       /* notAllowed(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_intraFreqReselection_specs_14 = {
+       asn_MAP_intraFreqReselection_value2enum_14,     /* "tag" => N; sorted by tag */
+       asn_MAP_intraFreqReselection_enum2value_14,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_intraFreqReselection_tags_14[] = {
+       (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_intraFreqReselection_14 = {
+       "intraFreqReselection",
+       "intraFreqReselection",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_intraFreqReselection_tags_14,
+       sizeof(asn_DEF_intraFreqReselection_tags_14)
+               /sizeof(asn_DEF_intraFreqReselection_tags_14[0]) - 1, /* 1 */
+       asn_DEF_intraFreqReselection_tags_14,   /* Same as above */
+       sizeof(asn_DEF_intraFreqReselection_tags_14)
+               /sizeof(asn_DEF_intraFreqReselection_tags_14[0]), /* 2 */
+       { &asn_OER_type_intraFreqReselection_constr_14, &asn_PER_type_intraFreqReselection_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_intraFreqReselection_specs_14  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MIB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, systemFrameNumber),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_systemFrameNumber_constr_2, &asn_PER_memb_systemFrameNumber_constr_2,  memb_systemFrameNumber_constraint_1 },
+               0, 0, /* No default value */
+               "systemFrameNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, subCarrierSpacingCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_subCarrierSpacingCommon_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subCarrierSpacingCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, ssb_SubcarrierOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ssb_SubcarrierOffset_constr_6, &asn_PER_memb_ssb_SubcarrierOffset_constr_6,  memb_ssb_SubcarrierOffset_constraint_1 },
+               0, 0, /* No default value */
+               "ssb-SubcarrierOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, dmrs_TypeA_Position),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_TypeA_Position_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-TypeA-Position"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, pdcch_ConfigSIB1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCCH_ConfigSIB1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-ConfigSIB1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, cellBarred),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cellBarred_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellBarred"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, intraFreqReselection),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_intraFreqReselection_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraFreqReselection"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIB, spare),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_17, &asn_PER_memb_spare_constr_17,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* systemFrameNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subCarrierSpacingCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-SubcarrierOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dmrs-TypeA-Position */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pdcch-ConfigSIB1 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* cellBarred */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* intraFreqReselection */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MIB_specs_1 = {
+       sizeof(struct MIB),
+       offsetof(struct MIB, _asn_ctx),
+       asn_MAP_MIB_tag2el_1,
+       8,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MIB = {
+       "MIB",
+       "MIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MIB_tags_1,
+       sizeof(asn_DEF_MIB_tags_1)
+               /sizeof(asn_DEF_MIB_tags_1[0]), /* 1 */
+       asn_DEF_MIB_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MIB_tags_1)
+               /sizeof(asn_DEF_MIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MIB_1,
+       8,      /* Elements count */
+       &asn_SPC_MIB_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MIB.h b/src/codec_utils/RRC/MIB.h
new file mode 100644 (file)
index 0000000..4d7db04
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MIB_H_
+#define        _MIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include "PDCCH-ConfigSIB1.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MIB__subCarrierSpacingCommon {
+       MIB__subCarrierSpacingCommon_scs15or60  = 0,
+       MIB__subCarrierSpacingCommon_scs30or120 = 1
+} e_MIB__subCarrierSpacingCommon;
+typedef enum MIB__dmrs_TypeA_Position {
+       MIB__dmrs_TypeA_Position_pos2   = 0,
+       MIB__dmrs_TypeA_Position_pos3   = 1
+} e_MIB__dmrs_TypeA_Position;
+typedef enum MIB__cellBarred {
+       MIB__cellBarred_barred  = 0,
+       MIB__cellBarred_notBarred       = 1
+} e_MIB__cellBarred;
+typedef enum MIB__intraFreqReselection {
+       MIB__intraFreqReselection_allowed       = 0,
+       MIB__intraFreqReselection_notAllowed    = 1
+} e_MIB__intraFreqReselection;
+
+/* MIB */
+typedef struct MIB {
+       BIT_STRING_t     systemFrameNumber;
+       long     subCarrierSpacingCommon;
+       long     ssb_SubcarrierOffset;
+       long     dmrs_TypeA_Position;
+       PDCCH_ConfigSIB1_t       pdcch_ConfigSIB1;
+       long     cellBarred;
+       long     intraFreqReselection;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MIB_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_subCarrierSpacingCommon_3;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_TypeA_Position_7; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cellBarred_11; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_intraFreqReselection_14;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_MIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_MIB_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MIMO-LayersDL.c b/src/codec_utils/RRC/MIMO-LayersDL.c
new file mode 100644 (file)
index 0000000..bc4d384
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MIMO-LayersDL.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MIMO_LayersDL_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MIMO_LayersDL_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_MIMO_LayersDL_value2enum_1[] = {
+       { 0,    9,      "twoLayers" },
+       { 1,    10,     "fourLayers" },
+       { 2,    11,     "eightLayers" }
+};
+static const unsigned int asn_MAP_MIMO_LayersDL_enum2value_1[] = {
+       2,      /* eightLayers(2) */
+       1,      /* fourLayers(1) */
+       0       /* twoLayers(0) */
+};
+const asn_INTEGER_specifics_t asn_SPC_MIMO_LayersDL_specs_1 = {
+       asn_MAP_MIMO_LayersDL_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_MIMO_LayersDL_enum2value_1,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_MIMO_LayersDL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MIMO_LayersDL = {
+       "MIMO-LayersDL",
+       "MIMO-LayersDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_MIMO_LayersDL_tags_1,
+       sizeof(asn_DEF_MIMO_LayersDL_tags_1)
+               /sizeof(asn_DEF_MIMO_LayersDL_tags_1[0]), /* 1 */
+       asn_DEF_MIMO_LayersDL_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MIMO_LayersDL_tags_1)
+               /sizeof(asn_DEF_MIMO_LayersDL_tags_1[0]), /* 1 */
+       { &asn_OER_type_MIMO_LayersDL_constr_1, &asn_PER_type_MIMO_LayersDL_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_MIMO_LayersDL_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MIMO-LayersDL.h b/src/codec_utils/RRC/MIMO-LayersDL.h
new file mode 100644 (file)
index 0000000..bea393b
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MIMO_LayersDL_H_
+#define        _MIMO_LayersDL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MIMO_LayersDL {
+       MIMO_LayersDL_twoLayers = 0,
+       MIMO_LayersDL_fourLayers        = 1,
+       MIMO_LayersDL_eightLayers       = 2
+} e_MIMO_LayersDL;
+
+/* MIMO-LayersDL */
+typedef long    MIMO_LayersDL_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MIMO_LayersDL_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MIMO_LayersDL;
+extern const asn_INTEGER_specifics_t asn_SPC_MIMO_LayersDL_specs_1;
+asn_struct_free_f MIMO_LayersDL_free;
+asn_struct_print_f MIMO_LayersDL_print;
+asn_constr_check_f MIMO_LayersDL_constraint;
+ber_type_decoder_f MIMO_LayersDL_decode_ber;
+der_type_encoder_f MIMO_LayersDL_encode_der;
+xer_type_decoder_f MIMO_LayersDL_decode_xer;
+xer_type_encoder_f MIMO_LayersDL_encode_xer;
+oer_type_decoder_f MIMO_LayersDL_decode_oer;
+oer_type_encoder_f MIMO_LayersDL_encode_oer;
+per_type_decoder_f MIMO_LayersDL_decode_uper;
+per_type_encoder_f MIMO_LayersDL_encode_uper;
+per_type_decoder_f MIMO_LayersDL_decode_aper;
+per_type_encoder_f MIMO_LayersDL_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIMO_LayersDL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MIMO-LayersUL.c b/src/codec_utils/RRC/MIMO-LayersUL.c
new file mode 100644 (file)
index 0000000..06ea239
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MIMO-LayersUL.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MIMO_LayersUL_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MIMO_LayersUL_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_MIMO_LayersUL_value2enum_1[] = {
+       { 0,    8,      "oneLayer" },
+       { 1,    9,      "twoLayers" },
+       { 2,    10,     "fourLayers" }
+};
+static const unsigned int asn_MAP_MIMO_LayersUL_enum2value_1[] = {
+       2,      /* fourLayers(2) */
+       0,      /* oneLayer(0) */
+       1       /* twoLayers(1) */
+};
+const asn_INTEGER_specifics_t asn_SPC_MIMO_LayersUL_specs_1 = {
+       asn_MAP_MIMO_LayersUL_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_MIMO_LayersUL_enum2value_1,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_MIMO_LayersUL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MIMO_LayersUL = {
+       "MIMO-LayersUL",
+       "MIMO-LayersUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_MIMO_LayersUL_tags_1,
+       sizeof(asn_DEF_MIMO_LayersUL_tags_1)
+               /sizeof(asn_DEF_MIMO_LayersUL_tags_1[0]), /* 1 */
+       asn_DEF_MIMO_LayersUL_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MIMO_LayersUL_tags_1)
+               /sizeof(asn_DEF_MIMO_LayersUL_tags_1[0]), /* 1 */
+       { &asn_OER_type_MIMO_LayersUL_constr_1, &asn_PER_type_MIMO_LayersUL_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_MIMO_LayersUL_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MIMO-LayersUL.h b/src/codec_utils/RRC/MIMO-LayersUL.h
new file mode 100644 (file)
index 0000000..bc276f1
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MIMO_LayersUL_H_
+#define        _MIMO_LayersUL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MIMO_LayersUL {
+       MIMO_LayersUL_oneLayer  = 0,
+       MIMO_LayersUL_twoLayers = 1,
+       MIMO_LayersUL_fourLayers        = 2
+} e_MIMO_LayersUL;
+
+/* MIMO-LayersUL */
+typedef long    MIMO_LayersUL_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MIMO_LayersUL_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MIMO_LayersUL;
+extern const asn_INTEGER_specifics_t asn_SPC_MIMO_LayersUL_specs_1;
+asn_struct_free_f MIMO_LayersUL_free;
+asn_struct_print_f MIMO_LayersUL_print;
+asn_constr_check_f MIMO_LayersUL_constraint;
+ber_type_decoder_f MIMO_LayersUL_decode_ber;
+der_type_encoder_f MIMO_LayersUL_encode_der;
+xer_type_decoder_f MIMO_LayersUL_decode_xer;
+xer_type_encoder_f MIMO_LayersUL_encode_xer;
+oer_type_decoder_f MIMO_LayersUL_decode_oer;
+oer_type_encoder_f MIMO_LayersUL_encode_oer;
+per_type_decoder_f MIMO_LayersUL_decode_uper;
+per_type_encoder_f MIMO_LayersUL_encode_uper;
+per_type_decoder_f MIMO_LayersUL_decode_aper;
+per_type_encoder_f MIMO_LayersUL_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIMO_LayersUL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MIMO-ParametersPerBand.c b/src/codec_utils/RRC/MIMO-ParametersPerBand.c
new file mode 100644 (file)
index 0000000..96b02c0
--- /dev/null
@@ -0,0 +1,2119 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MIMO-ParametersPerBand.h"
+
+#include "BeamManagementSSB-CSI-RS.h"
+#include "SRS-Resources.h"
+#include "CSI-RS-ForTracking.h"
+#include "PTRS-DensityRecommendationDL.h"
+#include "PTRS-DensityRecommendationUL.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.
+ */
+/*
+ * 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_maxNumberSRS_ResourceSet_constraint_60(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 <= 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 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_maxNumberRxBeam_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 >= 2 && value <= 8)) {
+               /* 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_maxNumberCSI_RS_BFR_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 <= 64)) {
+               /* 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_maxNumberSSB_BFR_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 <= 64)) {
+               /* 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_maxNumberCSI_RS_SSB_BFR_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 <= 256)) {
+               /* 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_maxNumberSimultaneousSRS_PerCC_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 <= 4)) {
+               /* 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_maxNumberConfiguredTCIstatesPerCC_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberConfiguredTCIstatesPerCC_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberActiveTCI_PerBWP_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberActiveTCI_PerBWP_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_additionalActiveTCI_StatePDCCH_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_additionalActiveTCI_StatePDCCH_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_TransCoherence_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_TransCoherence_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_beamCorrespondence_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_beamCorrespondence_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_periodicBeamReport_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicBeamReport_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_aperiodicBeamReport_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aperiodicBeamReport_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_BeamReportPUCCH_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_BeamReportPUCCH_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_BeamReportPUSCH_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_BeamReportPUSCH_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_15kHz_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_15kHz_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_30kHz_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_30kHz_constr_38 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_60kHz_constr_42 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_42 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_120kHz_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_120kHz_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_240kHz_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_240kHz_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberNonGroupBeamReporting_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberNonGroupBeamReporting_constr_54 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_groupBeamReporting_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_groupBeamReporting_constr_58 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxNumberSRS_ResourcePerSet_BM_constr_61 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberSRS_ResourcePerSet_BM_constr_61 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberSRS_ResourceSet_constr_66 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSRS_ResourceSet_constr_66 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_twoPortsPTRS_DL_constr_70 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPortsPTRS_DL_constr_70 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoPortsPTRS_UL_constr_72 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPortsPTRS_UL_constr_72 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_15kHz_constr_77 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_15kHz_constr_77 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_30kHz_constr_81 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_30kHz_constr_81 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_60kHz_constr_86 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_86 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scs_120kHz_constr_90 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_120kHz_constr_90 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aperiodicTRS_constr_105 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aperiodicTRS_constr_105 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxNumberRxBeam_constr_32 CC_NOTUSED = {
+       { 1, 1 }        /* (2..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberRxBeam_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  2,  8 }        /* (2..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_BFR_constr_67 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_BFR_constr_67 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberSSB_BFR_constr_68 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSSB_BFR_constr_68 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_SSB_BFR_constr_69 CC_NOTUSED = {
+       { 2, 1 }        /* (1..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_SSB_BFR_constr_69 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (1..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberSimultaneousSRS_PerCC_constr_75 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSimultaneousSRS_PerCC_constr_75 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberConfiguredTCIstatesPerCC_value2enum_3[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n16" },
+       { 3,    3,      "n32" },
+       { 4,    3,      "n64" },
+       { 5,    4,      "n128" }
+};
+static const unsigned int asn_MAP_maxNumberConfiguredTCIstatesPerCC_enum2value_3[] = {
+       5,      /* n128(5) */
+       2,      /* n16(2) */
+       3,      /* n32(3) */
+       0,      /* n4(0) */
+       4,      /* n64(4) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberConfiguredTCIstatesPerCC_specs_3 = {
+       asn_MAP_maxNumberConfiguredTCIstatesPerCC_value2enum_3, /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberConfiguredTCIstatesPerCC_enum2value_3, /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberConfiguredTCIstatesPerCC_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_maxNumberConfiguredTCIstatesPerCC_3 = {
+       "maxNumberConfiguredTCIstatesPerCC",
+       "maxNumberConfiguredTCIstatesPerCC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3,
+       sizeof(asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3)
+               /sizeof(asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3[0]) - 1, /* 1 */
+       asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3,       /* Same as above */
+       sizeof(asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3)
+               /sizeof(asn_DEF_maxNumberConfiguredTCIstatesPerCC_tags_3[0]), /* 2 */
+       { &asn_OER_type_maxNumberConfiguredTCIstatesPerCC_constr_3, &asn_PER_type_maxNumberConfiguredTCIstatesPerCC_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberConfiguredTCIstatesPerCC_specs_3      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberActiveTCI_PerBWP_value2enum_10[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" }
+};
+static const unsigned int asn_MAP_maxNumberActiveTCI_PerBWP_enum2value_10[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberActiveTCI_PerBWP_specs_10 = {
+       asn_MAP_maxNumberActiveTCI_PerBWP_value2enum_10,        /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberActiveTCI_PerBWP_enum2value_10,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberActiveTCI_PerBWP_tags_10[] = {
+       (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_maxNumberActiveTCI_PerBWP_10 = {
+       "maxNumberActiveTCI-PerBWP",
+       "maxNumberActiveTCI-PerBWP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberActiveTCI_PerBWP_tags_10,
+       sizeof(asn_DEF_maxNumberActiveTCI_PerBWP_tags_10)
+               /sizeof(asn_DEF_maxNumberActiveTCI_PerBWP_tags_10[0]) - 1, /* 1 */
+       asn_DEF_maxNumberActiveTCI_PerBWP_tags_10,      /* Same as above */
+       sizeof(asn_DEF_maxNumberActiveTCI_PerBWP_tags_10)
+               /sizeof(asn_DEF_maxNumberActiveTCI_PerBWP_tags_10[0]), /* 2 */
+       { &asn_OER_type_maxNumberActiveTCI_PerBWP_constr_10, &asn_PER_type_maxNumberActiveTCI_PerBWP_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberActiveTCI_PerBWP_specs_10     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tci_StatePDSCH_2[] = {
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand__tci_StatePDSCH, maxNumberConfiguredTCIstatesPerCC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberConfiguredTCIstatesPerCC_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberConfiguredTCIstatesPerCC"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand__tci_StatePDSCH, maxNumberActiveTCI_PerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberActiveTCI_PerBWP_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberActiveTCI-PerBWP"
+               },
+};
+static const int asn_MAP_tci_StatePDSCH_oms_2[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_tci_StatePDSCH_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_tci_StatePDSCH_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberConfiguredTCIstatesPerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* maxNumberActiveTCI-PerBWP */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_tci_StatePDSCH_specs_2 = {
+       sizeof(struct MIMO_ParametersPerBand__tci_StatePDSCH),
+       offsetof(struct MIMO_ParametersPerBand__tci_StatePDSCH, _asn_ctx),
+       asn_MAP_tci_StatePDSCH_tag2el_2,
+       2,      /* Count of tags in the map */
+       asn_MAP_tci_StatePDSCH_oms_2,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tci_StatePDSCH_2 = {
+       "tci-StatePDSCH",
+       "tci-StatePDSCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_tci_StatePDSCH_tags_2,
+       sizeof(asn_DEF_tci_StatePDSCH_tags_2)
+               /sizeof(asn_DEF_tci_StatePDSCH_tags_2[0]) - 1, /* 1 */
+       asn_DEF_tci_StatePDSCH_tags_2,  /* Same as above */
+       sizeof(asn_DEF_tci_StatePDSCH_tags_2)
+               /sizeof(asn_DEF_tci_StatePDSCH_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_tci_StatePDSCH_2,
+       2,      /* Elements count */
+       &asn_SPC_tci_StatePDSCH_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_additionalActiveTCI_StatePDCCH_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_additionalActiveTCI_StatePDCCH_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_additionalActiveTCI_StatePDCCH_specs_15 = {
+       asn_MAP_additionalActiveTCI_StatePDCCH_value2enum_15,   /* "tag" => N; sorted by tag */
+       asn_MAP_additionalActiveTCI_StatePDCCH_enum2value_15,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_additionalActiveTCI_StatePDCCH_tags_15[] = {
+       (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_additionalActiveTCI_StatePDCCH_15 = {
+       "additionalActiveTCI-StatePDCCH",
+       "additionalActiveTCI-StatePDCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_additionalActiveTCI_StatePDCCH_tags_15,
+       sizeof(asn_DEF_additionalActiveTCI_StatePDCCH_tags_15)
+               /sizeof(asn_DEF_additionalActiveTCI_StatePDCCH_tags_15[0]) - 1, /* 1 */
+       asn_DEF_additionalActiveTCI_StatePDCCH_tags_15, /* Same as above */
+       sizeof(asn_DEF_additionalActiveTCI_StatePDCCH_tags_15)
+               /sizeof(asn_DEF_additionalActiveTCI_StatePDCCH_tags_15[0]), /* 2 */
+       { &asn_OER_type_additionalActiveTCI_StatePDCCH_constr_15, &asn_PER_type_additionalActiveTCI_StatePDCCH_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_additionalActiveTCI_StatePDCCH_specs_15        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_TransCoherence_value2enum_17[] = {
+       { 0,    11,     "nonCoherent" },
+       { 1,    15,     "partialCoherent" },
+       { 2,    12,     "fullCoherent" }
+};
+static const unsigned int asn_MAP_pusch_TransCoherence_enum2value_17[] = {
+       2,      /* fullCoherent(2) */
+       0,      /* nonCoherent(0) */
+       1       /* partialCoherent(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_TransCoherence_specs_17 = {
+       asn_MAP_pusch_TransCoherence_value2enum_17,     /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_TransCoherence_enum2value_17,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_TransCoherence_tags_17[] = {
+       (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_pusch_TransCoherence_17 = {
+       "pusch-TransCoherence",
+       "pusch-TransCoherence",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_TransCoherence_tags_17,
+       sizeof(asn_DEF_pusch_TransCoherence_tags_17)
+               /sizeof(asn_DEF_pusch_TransCoherence_tags_17[0]) - 1, /* 1 */
+       asn_DEF_pusch_TransCoherence_tags_17,   /* Same as above */
+       sizeof(asn_DEF_pusch_TransCoherence_tags_17)
+               /sizeof(asn_DEF_pusch_TransCoherence_tags_17[0]), /* 2 */
+       { &asn_OER_type_pusch_TransCoherence_constr_17, &asn_PER_type_pusch_TransCoherence_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_TransCoherence_specs_17  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_beamCorrespondence_value2enum_21[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_beamCorrespondence_enum2value_21[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_beamCorrespondence_specs_21 = {
+       asn_MAP_beamCorrespondence_value2enum_21,       /* "tag" => N; sorted by tag */
+       asn_MAP_beamCorrespondence_enum2value_21,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_beamCorrespondence_tags_21[] = {
+       (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_beamCorrespondence_21 = {
+       "beamCorrespondence",
+       "beamCorrespondence",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_beamCorrespondence_tags_21,
+       sizeof(asn_DEF_beamCorrespondence_tags_21)
+               /sizeof(asn_DEF_beamCorrespondence_tags_21[0]) - 1, /* 1 */
+       asn_DEF_beamCorrespondence_tags_21,     /* Same as above */
+       sizeof(asn_DEF_beamCorrespondence_tags_21)
+               /sizeof(asn_DEF_beamCorrespondence_tags_21[0]), /* 2 */
+       { &asn_OER_type_beamCorrespondence_constr_21, &asn_PER_type_beamCorrespondence_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_beamCorrespondence_specs_21    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_periodicBeamReport_value2enum_23[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_periodicBeamReport_enum2value_23[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_periodicBeamReport_specs_23 = {
+       asn_MAP_periodicBeamReport_value2enum_23,       /* "tag" => N; sorted by tag */
+       asn_MAP_periodicBeamReport_enum2value_23,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_periodicBeamReport_tags_23[] = {
+       (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_periodicBeamReport_23 = {
+       "periodicBeamReport",
+       "periodicBeamReport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_periodicBeamReport_tags_23,
+       sizeof(asn_DEF_periodicBeamReport_tags_23)
+               /sizeof(asn_DEF_periodicBeamReport_tags_23[0]) - 1, /* 1 */
+       asn_DEF_periodicBeamReport_tags_23,     /* Same as above */
+       sizeof(asn_DEF_periodicBeamReport_tags_23)
+               /sizeof(asn_DEF_periodicBeamReport_tags_23[0]), /* 2 */
+       { &asn_OER_type_periodicBeamReport_constr_23, &asn_PER_type_periodicBeamReport_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_periodicBeamReport_specs_23    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aperiodicBeamReport_value2enum_25[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_aperiodicBeamReport_enum2value_25[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aperiodicBeamReport_specs_25 = {
+       asn_MAP_aperiodicBeamReport_value2enum_25,      /* "tag" => N; sorted by tag */
+       asn_MAP_aperiodicBeamReport_enum2value_25,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aperiodicBeamReport_tags_25[] = {
+       (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_aperiodicBeamReport_25 = {
+       "aperiodicBeamReport",
+       "aperiodicBeamReport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aperiodicBeamReport_tags_25,
+       sizeof(asn_DEF_aperiodicBeamReport_tags_25)
+               /sizeof(asn_DEF_aperiodicBeamReport_tags_25[0]) - 1, /* 1 */
+       asn_DEF_aperiodicBeamReport_tags_25,    /* Same as above */
+       sizeof(asn_DEF_aperiodicBeamReport_tags_25)
+               /sizeof(asn_DEF_aperiodicBeamReport_tags_25[0]), /* 2 */
+       { &asn_OER_type_aperiodicBeamReport_constr_25, &asn_PER_type_aperiodicBeamReport_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aperiodicBeamReport_specs_25   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_BeamReportPUCCH_value2enum_27[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_BeamReportPUCCH_enum2value_27[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_BeamReportPUCCH_specs_27 = {
+       asn_MAP_sp_BeamReportPUCCH_value2enum_27,       /* "tag" => N; sorted by tag */
+       asn_MAP_sp_BeamReportPUCCH_enum2value_27,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_BeamReportPUCCH_tags_27[] = {
+       (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_sp_BeamReportPUCCH_27 = {
+       "sp-BeamReportPUCCH",
+       "sp-BeamReportPUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_BeamReportPUCCH_tags_27,
+       sizeof(asn_DEF_sp_BeamReportPUCCH_tags_27)
+               /sizeof(asn_DEF_sp_BeamReportPUCCH_tags_27[0]) - 1, /* 1 */
+       asn_DEF_sp_BeamReportPUCCH_tags_27,     /* Same as above */
+       sizeof(asn_DEF_sp_BeamReportPUCCH_tags_27)
+               /sizeof(asn_DEF_sp_BeamReportPUCCH_tags_27[0]), /* 2 */
+       { &asn_OER_type_sp_BeamReportPUCCH_constr_27, &asn_PER_type_sp_BeamReportPUCCH_constr_27, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_BeamReportPUCCH_specs_27    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_BeamReportPUSCH_value2enum_29[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_BeamReportPUSCH_enum2value_29[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_BeamReportPUSCH_specs_29 = {
+       asn_MAP_sp_BeamReportPUSCH_value2enum_29,       /* "tag" => N; sorted by tag */
+       asn_MAP_sp_BeamReportPUSCH_enum2value_29,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_BeamReportPUSCH_tags_29[] = {
+       (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_sp_BeamReportPUSCH_29 = {
+       "sp-BeamReportPUSCH",
+       "sp-BeamReportPUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_BeamReportPUSCH_tags_29,
+       sizeof(asn_DEF_sp_BeamReportPUSCH_tags_29)
+               /sizeof(asn_DEF_sp_BeamReportPUSCH_tags_29[0]) - 1, /* 1 */
+       asn_DEF_sp_BeamReportPUSCH_tags_29,     /* Same as above */
+       sizeof(asn_DEF_sp_BeamReportPUSCH_tags_29)
+               /sizeof(asn_DEF_sp_BeamReportPUSCH_tags_29[0]), /* 2 */
+       { &asn_OER_type_sp_BeamReportPUSCH_constr_29, &asn_PER_type_sp_BeamReportPUSCH_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_BeamReportPUSCH_specs_29    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_15kHz_value2enum_34[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n7" },
+       { 2,    3,      "n14" }
+};
+static const unsigned int asn_MAP_scs_15kHz_enum2value_34[] = {
+       2,      /* n14(2) */
+       0,      /* n4(0) */
+       1       /* n7(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_15kHz_specs_34 = {
+       asn_MAP_scs_15kHz_value2enum_34,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_15kHz_enum2value_34,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_15kHz_tags_34[] = {
+       (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_scs_15kHz_34 = {
+       "scs-15kHz",
+       "scs-15kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_15kHz_tags_34,
+       sizeof(asn_DEF_scs_15kHz_tags_34)
+               /sizeof(asn_DEF_scs_15kHz_tags_34[0]) - 1, /* 1 */
+       asn_DEF_scs_15kHz_tags_34,      /* Same as above */
+       sizeof(asn_DEF_scs_15kHz_tags_34)
+               /sizeof(asn_DEF_scs_15kHz_tags_34[0]), /* 2 */
+       { &asn_OER_type_scs_15kHz_constr_34, &asn_PER_type_scs_15kHz_constr_34, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_15kHz_specs_34     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_30kHz_value2enum_38[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n7" },
+       { 2,    3,      "n14" }
+};
+static const unsigned int asn_MAP_scs_30kHz_enum2value_38[] = {
+       2,      /* n14(2) */
+       0,      /* n4(0) */
+       1       /* n7(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_30kHz_specs_38 = {
+       asn_MAP_scs_30kHz_value2enum_38,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_30kHz_enum2value_38,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_30kHz_tags_38[] = {
+       (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_scs_30kHz_38 = {
+       "scs-30kHz",
+       "scs-30kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_30kHz_tags_38,
+       sizeof(asn_DEF_scs_30kHz_tags_38)
+               /sizeof(asn_DEF_scs_30kHz_tags_38[0]) - 1, /* 1 */
+       asn_DEF_scs_30kHz_tags_38,      /* Same as above */
+       sizeof(asn_DEF_scs_30kHz_tags_38)
+               /sizeof(asn_DEF_scs_30kHz_tags_38[0]), /* 2 */
+       { &asn_OER_type_scs_30kHz_constr_38, &asn_PER_type_scs_30kHz_constr_38, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_30kHz_specs_38     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_42[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n7" },
+       { 2,    3,      "n14" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_42[] = {
+       2,      /* n14(2) */
+       0,      /* n4(0) */
+       1       /* n7(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_42 = {
+       asn_MAP_scs_60kHz_value2enum_42,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_42,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_42[] = {
+       (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_scs_60kHz_42 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_42,
+       sizeof(asn_DEF_scs_60kHz_tags_42)
+               /sizeof(asn_DEF_scs_60kHz_tags_42[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_42,      /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_42)
+               /sizeof(asn_DEF_scs_60kHz_tags_42[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_42, &asn_PER_type_scs_60kHz_constr_42, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_42     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_120kHz_value2enum_46[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n7" },
+       { 2,    3,      "n14" }
+};
+static const unsigned int asn_MAP_scs_120kHz_enum2value_46[] = {
+       2,      /* n14(2) */
+       0,      /* n4(0) */
+       1       /* n7(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_120kHz_specs_46 = {
+       asn_MAP_scs_120kHz_value2enum_46,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_120kHz_enum2value_46,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_120kHz_tags_46[] = {
+       (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_scs_120kHz_46 = {
+       "scs-120kHz",
+       "scs-120kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_120kHz_tags_46,
+       sizeof(asn_DEF_scs_120kHz_tags_46)
+               /sizeof(asn_DEF_scs_120kHz_tags_46[0]) - 1, /* 1 */
+       asn_DEF_scs_120kHz_tags_46,     /* Same as above */
+       sizeof(asn_DEF_scs_120kHz_tags_46)
+               /sizeof(asn_DEF_scs_120kHz_tags_46[0]), /* 2 */
+       { &asn_OER_type_scs_120kHz_constr_46, &asn_PER_type_scs_120kHz_constr_46, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_120kHz_specs_46    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_240kHz_value2enum_50[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n7" },
+       { 2,    3,      "n14" }
+};
+static const unsigned int asn_MAP_scs_240kHz_enum2value_50[] = {
+       2,      /* n14(2) */
+       0,      /* n4(0) */
+       1       /* n7(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_240kHz_specs_50 = {
+       asn_MAP_scs_240kHz_value2enum_50,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_240kHz_enum2value_50,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_240kHz_tags_50[] = {
+       (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_scs_240kHz_50 = {
+       "scs-240kHz",
+       "scs-240kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_240kHz_tags_50,
+       sizeof(asn_DEF_scs_240kHz_tags_50)
+               /sizeof(asn_DEF_scs_240kHz_tags_50[0]) - 1, /* 1 */
+       asn_DEF_scs_240kHz_tags_50,     /* Same as above */
+       sizeof(asn_DEF_scs_240kHz_tags_50)
+               /sizeof(asn_DEF_scs_240kHz_tags_50[0]), /* 2 */
+       { &asn_OER_type_scs_240kHz_constr_50, &asn_PER_type_scs_240kHz_constr_50, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_240kHz_specs_50    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_maxNumberRxTxBeamSwitchDL_33[] = {
+       { ATF_POINTER, 5, offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_15kHz_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 4, offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_30kHz_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_120kHz_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, scs_240kHz),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_240kHz_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-240kHz"
+               },
+};
+static const int asn_MAP_maxNumberRxTxBeamSwitchDL_oms_33[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_maxNumberRxTxBeamSwitchDL_tag2el_33[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* scs-120kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* scs-240kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_maxNumberRxTxBeamSwitchDL_specs_33 = {
+       sizeof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL),
+       offsetof(struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL, _asn_ctx),
+       asn_MAP_maxNumberRxTxBeamSwitchDL_tag2el_33,
+       5,      /* Count of tags in the map */
+       asn_MAP_maxNumberRxTxBeamSwitchDL_oms_33,       /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_maxNumberRxTxBeamSwitchDL_33 = {
+       "maxNumberRxTxBeamSwitchDL",
+       "maxNumberRxTxBeamSwitchDL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33,
+       sizeof(asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33)
+               /sizeof(asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33[0]) - 1, /* 1 */
+       asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33,      /* Same as above */
+       sizeof(asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33)
+               /sizeof(asn_DEF_maxNumberRxTxBeamSwitchDL_tags_33[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_maxNumberRxTxBeamSwitchDL_33,
+       5,      /* Elements count */
+       &asn_SPC_maxNumberRxTxBeamSwitchDL_specs_33     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberNonGroupBeamReporting_value2enum_54[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_maxNumberNonGroupBeamReporting_enum2value_54[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberNonGroupBeamReporting_specs_54 = {
+       asn_MAP_maxNumberNonGroupBeamReporting_value2enum_54,   /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberNonGroupBeamReporting_enum2value_54,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberNonGroupBeamReporting_tags_54[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_maxNumberNonGroupBeamReporting_54 = {
+       "maxNumberNonGroupBeamReporting",
+       "maxNumberNonGroupBeamReporting",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberNonGroupBeamReporting_tags_54,
+       sizeof(asn_DEF_maxNumberNonGroupBeamReporting_tags_54)
+               /sizeof(asn_DEF_maxNumberNonGroupBeamReporting_tags_54[0]) - 1, /* 1 */
+       asn_DEF_maxNumberNonGroupBeamReporting_tags_54, /* Same as above */
+       sizeof(asn_DEF_maxNumberNonGroupBeamReporting_tags_54)
+               /sizeof(asn_DEF_maxNumberNonGroupBeamReporting_tags_54[0]), /* 2 */
+       { &asn_OER_type_maxNumberNonGroupBeamReporting_constr_54, &asn_PER_type_maxNumberNonGroupBeamReporting_constr_54, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberNonGroupBeamReporting_specs_54        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_groupBeamReporting_value2enum_58[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_groupBeamReporting_enum2value_58[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_groupBeamReporting_specs_58 = {
+       asn_MAP_groupBeamReporting_value2enum_58,       /* "tag" => N; sorted by tag */
+       asn_MAP_groupBeamReporting_enum2value_58,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_groupBeamReporting_tags_58[] = {
+       (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_groupBeamReporting_58 = {
+       "groupBeamReporting",
+       "groupBeamReporting",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_groupBeamReporting_tags_58,
+       sizeof(asn_DEF_groupBeamReporting_tags_58)
+               /sizeof(asn_DEF_groupBeamReporting_tags_58[0]) - 1, /* 1 */
+       asn_DEF_groupBeamReporting_tags_58,     /* Same as above */
+       sizeof(asn_DEF_groupBeamReporting_tags_58)
+               /sizeof(asn_DEF_groupBeamReporting_tags_58[0]), /* 2 */
+       { &asn_OER_type_groupBeamReporting_constr_58, &asn_PER_type_groupBeamReporting_constr_58, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_groupBeamReporting_specs_58    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberSRS_ResourcePerSet_BM_value2enum_61[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" },
+       { 3,    3,      "n16" }
+};
+static const unsigned int asn_MAP_maxNumberSRS_ResourcePerSet_BM_enum2value_61[] = {
+       3,      /* n16(3) */
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberSRS_ResourcePerSet_BM_specs_61 = {
+       asn_MAP_maxNumberSRS_ResourcePerSet_BM_value2enum_61,   /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberSRS_ResourcePerSet_BM_enum2value_61,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61[] = {
+       (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_maxNumberSRS_ResourcePerSet_BM_61 = {
+       "maxNumberSRS-ResourcePerSet-BM",
+       "maxNumberSRS-ResourcePerSet-BM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61,
+       sizeof(asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61)
+               /sizeof(asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61[0]) - 1, /* 1 */
+       asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61, /* Same as above */
+       sizeof(asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61)
+               /sizeof(asn_DEF_maxNumberSRS_ResourcePerSet_BM_tags_61[0]), /* 2 */
+       { &asn_OER_type_maxNumberSRS_ResourcePerSet_BM_constr_61, &asn_PER_type_maxNumberSRS_ResourcePerSet_BM_constr_61, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberSRS_ResourcePerSet_BM_specs_61        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uplinkBeamManagement_60[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MIMO_ParametersPerBand__uplinkBeamManagement, maxNumberSRS_ResourcePerSet_BM),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberSRS_ResourcePerSet_BM_61,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberSRS-ResourcePerSet-BM"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MIMO_ParametersPerBand__uplinkBeamManagement, maxNumberSRS_ResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSRS_ResourceSet_constr_66, &asn_PER_memb_maxNumberSRS_ResourceSet_constr_66,  memb_maxNumberSRS_ResourceSet_constraint_60 },
+               0, 0, /* No default value */
+               "maxNumberSRS-ResourceSet"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkBeamManagement_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_uplinkBeamManagement_tag2el_60[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberSRS-ResourcePerSet-BM */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* maxNumberSRS-ResourceSet */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_uplinkBeamManagement_specs_60 = {
+       sizeof(struct MIMO_ParametersPerBand__uplinkBeamManagement),
+       offsetof(struct MIMO_ParametersPerBand__uplinkBeamManagement, _asn_ctx),
+       asn_MAP_uplinkBeamManagement_tag2el_60,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkBeamManagement_60 = {
+       "uplinkBeamManagement",
+       "uplinkBeamManagement",
+       &asn_OP_SEQUENCE,
+       asn_DEF_uplinkBeamManagement_tags_60,
+       sizeof(asn_DEF_uplinkBeamManagement_tags_60)
+               /sizeof(asn_DEF_uplinkBeamManagement_tags_60[0]) - 1, /* 1 */
+       asn_DEF_uplinkBeamManagement_tags_60,   /* Same as above */
+       sizeof(asn_DEF_uplinkBeamManagement_tags_60)
+               /sizeof(asn_DEF_uplinkBeamManagement_tags_60[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_uplinkBeamManagement_60,
+       2,      /* Elements count */
+       &asn_SPC_uplinkBeamManagement_specs_60  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPortsPTRS_DL_value2enum_70[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPortsPTRS_DL_enum2value_70[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPortsPTRS_DL_specs_70 = {
+       asn_MAP_twoPortsPTRS_DL_value2enum_70,  /* "tag" => N; sorted by tag */
+       asn_MAP_twoPortsPTRS_DL_enum2value_70,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPortsPTRS_DL_tags_70[] = {
+       (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_twoPortsPTRS_DL_70 = {
+       "twoPortsPTRS-DL",
+       "twoPortsPTRS-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPortsPTRS_DL_tags_70,
+       sizeof(asn_DEF_twoPortsPTRS_DL_tags_70)
+               /sizeof(asn_DEF_twoPortsPTRS_DL_tags_70[0]) - 1, /* 1 */
+       asn_DEF_twoPortsPTRS_DL_tags_70,        /* Same as above */
+       sizeof(asn_DEF_twoPortsPTRS_DL_tags_70)
+               /sizeof(asn_DEF_twoPortsPTRS_DL_tags_70[0]), /* 2 */
+       { &asn_OER_type_twoPortsPTRS_DL_constr_70, &asn_PER_type_twoPortsPTRS_DL_constr_70, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPortsPTRS_DL_specs_70       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPortsPTRS_UL_value2enum_72[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPortsPTRS_UL_enum2value_72[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPortsPTRS_UL_specs_72 = {
+       asn_MAP_twoPortsPTRS_UL_value2enum_72,  /* "tag" => N; sorted by tag */
+       asn_MAP_twoPortsPTRS_UL_enum2value_72,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPortsPTRS_UL_tags_72[] = {
+       (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_twoPortsPTRS_UL_72 = {
+       "twoPortsPTRS-UL",
+       "twoPortsPTRS-UL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPortsPTRS_UL_tags_72,
+       sizeof(asn_DEF_twoPortsPTRS_UL_tags_72)
+               /sizeof(asn_DEF_twoPortsPTRS_UL_tags_72[0]) - 1, /* 1 */
+       asn_DEF_twoPortsPTRS_UL_tags_72,        /* Same as above */
+       sizeof(asn_DEF_twoPortsPTRS_UL_tags_72)
+               /sizeof(asn_DEF_twoPortsPTRS_UL_tags_72[0]), /* 2 */
+       { &asn_OER_type_twoPortsPTRS_UL_constr_72, &asn_PER_type_twoPortsPTRS_UL_constr_72, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPortsPTRS_UL_specs_72       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_15kHz_value2enum_77[] = {
+       { 0,    4,      "sym2" },
+       { 1,    4,      "sym4" },
+       { 2,    4,      "sym8" }
+};
+static const unsigned int asn_MAP_scs_15kHz_enum2value_77[] = {
+       0,      /* sym2(0) */
+       1,      /* sym4(1) */
+       2       /* sym8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_15kHz_specs_77 = {
+       asn_MAP_scs_15kHz_value2enum_77,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_15kHz_enum2value_77,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_15kHz_tags_77[] = {
+       (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_scs_15kHz_77 = {
+       "scs-15kHz",
+       "scs-15kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_15kHz_tags_77,
+       sizeof(asn_DEF_scs_15kHz_tags_77)
+               /sizeof(asn_DEF_scs_15kHz_tags_77[0]) - 1, /* 1 */
+       asn_DEF_scs_15kHz_tags_77,      /* Same as above */
+       sizeof(asn_DEF_scs_15kHz_tags_77)
+               /sizeof(asn_DEF_scs_15kHz_tags_77[0]), /* 2 */
+       { &asn_OER_type_scs_15kHz_constr_77, &asn_PER_type_scs_15kHz_constr_77, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_15kHz_specs_77     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_30kHz_value2enum_81[] = {
+       { 0,    4,      "sym4" },
+       { 1,    4,      "sym8" },
+       { 2,    5,      "sym14" },
+       { 3,    5,      "sym28" }
+};
+static const unsigned int asn_MAP_scs_30kHz_enum2value_81[] = {
+       2,      /* sym14(2) */
+       3,      /* sym28(3) */
+       0,      /* sym4(0) */
+       1       /* sym8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_30kHz_specs_81 = {
+       asn_MAP_scs_30kHz_value2enum_81,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_30kHz_enum2value_81,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_30kHz_tags_81[] = {
+       (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_scs_30kHz_81 = {
+       "scs-30kHz",
+       "scs-30kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_30kHz_tags_81,
+       sizeof(asn_DEF_scs_30kHz_tags_81)
+               /sizeof(asn_DEF_scs_30kHz_tags_81[0]) - 1, /* 1 */
+       asn_DEF_scs_30kHz_tags_81,      /* Same as above */
+       sizeof(asn_DEF_scs_30kHz_tags_81)
+               /sizeof(asn_DEF_scs_30kHz_tags_81[0]), /* 2 */
+       { &asn_OER_type_scs_30kHz_constr_81, &asn_PER_type_scs_30kHz_constr_81, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_30kHz_specs_81     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_86[] = {
+       { 0,    4,      "sym8" },
+       { 1,    5,      "sym14" },
+       { 2,    5,      "sym28" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_86[] = {
+       1,      /* sym14(1) */
+       2,      /* sym28(2) */
+       0       /* sym8(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_86 = {
+       asn_MAP_scs_60kHz_value2enum_86,        /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_86,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_86[] = {
+       (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_scs_60kHz_86 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_86,
+       sizeof(asn_DEF_scs_60kHz_tags_86)
+               /sizeof(asn_DEF_scs_60kHz_tags_86[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_86,      /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_86)
+               /sizeof(asn_DEF_scs_60kHz_tags_86[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_86, &asn_PER_type_scs_60kHz_constr_86, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_86     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_120kHz_value2enum_90[] = {
+       { 0,    5,      "sym14" },
+       { 1,    5,      "sym28" },
+       { 2,    5,      "sym56" }
+};
+static const unsigned int asn_MAP_scs_120kHz_enum2value_90[] = {
+       0,      /* sym14(0) */
+       1,      /* sym28(1) */
+       2       /* sym56(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_120kHz_specs_90 = {
+       asn_MAP_scs_120kHz_value2enum_90,       /* "tag" => N; sorted by tag */
+       asn_MAP_scs_120kHz_enum2value_90,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_120kHz_tags_90[] = {
+       (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_scs_120kHz_90 = {
+       "scs-120kHz",
+       "scs-120kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_120kHz_tags_90,
+       sizeof(asn_DEF_scs_120kHz_tags_90)
+               /sizeof(asn_DEF_scs_120kHz_tags_90[0]) - 1, /* 1 */
+       asn_DEF_scs_120kHz_tags_90,     /* Same as above */
+       sizeof(asn_DEF_scs_120kHz_tags_90)
+               /sizeof(asn_DEF_scs_120kHz_tags_90[0]), /* 2 */
+       { &asn_OER_type_scs_120kHz_constr_90, &asn_PER_type_scs_120kHz_constr_90, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_120kHz_specs_90    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_beamReportTiming_76[] = {
+       { ATF_POINTER, 4, offsetof(struct MIMO_ParametersPerBand__beamReportTiming, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_15kHz_77,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct MIMO_ParametersPerBand__beamReportTiming, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_30kHz_81,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand__beamReportTiming, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_86,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand__beamReportTiming, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_120kHz_90,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_beamReportTiming_oms_76[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_beamReportTiming_tags_76[] = {
+       (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_beamReportTiming_tag2el_76[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_beamReportTiming_specs_76 = {
+       sizeof(struct MIMO_ParametersPerBand__beamReportTiming),
+       offsetof(struct MIMO_ParametersPerBand__beamReportTiming, _asn_ctx),
+       asn_MAP_beamReportTiming_tag2el_76,
+       4,      /* Count of tags in the map */
+       asn_MAP_beamReportTiming_oms_76,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_beamReportTiming_76 = {
+       "beamReportTiming",
+       "beamReportTiming",
+       &asn_OP_SEQUENCE,
+       asn_DEF_beamReportTiming_tags_76,
+       sizeof(asn_DEF_beamReportTiming_tags_76)
+               /sizeof(asn_DEF_beamReportTiming_tags_76[0]) - 1, /* 1 */
+       asn_DEF_beamReportTiming_tags_76,       /* Same as above */
+       sizeof(asn_DEF_beamReportTiming_tags_76)
+               /sizeof(asn_DEF_beamReportTiming_tags_76[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_beamReportTiming_76,
+       4,      /* Elements count */
+       &asn_SPC_beamReportTiming_specs_76      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ptrs_DensityRecommendationSetDL_94[] = {
+       { ATF_POINTER, 4, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_ptrs_DensityRecommendationSetDL_oms_94[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_ptrs_DensityRecommendationSetDL_tags_94[] = {
+       (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ptrs_DensityRecommendationSetDL_tag2el_94[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ptrs_DensityRecommendationSetDL_specs_94 = {
+       sizeof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL),
+       offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL, _asn_ctx),
+       asn_MAP_ptrs_DensityRecommendationSetDL_tag2el_94,
+       4,      /* Count of tags in the map */
+       asn_MAP_ptrs_DensityRecommendationSetDL_oms_94, /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ptrs_DensityRecommendationSetDL_94 = {
+       "ptrs-DensityRecommendationSetDL",
+       "ptrs-DensityRecommendationSetDL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ptrs_DensityRecommendationSetDL_tags_94,
+       sizeof(asn_DEF_ptrs_DensityRecommendationSetDL_tags_94)
+               /sizeof(asn_DEF_ptrs_DensityRecommendationSetDL_tags_94[0]) - 1, /* 1 */
+       asn_DEF_ptrs_DensityRecommendationSetDL_tags_94,        /* Same as above */
+       sizeof(asn_DEF_ptrs_DensityRecommendationSetDL_tags_94)
+               /sizeof(asn_DEF_ptrs_DensityRecommendationSetDL_tags_94[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ptrs_DensityRecommendationSetDL_94,
+       4,      /* Elements count */
+       &asn_SPC_ptrs_DensityRecommendationSetDL_specs_94       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ptrs_DensityRecommendationSetUL_99[] = {
+       { ATF_POINTER, 4, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL, scs_15kHz),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-15kHz"
+               },
+       { ATF_POINTER, 3, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL, scs_30kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-30kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL, scs_120kHz),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PTRS_DensityRecommendationUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-120kHz"
+               },
+};
+static const int asn_MAP_ptrs_DensityRecommendationSetUL_oms_99[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_ptrs_DensityRecommendationSetUL_tags_99[] = {
+       (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ptrs_DensityRecommendationSetUL_tag2el_99[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* scs-15kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-30kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* scs-120kHz */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ptrs_DensityRecommendationSetUL_specs_99 = {
+       sizeof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL),
+       offsetof(struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL, _asn_ctx),
+       asn_MAP_ptrs_DensityRecommendationSetUL_tag2el_99,
+       4,      /* Count of tags in the map */
+       asn_MAP_ptrs_DensityRecommendationSetUL_oms_99, /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ptrs_DensityRecommendationSetUL_99 = {
+       "ptrs-DensityRecommendationSetUL",
+       "ptrs-DensityRecommendationSetUL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ptrs_DensityRecommendationSetUL_tags_99,
+       sizeof(asn_DEF_ptrs_DensityRecommendationSetUL_tags_99)
+               /sizeof(asn_DEF_ptrs_DensityRecommendationSetUL_tags_99[0]) - 1, /* 1 */
+       asn_DEF_ptrs_DensityRecommendationSetUL_tags_99,        /* Same as above */
+       sizeof(asn_DEF_ptrs_DensityRecommendationSetUL_tags_99)
+               /sizeof(asn_DEF_ptrs_DensityRecommendationSetUL_tags_99[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ptrs_DensityRecommendationSetUL_99,
+       4,      /* Elements count */
+       &asn_SPC_ptrs_DensityRecommendationSetUL_specs_99       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aperiodicTRS_value2enum_105[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_aperiodicTRS_enum2value_105[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aperiodicTRS_specs_105 = {
+       asn_MAP_aperiodicTRS_value2enum_105,    /* "tag" => N; sorted by tag */
+       asn_MAP_aperiodicTRS_enum2value_105,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aperiodicTRS_tags_105[] = {
+       (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodicTRS_105 = {
+       "aperiodicTRS",
+       "aperiodicTRS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aperiodicTRS_tags_105,
+       sizeof(asn_DEF_aperiodicTRS_tags_105)
+               /sizeof(asn_DEF_aperiodicTRS_tags_105[0]) - 1, /* 1 */
+       asn_DEF_aperiodicTRS_tags_105,  /* Same as above */
+       sizeof(asn_DEF_aperiodicTRS_tags_105)
+               /sizeof(asn_DEF_aperiodicTRS_tags_105[0]), /* 2 */
+       { &asn_OER_type_aperiodicTRS_constr_105, &asn_PER_type_aperiodicTRS_constr_105, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aperiodicTRS_specs_105 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MIMO_ParametersPerBand_1[] = {
+       { ATF_POINTER, 26, offsetof(struct MIMO_ParametersPerBand, tci_StatePDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_tci_StatePDSCH_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tci-StatePDSCH"
+               },
+       { ATF_POINTER, 25, offsetof(struct MIMO_ParametersPerBand, additionalActiveTCI_StatePDCCH),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_additionalActiveTCI_StatePDCCH_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalActiveTCI-StatePDCCH"
+               },
+       { ATF_POINTER, 24, offsetof(struct MIMO_ParametersPerBand, pusch_TransCoherence),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_TransCoherence_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-TransCoherence"
+               },
+       { ATF_POINTER, 23, offsetof(struct MIMO_ParametersPerBand, beamCorrespondence),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_beamCorrespondence_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamCorrespondence"
+               },
+       { ATF_POINTER, 22, offsetof(struct MIMO_ParametersPerBand, periodicBeamReport),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_periodicBeamReport_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicBeamReport"
+               },
+       { ATF_POINTER, 21, offsetof(struct MIMO_ParametersPerBand, aperiodicBeamReport),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aperiodicBeamReport_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodicBeamReport"
+               },
+       { ATF_POINTER, 20, offsetof(struct MIMO_ParametersPerBand, sp_BeamReportPUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_BeamReportPUCCH_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-BeamReportPUCCH"
+               },
+       { ATF_POINTER, 19, offsetof(struct MIMO_ParametersPerBand, sp_BeamReportPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_BeamReportPUSCH_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-BeamReportPUSCH"
+               },
+       { ATF_POINTER, 18, offsetof(struct MIMO_ParametersPerBand, beamManagementSSB_CSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BeamManagementSSB_CSI_RS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamManagementSSB-CSI-RS"
+               },
+       { ATF_POINTER, 17, offsetof(struct MIMO_ParametersPerBand, maxNumberRxBeam),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberRxBeam_constr_32, &asn_PER_memb_maxNumberRxBeam_constr_32,  memb_maxNumberRxBeam_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberRxBeam"
+               },
+       { ATF_POINTER, 16, offsetof(struct MIMO_ParametersPerBand, maxNumberRxTxBeamSwitchDL),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_maxNumberRxTxBeamSwitchDL_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberRxTxBeamSwitchDL"
+               },
+       { ATF_POINTER, 15, offsetof(struct MIMO_ParametersPerBand, maxNumberNonGroupBeamReporting),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberNonGroupBeamReporting_54,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberNonGroupBeamReporting"
+               },
+       { ATF_POINTER, 14, offsetof(struct MIMO_ParametersPerBand, groupBeamReporting),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_groupBeamReporting_58,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "groupBeamReporting"
+               },
+       { ATF_POINTER, 13, offsetof(struct MIMO_ParametersPerBand, uplinkBeamManagement),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_uplinkBeamManagement_60,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkBeamManagement"
+               },
+       { ATF_POINTER, 12, offsetof(struct MIMO_ParametersPerBand, maxNumberCSI_RS_BFR),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_BFR_constr_67, &asn_PER_memb_maxNumberCSI_RS_BFR_constr_67,  memb_maxNumberCSI_RS_BFR_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-BFR"
+               },
+       { ATF_POINTER, 11, offsetof(struct MIMO_ParametersPerBand, maxNumberSSB_BFR),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSSB_BFR_constr_68, &asn_PER_memb_maxNumberSSB_BFR_constr_68,  memb_maxNumberSSB_BFR_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberSSB-BFR"
+               },
+       { ATF_POINTER, 10, offsetof(struct MIMO_ParametersPerBand, maxNumberCSI_RS_SSB_BFR),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_SSB_BFR_constr_69, &asn_PER_memb_maxNumberCSI_RS_SSB_BFR_constr_69,  memb_maxNumberCSI_RS_SSB_BFR_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-SSB-BFR"
+               },
+       { ATF_POINTER, 9, offsetof(struct MIMO_ParametersPerBand, twoPortsPTRS_DL),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPortsPTRS_DL_70,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPortsPTRS-DL"
+               },
+       { ATF_POINTER, 8, offsetof(struct MIMO_ParametersPerBand, twoPortsPTRS_UL),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPortsPTRS_UL_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPortsPTRS-UL"
+               },
+       { ATF_POINTER, 7, offsetof(struct MIMO_ParametersPerBand, supportedSRS_Resources),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_Resources,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedSRS-Resources"
+               },
+       { ATF_POINTER, 6, offsetof(struct MIMO_ParametersPerBand, maxNumberSimultaneousSRS_PerCC),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSimultaneousSRS_PerCC_constr_75, &asn_PER_memb_maxNumberSimultaneousSRS_PerCC_constr_75,  memb_maxNumberSimultaneousSRS_PerCC_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberSimultaneousSRS-PerCC"
+               },
+       { ATF_POINTER, 5, offsetof(struct MIMO_ParametersPerBand, beamReportTiming),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               0,
+               &asn_DEF_beamReportTiming_76,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamReportTiming"
+               },
+       { ATF_POINTER, 4, offsetof(struct MIMO_ParametersPerBand, ptrs_DensityRecommendationSetDL),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               0,
+               &asn_DEF_ptrs_DensityRecommendationSetDL_94,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ptrs-DensityRecommendationSetDL"
+               },
+       { ATF_POINTER, 3, offsetof(struct MIMO_ParametersPerBand, ptrs_DensityRecommendationSetUL),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               0,
+               &asn_DEF_ptrs_DensityRecommendationSetUL_99,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ptrs-DensityRecommendationSetUL"
+               },
+       { ATF_POINTER, 2, offsetof(struct MIMO_ParametersPerBand, csi_RS_ForTracking),
+               (ASN_TAG_CLASS_CONTEXT | (24 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_ForTracking,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-ForTracking"
+               },
+       { ATF_POINTER, 1, offsetof(struct MIMO_ParametersPerBand, aperiodicTRS),
+               (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aperiodicTRS_105,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodicTRS"
+               },
+};
+static const int asn_MAP_MIMO_ParametersPerBand_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, 24, 25 };
+static const ber_tlv_tag_t asn_DEF_MIMO_ParametersPerBand_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MIMO_ParametersPerBand_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tci-StatePDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* additionalActiveTCI-StatePDCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pusch-TransCoherence */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* beamCorrespondence */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* periodicBeamReport */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* aperiodicBeamReport */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sp-BeamReportPUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sp-BeamReportPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* beamManagementSSB-CSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* maxNumberRxBeam */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* maxNumberRxTxBeamSwitchDL */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* maxNumberNonGroupBeamReporting */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* groupBeamReporting */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* uplinkBeamManagement */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* maxNumberCSI-RS-BFR */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* maxNumberSSB-BFR */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* maxNumberCSI-RS-SSB-BFR */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* twoPortsPTRS-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* twoPortsPTRS-UL */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* supportedSRS-Resources */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* maxNumberSimultaneousSRS-PerCC */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* beamReportTiming */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* ptrs-DensityRecommendationSetDL */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 }, /* ptrs-DensityRecommendationSetUL */
+    { (ASN_TAG_CLASS_CONTEXT | (24 << 2)), 24, 0, 0 }, /* csi-RS-ForTracking */
+    { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 25, 0, 0 } /* aperiodicTRS */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MIMO_ParametersPerBand_specs_1 = {
+       sizeof(struct MIMO_ParametersPerBand),
+       offsetof(struct MIMO_ParametersPerBand, _asn_ctx),
+       asn_MAP_MIMO_ParametersPerBand_tag2el_1,
+       26,     /* Count of tags in the map */
+       asn_MAP_MIMO_ParametersPerBand_oms_1,   /* Optional members */
+       26, 0,  /* Root/Additions */
+       26,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MIMO_ParametersPerBand = {
+       "MIMO-ParametersPerBand",
+       "MIMO-ParametersPerBand",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MIMO_ParametersPerBand_tags_1,
+       sizeof(asn_DEF_MIMO_ParametersPerBand_tags_1)
+               /sizeof(asn_DEF_MIMO_ParametersPerBand_tags_1[0]), /* 1 */
+       asn_DEF_MIMO_ParametersPerBand_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MIMO_ParametersPerBand_tags_1)
+               /sizeof(asn_DEF_MIMO_ParametersPerBand_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MIMO_ParametersPerBand_1,
+       26,     /* Elements count */
+       &asn_SPC_MIMO_ParametersPerBand_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MIMO-ParametersPerBand.h b/src/codec_utils/RRC/MIMO-ParametersPerBand.h
new file mode 100644 (file)
index 0000000..f9bf3e6
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MIMO_ParametersPerBand_H_
+#define        _MIMO_ParametersPerBand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC {
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n4    = 0,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n8    = 1,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n16   = 2,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n32   = 3,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n64   = 4,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC_n128  = 5
+} e_MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberConfiguredTCIstatesPerCC;
+typedef enum MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP {
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP_n1    = 0,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP_n2    = 1,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP_n4    = 2,
+       MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP_n8    = 3
+} e_MIMO_ParametersPerBand__tci_StatePDSCH__maxNumberActiveTCI_PerBWP;
+typedef enum MIMO_ParametersPerBand__additionalActiveTCI_StatePDCCH {
+       MIMO_ParametersPerBand__additionalActiveTCI_StatePDCCH_supported        = 0
+} e_MIMO_ParametersPerBand__additionalActiveTCI_StatePDCCH;
+typedef enum MIMO_ParametersPerBand__pusch_TransCoherence {
+       MIMO_ParametersPerBand__pusch_TransCoherence_nonCoherent        = 0,
+       MIMO_ParametersPerBand__pusch_TransCoherence_partialCoherent    = 1,
+       MIMO_ParametersPerBand__pusch_TransCoherence_fullCoherent       = 2
+} e_MIMO_ParametersPerBand__pusch_TransCoherence;
+typedef enum MIMO_ParametersPerBand__beamCorrespondence {
+       MIMO_ParametersPerBand__beamCorrespondence_supported    = 0
+} e_MIMO_ParametersPerBand__beamCorrespondence;
+typedef enum MIMO_ParametersPerBand__periodicBeamReport {
+       MIMO_ParametersPerBand__periodicBeamReport_supported    = 0
+} e_MIMO_ParametersPerBand__periodicBeamReport;
+typedef enum MIMO_ParametersPerBand__aperiodicBeamReport {
+       MIMO_ParametersPerBand__aperiodicBeamReport_supported   = 0
+} e_MIMO_ParametersPerBand__aperiodicBeamReport;
+typedef enum MIMO_ParametersPerBand__sp_BeamReportPUCCH {
+       MIMO_ParametersPerBand__sp_BeamReportPUCCH_supported    = 0
+} e_MIMO_ParametersPerBand__sp_BeamReportPUCCH;
+typedef enum MIMO_ParametersPerBand__sp_BeamReportPUSCH {
+       MIMO_ParametersPerBand__sp_BeamReportPUSCH_supported    = 0
+} e_MIMO_ParametersPerBand__sp_BeamReportPUSCH;
+typedef enum MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_15kHz {
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_15kHz_n4 = 0,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_15kHz_n7 = 1,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_15kHz_n14        = 2
+} e_MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_15kHz;
+typedef enum MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_30kHz {
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_30kHz_n4 = 0,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_30kHz_n7 = 1,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_30kHz_n14        = 2
+} e_MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_30kHz;
+typedef enum MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_60kHz {
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_60kHz_n4 = 0,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_60kHz_n7 = 1,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_60kHz_n14        = 2
+} e_MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_60kHz;
+typedef enum MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_120kHz {
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_120kHz_n4        = 0,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_120kHz_n7        = 1,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_120kHz_n14       = 2
+} e_MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_120kHz;
+typedef enum MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_240kHz {
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_240kHz_n4        = 0,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_240kHz_n7        = 1,
+       MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_240kHz_n14       = 2
+} e_MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL__scs_240kHz;
+typedef enum MIMO_ParametersPerBand__maxNumberNonGroupBeamReporting {
+       MIMO_ParametersPerBand__maxNumberNonGroupBeamReporting_n1       = 0,
+       MIMO_ParametersPerBand__maxNumberNonGroupBeamReporting_n2       = 1,
+       MIMO_ParametersPerBand__maxNumberNonGroupBeamReporting_n4       = 2
+} e_MIMO_ParametersPerBand__maxNumberNonGroupBeamReporting;
+typedef enum MIMO_ParametersPerBand__groupBeamReporting {
+       MIMO_ParametersPerBand__groupBeamReporting_supported    = 0
+} e_MIMO_ParametersPerBand__groupBeamReporting;
+typedef enum MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM {
+       MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM_n2 = 0,
+       MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM_n4 = 1,
+       MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM_n8 = 2,
+       MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM_n16        = 3
+} e_MIMO_ParametersPerBand__uplinkBeamManagement__maxNumberSRS_ResourcePerSet_BM;
+typedef enum MIMO_ParametersPerBand__twoPortsPTRS_DL {
+       MIMO_ParametersPerBand__twoPortsPTRS_DL_supported       = 0
+} e_MIMO_ParametersPerBand__twoPortsPTRS_DL;
+typedef enum MIMO_ParametersPerBand__twoPortsPTRS_UL {
+       MIMO_ParametersPerBand__twoPortsPTRS_UL_supported       = 0
+} e_MIMO_ParametersPerBand__twoPortsPTRS_UL;
+typedef enum MIMO_ParametersPerBand__beamReportTiming__scs_15kHz {
+       MIMO_ParametersPerBand__beamReportTiming__scs_15kHz_sym2        = 0,
+       MIMO_ParametersPerBand__beamReportTiming__scs_15kHz_sym4        = 1,
+       MIMO_ParametersPerBand__beamReportTiming__scs_15kHz_sym8        = 2
+} e_MIMO_ParametersPerBand__beamReportTiming__scs_15kHz;
+typedef enum MIMO_ParametersPerBand__beamReportTiming__scs_30kHz {
+       MIMO_ParametersPerBand__beamReportTiming__scs_30kHz_sym4        = 0,
+       MIMO_ParametersPerBand__beamReportTiming__scs_30kHz_sym8        = 1,
+       MIMO_ParametersPerBand__beamReportTiming__scs_30kHz_sym14       = 2,
+       MIMO_ParametersPerBand__beamReportTiming__scs_30kHz_sym28       = 3
+} e_MIMO_ParametersPerBand__beamReportTiming__scs_30kHz;
+typedef enum MIMO_ParametersPerBand__beamReportTiming__scs_60kHz {
+       MIMO_ParametersPerBand__beamReportTiming__scs_60kHz_sym8        = 0,
+       MIMO_ParametersPerBand__beamReportTiming__scs_60kHz_sym14       = 1,
+       MIMO_ParametersPerBand__beamReportTiming__scs_60kHz_sym28       = 2
+} e_MIMO_ParametersPerBand__beamReportTiming__scs_60kHz;
+typedef enum MIMO_ParametersPerBand__beamReportTiming__scs_120kHz {
+       MIMO_ParametersPerBand__beamReportTiming__scs_120kHz_sym14      = 0,
+       MIMO_ParametersPerBand__beamReportTiming__scs_120kHz_sym28      = 1,
+       MIMO_ParametersPerBand__beamReportTiming__scs_120kHz_sym56      = 2
+} e_MIMO_ParametersPerBand__beamReportTiming__scs_120kHz;
+typedef enum MIMO_ParametersPerBand__aperiodicTRS {
+       MIMO_ParametersPerBand__aperiodicTRS_supported  = 0
+} e_MIMO_ParametersPerBand__aperiodicTRS;
+
+/* Forward declarations */
+struct BeamManagementSSB_CSI_RS;
+struct SRS_Resources;
+struct CSI_RS_ForTracking;
+struct PTRS_DensityRecommendationDL;
+struct PTRS_DensityRecommendationUL;
+
+/* MIMO-ParametersPerBand */
+typedef struct MIMO_ParametersPerBand {
+       struct MIMO_ParametersPerBand__tci_StatePDSCH {
+               long    *maxNumberConfiguredTCIstatesPerCC;     /* OPTIONAL */
+               long    *maxNumberActiveTCI_PerBWP;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tci_StatePDSCH;
+       long    *additionalActiveTCI_StatePDCCH;        /* OPTIONAL */
+       long    *pusch_TransCoherence;  /* OPTIONAL */
+       long    *beamCorrespondence;    /* OPTIONAL */
+       long    *periodicBeamReport;    /* OPTIONAL */
+       long    *aperiodicBeamReport;   /* OPTIONAL */
+       long    *sp_BeamReportPUCCH;    /* OPTIONAL */
+       long    *sp_BeamReportPUSCH;    /* OPTIONAL */
+       struct BeamManagementSSB_CSI_RS *beamManagementSSB_CSI_RS;      /* OPTIONAL */
+       long    *maxNumberRxBeam;       /* OPTIONAL */
+       struct MIMO_ParametersPerBand__maxNumberRxTxBeamSwitchDL {
+               long    *scs_15kHz;     /* OPTIONAL */
+               long    *scs_30kHz;     /* OPTIONAL */
+               long    *scs_60kHz;     /* OPTIONAL */
+               long    *scs_120kHz;    /* OPTIONAL */
+               long    *scs_240kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *maxNumberRxTxBeamSwitchDL;
+       long    *maxNumberNonGroupBeamReporting;        /* OPTIONAL */
+       long    *groupBeamReporting;    /* OPTIONAL */
+       struct MIMO_ParametersPerBand__uplinkBeamManagement {
+               long     maxNumberSRS_ResourcePerSet_BM;
+               long     maxNumberSRS_ResourceSet;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uplinkBeamManagement;
+       long    *maxNumberCSI_RS_BFR;   /* OPTIONAL */
+       long    *maxNumberSSB_BFR;      /* OPTIONAL */
+       long    *maxNumberCSI_RS_SSB_BFR;       /* OPTIONAL */
+       long    *twoPortsPTRS_DL;       /* OPTIONAL */
+       long    *twoPortsPTRS_UL;       /* OPTIONAL */
+       struct SRS_Resources    *supportedSRS_Resources;        /* OPTIONAL */
+       long    *maxNumberSimultaneousSRS_PerCC;        /* OPTIONAL */
+       struct MIMO_ParametersPerBand__beamReportTiming {
+               long    *scs_15kHz;     /* OPTIONAL */
+               long    *scs_30kHz;     /* OPTIONAL */
+               long    *scs_60kHz;     /* OPTIONAL */
+               long    *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *beamReportTiming;
+       struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetDL {
+               struct PTRS_DensityRecommendationDL     *scs_15kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationDL     *scs_30kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationDL     *scs_60kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationDL     *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ptrs_DensityRecommendationSetDL;
+       struct MIMO_ParametersPerBand__ptrs_DensityRecommendationSetUL {
+               struct PTRS_DensityRecommendationUL     *scs_15kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationUL     *scs_30kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationUL     *scs_60kHz;     /* OPTIONAL */
+               struct PTRS_DensityRecommendationUL     *scs_120kHz;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ptrs_DensityRecommendationSetUL;
+       struct CSI_RS_ForTracking       *csi_RS_ForTracking;    /* OPTIONAL */
+       long    *aperiodicTRS;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MIMO_ParametersPerBand_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberConfiguredTCIstatesPerCC_3;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberActiveTCI_PerBWP_10;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_additionalActiveTCI_StatePDCCH_15;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_TransCoherence_17;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_beamCorrespondence_21; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_periodicBeamReport_23; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aperiodicBeamReport_25;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_BeamReportPUCCH_27; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_BeamReportPUSCH_29; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_15kHz_34;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_30kHz_38;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_42;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_120kHz_46; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_240kHz_50; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberNonGroupBeamReporting_54;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_groupBeamReporting_58; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberSRS_ResourcePerSet_BM_61;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPortsPTRS_DL_70;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPortsPTRS_UL_72;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_15kHz_77;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_30kHz_81;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_86;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_120kHz_90; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aperiodicTRS_105;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MIMO_ParametersPerBand;
+extern asn_SEQUENCE_specifics_t asn_SPC_MIMO_ParametersPerBand_specs_1;
+extern asn_TYPE_member_t asn_MBR_MIMO_ParametersPerBand_1[26];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MIMO_ParametersPerBand_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MNC.c b/src/codec_utils/RRC/MNC.c
new file mode 100644 (file)
index 0000000..c53194e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MNC.h"
+
+static asn_oer_constraints_t asn_OER_type_MNC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(2..3)) */};
+asn_per_constraints_t asn_PER_type_MNC_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  2,  3 }        /* (SIZE(2..3)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MNC_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_MCC_MNC_Digit,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MNC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MNC_specs_1 = {
+       sizeof(struct MNC),
+       offsetof(struct MNC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MNC = {
+       "MNC",
+       "MNC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MNC_tags_1,
+       sizeof(asn_DEF_MNC_tags_1)
+               /sizeof(asn_DEF_MNC_tags_1[0]), /* 1 */
+       asn_DEF_MNC_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MNC_tags_1)
+               /sizeof(asn_DEF_MNC_tags_1[0]), /* 1 */
+       { &asn_OER_type_MNC_constr_1, &asn_PER_type_MNC_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MNC_1,
+       1,      /* Single element */
+       &asn_SPC_MNC_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MNC.h b/src/codec_utils/RRC/MNC.h
new file mode 100644 (file)
index 0000000..c61f7d0
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MNC_H_
+#define        _MNC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MCC-MNC-Digit.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MNC */
+typedef struct MNC {
+       A_SEQUENCE_OF(MCC_MNC_Digit_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MNC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MNC;
+extern asn_SET_OF_specifics_t asn_SPC_MNC_specs_1;
+extern asn_TYPE_member_t asn_MBR_MNC_1[1];
+extern asn_per_constraints_t asn_PER_type_MNC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MNC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MRDC-AssistanceInfo.c b/src/codec_utils/RRC/MRDC-AssistanceInfo.c
new file mode 100644 (file)
index 0000000..2b1ed5d
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MRDC-AssistanceInfo.h"
+
+#include "AffectedCarrierFreqCombInfoMRDC.h"
+static int
+memb_affectedCarrierFreqCombInfoListMRDC_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 <= 128)) {
+               /* 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_affectedCarrierFreqCombInfoListMRDC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_affectedCarrierFreqCombInfoListMRDC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_affectedCarrierFreqCombInfoListMRDC_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_affectedCarrierFreqCombInfoListMRDC_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_affectedCarrierFreqCombInfoListMRDC_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_AffectedCarrierFreqCombInfoMRDC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_affectedCarrierFreqCombInfoListMRDC_specs_2 = {
+       sizeof(struct MRDC_AssistanceInfo__affectedCarrierFreqCombInfoListMRDC),
+       offsetof(struct MRDC_AssistanceInfo__affectedCarrierFreqCombInfoListMRDC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_affectedCarrierFreqCombInfoListMRDC_2 = {
+       "affectedCarrierFreqCombInfoListMRDC",
+       "affectedCarrierFreqCombInfoListMRDC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2,
+       sizeof(asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2)
+               /sizeof(asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2[0]) - 1, /* 1 */
+       asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2,     /* Same as above */
+       sizeof(asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2)
+               /sizeof(asn_DEF_affectedCarrierFreqCombInfoListMRDC_tags_2[0]), /* 2 */
+       { &asn_OER_type_affectedCarrierFreqCombInfoListMRDC_constr_2, &asn_PER_type_affectedCarrierFreqCombInfoListMRDC_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_affectedCarrierFreqCombInfoListMRDC_2,
+       1,      /* Single element */
+       &asn_SPC_affectedCarrierFreqCombInfoListMRDC_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MRDC_AssistanceInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MRDC_AssistanceInfo, affectedCarrierFreqCombInfoListMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_affectedCarrierFreqCombInfoListMRDC_2,
+               0,
+               { &asn_OER_memb_affectedCarrierFreqCombInfoListMRDC_constr_2, &asn_PER_memb_affectedCarrierFreqCombInfoListMRDC_constr_2,  memb_affectedCarrierFreqCombInfoListMRDC_constraint_1 },
+               0, 0, /* No default value */
+               "affectedCarrierFreqCombInfoListMRDC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MRDC_AssistanceInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MRDC_AssistanceInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* affectedCarrierFreqCombInfoListMRDC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MRDC_AssistanceInfo_specs_1 = {
+       sizeof(struct MRDC_AssistanceInfo),
+       offsetof(struct MRDC_AssistanceInfo, _asn_ctx),
+       asn_MAP_MRDC_AssistanceInfo_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_MRDC_AssistanceInfo = {
+       "MRDC-AssistanceInfo",
+       "MRDC-AssistanceInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MRDC_AssistanceInfo_tags_1,
+       sizeof(asn_DEF_MRDC_AssistanceInfo_tags_1)
+               /sizeof(asn_DEF_MRDC_AssistanceInfo_tags_1[0]), /* 1 */
+       asn_DEF_MRDC_AssistanceInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MRDC_AssistanceInfo_tags_1)
+               /sizeof(asn_DEF_MRDC_AssistanceInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MRDC_AssistanceInfo_1,
+       1,      /* Elements count */
+       &asn_SPC_MRDC_AssistanceInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MRDC-AssistanceInfo.h b/src/codec_utils/RRC/MRDC-AssistanceInfo.h
new file mode 100644 (file)
index 0000000..796496e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MRDC_AssistanceInfo_H_
+#define        _MRDC_AssistanceInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct AffectedCarrierFreqCombInfoMRDC;
+
+/* MRDC-AssistanceInfo */
+typedef struct MRDC_AssistanceInfo {
+       struct MRDC_AssistanceInfo__affectedCarrierFreqCombInfoListMRDC {
+               A_SEQUENCE_OF(struct AffectedCarrierFreqCombInfoMRDC) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } affectedCarrierFreqCombInfoListMRDC;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MRDC_AssistanceInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MRDC_AssistanceInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_MRDC_AssistanceInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_MRDC_AssistanceInfo_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MRDC_AssistanceInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MRDC-Parameters.c b/src/codec_utils/RRC/MRDC-Parameters.c
new file mode 100644 (file)
index 0000000..b72a1e5
--- /dev/null
@@ -0,0 +1,447 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MRDC-Parameters.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 asn_oer_constraints_t asn_OER_type_singleUL_Transmission_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_singleUL_Transmission_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicPowerSharing_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicPowerSharing_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tdm_Pattern_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tdm_Pattern_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_SharingEUTRA_NR_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ul_SharingEUTRA_NR_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ul_SwitchingTimeEUTRA_NR_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ul_SwitchingTimeEUTRA_NR_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousRxTxInterBandENDC_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousRxTxInterBandENDC_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_asyncIntraBandENDC_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_asyncIntraBandENDC_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_singleUL_Transmission_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_singleUL_Transmission_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_singleUL_Transmission_specs_2 = {
+       asn_MAP_singleUL_Transmission_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_singleUL_Transmission_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_singleUL_Transmission_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_singleUL_Transmission_2 = {
+       "singleUL-Transmission",
+       "singleUL-Transmission",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_singleUL_Transmission_tags_2,
+       sizeof(asn_DEF_singleUL_Transmission_tags_2)
+               /sizeof(asn_DEF_singleUL_Transmission_tags_2[0]) - 1, /* 1 */
+       asn_DEF_singleUL_Transmission_tags_2,   /* Same as above */
+       sizeof(asn_DEF_singleUL_Transmission_tags_2)
+               /sizeof(asn_DEF_singleUL_Transmission_tags_2[0]), /* 2 */
+       { &asn_OER_type_singleUL_Transmission_constr_2, &asn_PER_type_singleUL_Transmission_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_singleUL_Transmission_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicPowerSharing_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicPowerSharing_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicPowerSharing_specs_4 = {
+       asn_MAP_dynamicPowerSharing_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicPowerSharing_enum2value_4,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicPowerSharing_tags_4[] = {
+       (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_dynamicPowerSharing_4 = {
+       "dynamicPowerSharing",
+       "dynamicPowerSharing",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicPowerSharing_tags_4,
+       sizeof(asn_DEF_dynamicPowerSharing_tags_4)
+               /sizeof(asn_DEF_dynamicPowerSharing_tags_4[0]) - 1, /* 1 */
+       asn_DEF_dynamicPowerSharing_tags_4,     /* Same as above */
+       sizeof(asn_DEF_dynamicPowerSharing_tags_4)
+               /sizeof(asn_DEF_dynamicPowerSharing_tags_4[0]), /* 2 */
+       { &asn_OER_type_dynamicPowerSharing_constr_4, &asn_PER_type_dynamicPowerSharing_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicPowerSharing_specs_4    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tdm_Pattern_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_tdm_Pattern_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tdm_Pattern_specs_6 = {
+       asn_MAP_tdm_Pattern_value2enum_6,       /* "tag" => N; sorted by tag */
+       asn_MAP_tdm_Pattern_enum2value_6,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tdm_Pattern_tags_6[] = {
+       (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_tdm_Pattern_6 = {
+       "tdm-Pattern",
+       "tdm-Pattern",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tdm_Pattern_tags_6,
+       sizeof(asn_DEF_tdm_Pattern_tags_6)
+               /sizeof(asn_DEF_tdm_Pattern_tags_6[0]) - 1, /* 1 */
+       asn_DEF_tdm_Pattern_tags_6,     /* Same as above */
+       sizeof(asn_DEF_tdm_Pattern_tags_6)
+               /sizeof(asn_DEF_tdm_Pattern_tags_6[0]), /* 2 */
+       { &asn_OER_type_tdm_Pattern_constr_6, &asn_PER_type_tdm_Pattern_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tdm_Pattern_specs_6    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ul_SharingEUTRA_NR_value2enum_8[] = {
+       { 0,    3,      "tdm" },
+       { 1,    3,      "fdm" },
+       { 2,    4,      "both" }
+};
+static const unsigned int asn_MAP_ul_SharingEUTRA_NR_enum2value_8[] = {
+       2,      /* both(2) */
+       1,      /* fdm(1) */
+       0       /* tdm(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ul_SharingEUTRA_NR_specs_8 = {
+       asn_MAP_ul_SharingEUTRA_NR_value2enum_8,        /* "tag" => N; sorted by tag */
+       asn_MAP_ul_SharingEUTRA_NR_enum2value_8,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ul_SharingEUTRA_NR_tags_8[] = {
+       (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_ul_SharingEUTRA_NR_8 = {
+       "ul-SharingEUTRA-NR",
+       "ul-SharingEUTRA-NR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ul_SharingEUTRA_NR_tags_8,
+       sizeof(asn_DEF_ul_SharingEUTRA_NR_tags_8)
+               /sizeof(asn_DEF_ul_SharingEUTRA_NR_tags_8[0]) - 1, /* 1 */
+       asn_DEF_ul_SharingEUTRA_NR_tags_8,      /* Same as above */
+       sizeof(asn_DEF_ul_SharingEUTRA_NR_tags_8)
+               /sizeof(asn_DEF_ul_SharingEUTRA_NR_tags_8[0]), /* 2 */
+       { &asn_OER_type_ul_SharingEUTRA_NR_constr_8, &asn_PER_type_ul_SharingEUTRA_NR_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ul_SharingEUTRA_NR_specs_8     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ul_SwitchingTimeEUTRA_NR_value2enum_12[] = {
+       { 0,    5,      "type1" },
+       { 1,    5,      "type2" }
+};
+static const unsigned int asn_MAP_ul_SwitchingTimeEUTRA_NR_enum2value_12[] = {
+       0,      /* type1(0) */
+       1       /* type2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ul_SwitchingTimeEUTRA_NR_specs_12 = {
+       asn_MAP_ul_SwitchingTimeEUTRA_NR_value2enum_12, /* "tag" => N; sorted by tag */
+       asn_MAP_ul_SwitchingTimeEUTRA_NR_enum2value_12, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12[] = {
+       (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_ul_SwitchingTimeEUTRA_NR_12 = {
+       "ul-SwitchingTimeEUTRA-NR",
+       "ul-SwitchingTimeEUTRA-NR",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12,
+       sizeof(asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12)
+               /sizeof(asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12[0]) - 1, /* 1 */
+       asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12,       /* Same as above */
+       sizeof(asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12)
+               /sizeof(asn_DEF_ul_SwitchingTimeEUTRA_NR_tags_12[0]), /* 2 */
+       { &asn_OER_type_ul_SwitchingTimeEUTRA_NR_constr_12, &asn_PER_type_ul_SwitchingTimeEUTRA_NR_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ul_SwitchingTimeEUTRA_NR_specs_12      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousRxTxInterBandENDC_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousRxTxInterBandENDC_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousRxTxInterBandENDC_specs_15 = {
+       asn_MAP_simultaneousRxTxInterBandENDC_value2enum_15,    /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousRxTxInterBandENDC_enum2value_15,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousRxTxInterBandENDC_tags_15[] = {
+       (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_simultaneousRxTxInterBandENDC_15 = {
+       "simultaneousRxTxInterBandENDC",
+       "simultaneousRxTxInterBandENDC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousRxTxInterBandENDC_tags_15,
+       sizeof(asn_DEF_simultaneousRxTxInterBandENDC_tags_15)
+               /sizeof(asn_DEF_simultaneousRxTxInterBandENDC_tags_15[0]) - 1, /* 1 */
+       asn_DEF_simultaneousRxTxInterBandENDC_tags_15,  /* Same as above */
+       sizeof(asn_DEF_simultaneousRxTxInterBandENDC_tags_15)
+               /sizeof(asn_DEF_simultaneousRxTxInterBandENDC_tags_15[0]), /* 2 */
+       { &asn_OER_type_simultaneousRxTxInterBandENDC_constr_15, &asn_PER_type_simultaneousRxTxInterBandENDC_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousRxTxInterBandENDC_specs_15 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_asyncIntraBandENDC_value2enum_17[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_asyncIntraBandENDC_enum2value_17[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_asyncIntraBandENDC_specs_17 = {
+       asn_MAP_asyncIntraBandENDC_value2enum_17,       /* "tag" => N; sorted by tag */
+       asn_MAP_asyncIntraBandENDC_enum2value_17,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_asyncIntraBandENDC_tags_17[] = {
+       (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_asyncIntraBandENDC_17 = {
+       "asyncIntraBandENDC",
+       "asyncIntraBandENDC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_asyncIntraBandENDC_tags_17,
+       sizeof(asn_DEF_asyncIntraBandENDC_tags_17)
+               /sizeof(asn_DEF_asyncIntraBandENDC_tags_17[0]) - 1, /* 1 */
+       asn_DEF_asyncIntraBandENDC_tags_17,     /* Same as above */
+       sizeof(asn_DEF_asyncIntraBandENDC_tags_17)
+               /sizeof(asn_DEF_asyncIntraBandENDC_tags_17[0]), /* 2 */
+       { &asn_OER_type_asyncIntraBandENDC_constr_17, &asn_PER_type_asyncIntraBandENDC_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_asyncIntraBandENDC_specs_17    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MRDC_Parameters_1[] = {
+       { ATF_POINTER, 7, offsetof(struct MRDC_Parameters, singleUL_Transmission),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_singleUL_Transmission_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "singleUL-Transmission"
+               },
+       { ATF_POINTER, 6, offsetof(struct MRDC_Parameters, dynamicPowerSharing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicPowerSharing_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicPowerSharing"
+               },
+       { ATF_POINTER, 5, offsetof(struct MRDC_Parameters, tdm_Pattern),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tdm_Pattern_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdm-Pattern"
+               },
+       { ATF_POINTER, 4, offsetof(struct MRDC_Parameters, ul_SharingEUTRA_NR),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ul_SharingEUTRA_NR_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-SharingEUTRA-NR"
+               },
+       { ATF_POINTER, 3, offsetof(struct MRDC_Parameters, ul_SwitchingTimeEUTRA_NR),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ul_SwitchingTimeEUTRA_NR_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-SwitchingTimeEUTRA-NR"
+               },
+       { ATF_POINTER, 2, offsetof(struct MRDC_Parameters, simultaneousRxTxInterBandENDC),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousRxTxInterBandENDC_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousRxTxInterBandENDC"
+               },
+       { ATF_POINTER, 1, offsetof(struct MRDC_Parameters, asyncIntraBandENDC),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_asyncIntraBandENDC_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "asyncIntraBandENDC"
+               },
+};
+static const int asn_MAP_MRDC_Parameters_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_MRDC_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MRDC_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* singleUL-Transmission */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dynamicPowerSharing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* tdm-Pattern */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ul-SharingEUTRA-NR */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ul-SwitchingTimeEUTRA-NR */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* simultaneousRxTxInterBandENDC */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* asyncIntraBandENDC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MRDC_Parameters_specs_1 = {
+       sizeof(struct MRDC_Parameters),
+       offsetof(struct MRDC_Parameters, _asn_ctx),
+       asn_MAP_MRDC_Parameters_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_MRDC_Parameters_oms_1,  /* Optional members */
+       7, 0,   /* Root/Additions */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MRDC_Parameters = {
+       "MRDC-Parameters",
+       "MRDC-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MRDC_Parameters_tags_1,
+       sizeof(asn_DEF_MRDC_Parameters_tags_1)
+               /sizeof(asn_DEF_MRDC_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_MRDC_Parameters_tags_1, /* Same as above */
+       sizeof(asn_DEF_MRDC_Parameters_tags_1)
+               /sizeof(asn_DEF_MRDC_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MRDC_Parameters_1,
+       7,      /* Elements count */
+       &asn_SPC_MRDC_Parameters_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MRDC-Parameters.h b/src/codec_utils/RRC/MRDC-Parameters.h
new file mode 100644 (file)
index 0000000..7477e48
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MRDC_Parameters_H_
+#define        _MRDC_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MRDC_Parameters__singleUL_Transmission {
+       MRDC_Parameters__singleUL_Transmission_supported        = 0
+} e_MRDC_Parameters__singleUL_Transmission;
+typedef enum MRDC_Parameters__dynamicPowerSharing {
+       MRDC_Parameters__dynamicPowerSharing_supported  = 0
+} e_MRDC_Parameters__dynamicPowerSharing;
+typedef enum MRDC_Parameters__tdm_Pattern {
+       MRDC_Parameters__tdm_Pattern_supported  = 0
+} e_MRDC_Parameters__tdm_Pattern;
+typedef enum MRDC_Parameters__ul_SharingEUTRA_NR {
+       MRDC_Parameters__ul_SharingEUTRA_NR_tdm = 0,
+       MRDC_Parameters__ul_SharingEUTRA_NR_fdm = 1,
+       MRDC_Parameters__ul_SharingEUTRA_NR_both        = 2
+} e_MRDC_Parameters__ul_SharingEUTRA_NR;
+typedef enum MRDC_Parameters__ul_SwitchingTimeEUTRA_NR {
+       MRDC_Parameters__ul_SwitchingTimeEUTRA_NR_type1 = 0,
+       MRDC_Parameters__ul_SwitchingTimeEUTRA_NR_type2 = 1
+} e_MRDC_Parameters__ul_SwitchingTimeEUTRA_NR;
+typedef enum MRDC_Parameters__simultaneousRxTxInterBandENDC {
+       MRDC_Parameters__simultaneousRxTxInterBandENDC_supported        = 0
+} e_MRDC_Parameters__simultaneousRxTxInterBandENDC;
+typedef enum MRDC_Parameters__asyncIntraBandENDC {
+       MRDC_Parameters__asyncIntraBandENDC_supported   = 0
+} e_MRDC_Parameters__asyncIntraBandENDC;
+
+/* MRDC-Parameters */
+typedef struct MRDC_Parameters {
+       long    *singleUL_Transmission; /* OPTIONAL */
+       long    *dynamicPowerSharing;   /* OPTIONAL */
+       long    *tdm_Pattern;   /* OPTIONAL */
+       long    *ul_SharingEUTRA_NR;    /* OPTIONAL */
+       long    *ul_SwitchingTimeEUTRA_NR;      /* OPTIONAL */
+       long    *simultaneousRxTxInterBandENDC; /* OPTIONAL */
+       long    *asyncIntraBandENDC;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MRDC_Parameters_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_singleUL_Transmission_2;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicPowerSharing_4; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tdm_Pattern_6; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ul_SharingEUTRA_NR_8;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ul_SwitchingTimeEUTRA_NR_12;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousRxTxInterBandENDC_15;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_asyncIntraBandENDC_17; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MRDC_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_MRDC_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_MRDC_Parameters_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MRDC_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Makefile.am.libasncodec b/src/codec_utils/RRC/Makefile.am.libasncodec
new file mode 100644 (file)
index 0000000..91b39c4
--- /dev/null
@@ -0,0 +1,1436 @@
+ASN_MODULE_SRCS=       \
+       ./rrc_out/BCCH-BCH-Message.c    \
+       ./rrc_out/BCCH-BCH-MessageType.c        \
+       ./rrc_out/BCCH-DL-SCH-Message.c \
+       ./rrc_out/BCCH-DL-SCH-MessageType.c     \
+       ./rrc_out/DL-CCCH-Message.c     \
+       ./rrc_out/DL-CCCH-MessageType.c \
+       ./rrc_out/DL-DCCH-Message.c     \
+       ./rrc_out/DL-DCCH-MessageType.c \
+       ./rrc_out/PCCH-Message.c        \
+       ./rrc_out/PCCH-MessageType.c    \
+       ./rrc_out/UL-CCCH-Message.c     \
+       ./rrc_out/UL-CCCH-MessageType.c \
+       ./rrc_out/UL-CCCH1-Message.c    \
+       ./rrc_out/UL-CCCH1-MessageType.c        \
+       ./rrc_out/UL-DCCH-Message.c     \
+       ./rrc_out/UL-DCCH-MessageType.c \
+       ./rrc_out/CounterCheck.c        \
+       ./rrc_out/CounterCheck-IEs.c    \
+       ./rrc_out/DRB-CountMSB-InfoList.c       \
+       ./rrc_out/DRB-CountMSB-Info.c   \
+       ./rrc_out/CounterCheckResponse.c        \
+       ./rrc_out/CounterCheckResponse-IEs.c    \
+       ./rrc_out/DRB-CountInfoList.c   \
+       ./rrc_out/DRB-CountInfo.c       \
+       ./rrc_out/DLInformationTransfer.c       \
+       ./rrc_out/DLInformationTransfer-IEs.c   \
+       ./rrc_out/FailureInformation.c  \
+       ./rrc_out/FailureInformation-IEs.c      \
+       ./rrc_out/FailureInfoRLC-Bearer.c       \
+       ./rrc_out/LocationMeasurementIndication.c       \
+       ./rrc_out/LocationMeasurementIndication-IEs.c   \
+       ./rrc_out/MIB.c \
+       ./rrc_out/MeasurementReport.c   \
+       ./rrc_out/MeasurementReport-IEs.c       \
+       ./rrc_out/MobilityFromNRCommand.c       \
+       ./rrc_out/MobilityFromNRCommand-IEs.c   \
+       ./rrc_out/Paging.c      \
+       ./rrc_out/PagingRecordList.c    \
+       ./rrc_out/PagingRecord.c        \
+       ./rrc_out/PagingUE-Identity.c   \
+       ./rrc_out/RRCReestablishment.c  \
+       ./rrc_out/RRCReestablishment-IEs.c      \
+       ./rrc_out/RRCReestablishmentComplete.c  \
+       ./rrc_out/RRCReestablishmentComplete-IEs.c      \
+       ./rrc_out/RRCReestablishmentRequest.c   \
+       ./rrc_out/RRCReestablishmentRequest-IEs.c       \
+       ./rrc_out/ReestabUE-Identity.c  \
+       ./rrc_out/ReestablishmentCause.c        \
+       ./rrc_out/RRCReconfiguration.c  \
+       ./rrc_out/RRCReconfiguration-IEs.c      \
+       ./rrc_out/RRCReconfiguration-v1530-IEs.c        \
+       ./rrc_out/MasterKeyUpdate.c     \
+       ./rrc_out/RRCReconfigurationComplete.c  \
+       ./rrc_out/RRCReconfigurationComplete-IEs.c      \
+       ./rrc_out/RRCReconfigurationComplete-v1530-IEs.c        \
+       ./rrc_out/RRCReject.c   \
+       ./rrc_out/RRCReject-IEs.c       \
+       ./rrc_out/RRCRelease.c  \
+       ./rrc_out/RRCRelease-IEs.c      \
+       ./rrc_out/RRCRelease-v1540-IEs.c        \
+       ./rrc_out/RedirectedCarrierInfo.c       \
+       ./rrc_out/RedirectedCarrierInfo-EUTRA.c \
+       ./rrc_out/CarrierInfoNR.c       \
+       ./rrc_out/SuspendConfig.c       \
+       ./rrc_out/PeriodicRNAU-TimerValue.c     \
+       ./rrc_out/CellReselectionPriorities.c   \
+       ./rrc_out/PagingCycle.c \
+       ./rrc_out/FreqPriorityListEUTRA.c       \
+       ./rrc_out/FreqPriorityListNR.c  \
+       ./rrc_out/FreqPriorityEUTRA.c   \
+       ./rrc_out/FreqPriorityNR.c      \
+       ./rrc_out/RAN-NotificationAreaInfo.c    \
+       ./rrc_out/PLMN-RAN-AreaCellList.c       \
+       ./rrc_out/PLMN-RAN-AreaCell.c   \
+       ./rrc_out/PLMN-RAN-AreaConfigList.c     \
+       ./rrc_out/PLMN-RAN-AreaConfig.c \
+       ./rrc_out/RAN-AreaConfig.c      \
+       ./rrc_out/RRCResume.c   \
+       ./rrc_out/RRCResume-IEs.c       \
+       ./rrc_out/RRCResumeComplete.c   \
+       ./rrc_out/RRCResumeComplete-IEs.c       \
+       ./rrc_out/RRCResumeRequest.c    \
+       ./rrc_out/RRCResumeRequest-IEs.c        \
+       ./rrc_out/RRCResumeRequest1.c   \
+       ./rrc_out/RRCResumeRequest1-IEs.c       \
+       ./rrc_out/RRCSetup.c    \
+       ./rrc_out/RRCSetup-IEs.c        \
+       ./rrc_out/RRCSetupComplete.c    \
+       ./rrc_out/RRCSetupComplete-IEs.c        \
+       ./rrc_out/RegisteredAMF.c       \
+       ./rrc_out/RRCSetupRequest.c     \
+       ./rrc_out/RRCSetupRequest-IEs.c \
+       ./rrc_out/InitialUE-Identity.c  \
+       ./rrc_out/EstablishmentCause.c  \
+       ./rrc_out/RRCSystemInfoRequest.c        \
+       ./rrc_out/RRCSystemInfoRequest-r15-IEs.c        \
+       ./rrc_out/SecurityModeCommand.c \
+       ./rrc_out/SecurityModeCommand-IEs.c     \
+       ./rrc_out/SecurityConfigSMC.c   \
+       ./rrc_out/SecurityModeComplete.c        \
+       ./rrc_out/SecurityModeComplete-IEs.c    \
+       ./rrc_out/SecurityModeFailure.c \
+       ./rrc_out/SecurityModeFailure-IEs.c     \
+       ./rrc_out/SIB1.c        \
+       ./rrc_out/UAC-AccessCategory1-SelectionAssistanceInfo.c \
+       ./rrc_out/SystemInformation.c   \
+       ./rrc_out/SystemInformation-IEs.c       \
+       ./rrc_out/UEAssistanceInformation.c     \
+       ./rrc_out/UEAssistanceInformation-IEs.c \
+       ./rrc_out/DelayBudgetReport.c   \
+       ./rrc_out/UEAssistanceInformation-v1540-IEs.c   \
+       ./rrc_out/OverheatingAssistance.c       \
+       ./rrc_out/ReducedAggregatedBandwidth.c  \
+       ./rrc_out/UECapabilityEnquiry.c \
+       ./rrc_out/UECapabilityEnquiry-IEs.c     \
+       ./rrc_out/UECapabilityInformation.c     \
+       ./rrc_out/UECapabilityInformation-IEs.c \
+       ./rrc_out/ULInformationTransfer.c       \
+       ./rrc_out/ULInformationTransfer-IEs.c   \
+       ./rrc_out/SIB2.c        \
+       ./rrc_out/RangeToBestCell.c     \
+       ./rrc_out/SIB3.c        \
+       ./rrc_out/IntraFreqNeighCellList.c      \
+       ./rrc_out/IntraFreqNeighCellInfo.c      \
+       ./rrc_out/IntraFreqBlackCellList.c      \
+       ./rrc_out/SIB4.c        \
+       ./rrc_out/InterFreqCarrierFreqList.c    \
+       ./rrc_out/InterFreqCarrierFreqInfo.c    \
+       ./rrc_out/InterFreqNeighCellList.c      \
+       ./rrc_out/InterFreqNeighCellInfo.c      \
+       ./rrc_out/InterFreqBlackCellList.c      \
+       ./rrc_out/SIB5.c        \
+       ./rrc_out/CarrierFreqListEUTRA.c        \
+       ./rrc_out/CarrierFreqEUTRA.c    \
+       ./rrc_out/EUTRA-FreqBlackCellList.c     \
+       ./rrc_out/EUTRA-FreqNeighCellList.c     \
+       ./rrc_out/EUTRA-FreqNeighCellInfo.c     \
+       ./rrc_out/SIB6.c        \
+       ./rrc_out/SIB7.c        \
+       ./rrc_out/SIB8.c        \
+       ./rrc_out/SIB9.c        \
+       ./rrc_out/AdditionalSpectrumEmission.c  \
+       ./rrc_out/Alpha.c       \
+       ./rrc_out/AMF-Identifier.c      \
+       ./rrc_out/ARFCN-ValueEUTRA.c    \
+       ./rrc_out/ARFCN-ValueNR.c       \
+       ./rrc_out/BeamFailureRecoveryConfig.c   \
+       ./rrc_out/PRACH-ResourceDedicatedBFR.c  \
+       ./rrc_out/BFR-SSB-Resource.c    \
+       ./rrc_out/BFR-CSIRS-Resource.c  \
+       ./rrc_out/BSR-Config.c  \
+       ./rrc_out/BWP.c \
+       ./rrc_out/BWP-Downlink.c        \
+       ./rrc_out/BWP-DownlinkCommon.c  \
+       ./rrc_out/BWP-DownlinkDedicated.c       \
+       ./rrc_out/BWP-Id.c      \
+       ./rrc_out/BWP-Uplink.c  \
+       ./rrc_out/BWP-UplinkCommon.c    \
+       ./rrc_out/BWP-UplinkDedicated.c \
+       ./rrc_out/CellAccessRelatedInfo.c       \
+       ./rrc_out/CellAccessRelatedInfo-EUTRA-5GC.c     \
+       ./rrc_out/PLMN-IdentityList-EUTRA-5GC.c \
+       ./rrc_out/PLMN-Identity-EUTRA-5GC.c     \
+       ./rrc_out/CellIdentity-EUTRA-5GC.c      \
+       ./rrc_out/CellAccessRelatedInfo-EUTRA-EPC.c     \
+       ./rrc_out/PLMN-IdentityList-EUTRA-EPC.c \
+       ./rrc_out/CellGroupConfig.c     \
+       ./rrc_out/SpCellConfig.c        \
+       ./rrc_out/ReconfigurationWithSync.c     \
+       ./rrc_out/SCellConfig.c \
+       ./rrc_out/CellGroupId.c \
+       ./rrc_out/CellIdentity.c        \
+       ./rrc_out/CellReselectionPriority.c     \
+       ./rrc_out/CellReselectionSubPriority.c  \
+       ./rrc_out/CGI-Info.c    \
+       ./rrc_out/CodebookConfig.c      \
+       ./rrc_out/ConfiguredGrantConfig.c       \
+       ./rrc_out/CG-UCI-OnPUSCH.c      \
+       ./rrc_out/ConnEstFailureControl.c       \
+       ./rrc_out/ControlResourceSet.c  \
+       ./rrc_out/ControlResourceSetId.c        \
+       ./rrc_out/ControlResourceSetZero.c      \
+       ./rrc_out/CrossCarrierSchedulingConfig.c        \
+       ./rrc_out/CSI-AperiodicTriggerStateList.c       \
+       ./rrc_out/CSI-AperiodicTriggerState.c   \
+       ./rrc_out/CSI-AssociatedReportConfigInfo.c      \
+       ./rrc_out/CSI-FrequencyOccupation.c     \
+       ./rrc_out/CSI-IM-Resource.c     \
+       ./rrc_out/CSI-IM-ResourceId.c   \
+       ./rrc_out/CSI-IM-ResourceSet.c  \
+       ./rrc_out/CSI-IM-ResourceSetId.c        \
+       ./rrc_out/CSI-MeasConfig.c      \
+       ./rrc_out/CSI-ReportConfig.c    \
+       ./rrc_out/CSI-ReportPeriodicityAndOffset.c      \
+       ./rrc_out/PUCCH-CSI-Resource.c  \
+       ./rrc_out/PortIndexFor8Ranks.c  \
+       ./rrc_out/PortIndex8.c  \
+       ./rrc_out/PortIndex4.c  \
+       ./rrc_out/PortIndex2.c  \
+       ./rrc_out/CSI-ReportConfigId.c  \
+       ./rrc_out/CSI-ResourceConfig.c  \
+       ./rrc_out/CSI-ResourceConfigId.c        \
+       ./rrc_out/CSI-ResourcePeriodicityAndOffset.c    \
+       ./rrc_out/CSI-RS-ResourceConfigMobility.c       \
+       ./rrc_out/CSI-RS-CellMobility.c \
+       ./rrc_out/CSI-RS-Resource-Mobility.c    \
+       ./rrc_out/CSI-RS-Index.c        \
+       ./rrc_out/CSI-RS-ResourceMapping.c      \
+       ./rrc_out/CSI-SemiPersistentOnPUSCH-TriggerStateList.c  \
+       ./rrc_out/CSI-SemiPersistentOnPUSCH-TriggerState.c      \
+       ./rrc_out/CSI-SSB-ResourceSet.c \
+       ./rrc_out/CSI-SSB-ResourceSetId.c       \
+       ./rrc_out/DedicatedNAS-Message.c        \
+       ./rrc_out/DMRS-DownlinkConfig.c \
+       ./rrc_out/DMRS-UplinkConfig.c   \
+       ./rrc_out/DownlinkConfigCommon.c        \
+       ./rrc_out/DownlinkConfigCommonSIB.c     \
+       ./rrc_out/BCCH-Config.c \
+       ./rrc_out/PCCH-Config.c \
+       ./rrc_out/DownlinkPreemption.c  \
+       ./rrc_out/INT-ConfigurationPerServingCell.c     \
+       ./rrc_out/DRB-Identity.c        \
+       ./rrc_out/DRX-Config.c  \
+       ./rrc_out/FilterCoefficient.c   \
+       ./rrc_out/FreqBandIndicatorNR.c \
+       ./rrc_out/FrequencyInfoDL.c     \
+       ./rrc_out/FrequencyInfoDL-SIB.c \
+       ./rrc_out/FrequencyInfoUL.c     \
+       ./rrc_out/FrequencyInfoUL-SIB.c \
+       ./rrc_out/Hysteresis.c  \
+       ./rrc_out/I-RNTI-Value.c        \
+       ./rrc_out/LocationMeasurementInfo.c     \
+       ./rrc_out/EUTRA-RSTD-InfoList.c \
+       ./rrc_out/EUTRA-RSTD-Info.c     \
+       ./rrc_out/LogicalChannelConfig.c        \
+       ./rrc_out/LogicalChannelIdentity.c      \
+       ./rrc_out/MAC-CellGroupConfig.c \
+       ./rrc_out/DataInactivityTimer.c \
+       ./rrc_out/MeasConfig.c  \
+       ./rrc_out/MeasObjectToRemoveList.c      \
+       ./rrc_out/MeasIdToRemoveList.c  \
+       ./rrc_out/ReportConfigToRemoveList.c    \
+       ./rrc_out/MeasGapConfig.c       \
+       ./rrc_out/GapConfig.c   \
+       ./rrc_out/MeasGapSharingConfig.c        \
+       ./rrc_out/MeasGapSharingScheme.c        \
+       ./rrc_out/MeasId.c      \
+       ./rrc_out/MeasIdToAddModList.c  \
+       ./rrc_out/MeasIdToAddMod.c      \
+       ./rrc_out/MeasObjectEUTRA.c     \
+       ./rrc_out/EUTRA-CellIndexList.c \
+       ./rrc_out/EUTRA-CellIndex.c     \
+       ./rrc_out/EUTRA-Cell.c  \
+       ./rrc_out/EUTRA-BlackCell.c     \
+       ./rrc_out/MeasObjectId.c        \
+       ./rrc_out/MeasObjectNR.c        \
+       ./rrc_out/ReferenceSignalConfig.c       \
+       ./rrc_out/SSB-ConfigMobility.c  \
+       ./rrc_out/Q-OffsetRangeList.c   \
+       ./rrc_out/ThresholdNR.c \
+       ./rrc_out/CellsToAddModList.c   \
+       ./rrc_out/CellsToAddMod.c       \
+       ./rrc_out/MeasObjectToAddModList.c      \
+       ./rrc_out/MeasObjectToAddMod.c  \
+       ./rrc_out/MeasResultCellListSFTD.c      \
+       ./rrc_out/MeasResultCellSFTD.c  \
+       ./rrc_out/MeasResults.c \
+       ./rrc_out/MeasResultServMOList.c        \
+       ./rrc_out/MeasResultServMO.c    \
+       ./rrc_out/MeasResultListNR.c    \
+       ./rrc_out/MeasResultNR.c        \
+       ./rrc_out/MeasResultListEUTRA.c \
+       ./rrc_out/MeasResultEUTRA.c     \
+       ./rrc_out/MultiBandInfoListEUTRA.c      \
+       ./rrc_out/MeasQuantityResults.c \
+       ./rrc_out/MeasQuantityResultsEUTRA.c    \
+       ./rrc_out/ResultsPerSSB-IndexList.c     \
+       ./rrc_out/ResultsPerSSB-Index.c \
+       ./rrc_out/ResultsPerCSI-RS-IndexList.c  \
+       ./rrc_out/ResultsPerCSI-RS-Index.c      \
+       ./rrc_out/MeasResultSCG-Failure.c       \
+       ./rrc_out/MeasResultList2NR.c   \
+       ./rrc_out/MeasResult2NR.c       \
+       ./rrc_out/MobilityStateParameters.c     \
+       ./rrc_out/MultiFrequencyBandListNR.c    \
+       ./rrc_out/MultiFrequencyBandListNR-SIB.c        \
+       ./rrc_out/NR-MultiBandInfo.c    \
+       ./rrc_out/NextHopChainingCount.c        \
+       ./rrc_out/NG-5G-S-TMSI.c        \
+       ./rrc_out/NR-NS-PmaxList.c      \
+       ./rrc_out/NR-NS-PmaxValue.c     \
+       ./rrc_out/NZP-CSI-RS-Resource.c \
+       ./rrc_out/NZP-CSI-RS-ResourceId.c       \
+       ./rrc_out/NZP-CSI-RS-ResourceSet.c      \
+       ./rrc_out/NZP-CSI-RS-ResourceSetId.c    \
+       ./rrc_out/P-Max.c       \
+       ./rrc_out/PCI-List.c    \
+       ./rrc_out/PCI-Range.c   \
+       ./rrc_out/PCI-RangeElement.c    \
+       ./rrc_out/PCI-RangeIndex.c      \
+       ./rrc_out/PCI-RangeIndexList.c  \
+       ./rrc_out/PDCCH-Config.c        \
+       ./rrc_out/PDCCH-ConfigCommon.c  \
+       ./rrc_out/PDCCH-ConfigSIB1.c    \
+       ./rrc_out/PDCCH-ServingCellConfig.c     \
+       ./rrc_out/PDCP-Config.c \
+       ./rrc_out/UL-DataSplitThreshold.c       \
+       ./rrc_out/PDSCH-Config.c        \
+       ./rrc_out/RateMatchPatternGroup.c       \
+       ./rrc_out/PDSCH-ConfigCommon.c  \
+       ./rrc_out/PDSCH-ServingCellConfig.c     \
+       ./rrc_out/PDSCH-CodeBlockGroupTransmission.c    \
+       ./rrc_out/PDSCH-TimeDomainResourceAllocationList.c      \
+       ./rrc_out/PDSCH-TimeDomainResourceAllocation.c  \
+       ./rrc_out/PHR-Config.c  \
+       ./rrc_out/PhysCellId.c  \
+       ./rrc_out/PhysicalCellGroupConfig.c     \
+       ./rrc_out/PLMN-IdentitY.c       \
+       ./rrc_out/MCC.c \
+       ./rrc_out/MNC.c \
+       ./rrc_out/MCC-MNC-Digit.c       \
+       ./rrc_out/PLMN-IdentityInfoList.c       \
+       ./rrc_out/PLMN-IdentityInfo.c   \
+       ./rrc_out/PRB-Id.c      \
+       ./rrc_out/PTRS-DownlinkConfig.c \
+       ./rrc_out/PTRS-UplinkConfig.c   \
+       ./rrc_out/PUCCH-Config.c        \
+       ./rrc_out/PUCCH-FormatConfig.c  \
+       ./rrc_out/PUCCH-MaxCodeRate.c   \
+       ./rrc_out/PUCCH-ResourceSet.c   \
+       ./rrc_out/PUCCH-ResourceSetId.c \
+       ./rrc_out/PUCCH-Resource.c      \
+       ./rrc_out/PUCCH-ResourceId.c    \
+       ./rrc_out/PUCCH-format0.c       \
+       ./rrc_out/PUCCH-format1.c       \
+       ./rrc_out/PUCCH-format2.c       \
+       ./rrc_out/PUCCH-format3.c       \
+       ./rrc_out/PUCCH-format4.c       \
+       ./rrc_out/PUCCH-ConfigCommon.c  \
+       ./rrc_out/PUCCH-PathlossReferenceRS-Id.c        \
+       ./rrc_out/PUCCH-PowerControl.c  \
+       ./rrc_out/P0-PUCCH.c    \
+       ./rrc_out/P0-PUCCH-Id.c \
+       ./rrc_out/PUCCH-PathlossReferenceRS.c   \
+       ./rrc_out/PUCCH-SpatialRelationInfo.c   \
+       ./rrc_out/PUCCH-SpatialRelationInfoId.c \
+       ./rrc_out/PUCCH-TPC-CommandConfig.c     \
+       ./rrc_out/PUSCH-Config.c        \
+       ./rrc_out/UCI-OnPUSCH.c \
+       ./rrc_out/PUSCH-ConfigCommon.c  \
+       ./rrc_out/PUSCH-PowerControl.c  \
+       ./rrc_out/P0-PUSCH-AlphaSet.c   \
+       ./rrc_out/P0-PUSCH-AlphaSetId.c \
+       ./rrc_out/PUSCH-PathlossReferenceRS.c   \
+       ./rrc_out/PUSCH-PathlossReferenceRS-Id.c        \
+       ./rrc_out/SRI-PUSCH-PowerControl.c      \
+       ./rrc_out/SRI-PUSCH-PowerControlId.c    \
+       ./rrc_out/BetaOffsets.c \
+       ./rrc_out/PUSCH-ServingCellConfig.c     \
+       ./rrc_out/PUSCH-CodeBlockGroupTransmission.c    \
+       ./rrc_out/PUSCH-TimeDomainResourceAllocationList.c      \
+       ./rrc_out/PUSCH-TimeDomainResourceAllocation.c  \
+       ./rrc_out/PUSCH-TPC-CommandConfig.c     \
+       ./rrc_out/Q-OffsetRange.c       \
+       ./rrc_out/Q-QualMin.c   \
+       ./rrc_out/Q-RxLevMin.c  \
+       ./rrc_out/QuantityConfig.c      \
+       ./rrc_out/QuantityConfigNR.c    \
+       ./rrc_out/QuantityConfigRS.c    \
+       ./rrc_out/FilterConfig.c        \
+       ./rrc_out/RACH-ConfigCommon.c   \
+       ./rrc_out/RACH-ConfigDedicated.c        \
+       ./rrc_out/CFRA.c        \
+       ./rrc_out/CFRA-SSB-Resource.c   \
+       ./rrc_out/CFRA-CSIRS-Resource.c \
+       ./rrc_out/RACH-ConfigGeneric.c  \
+       ./rrc_out/RA-Prioritization.c   \
+       ./rrc_out/RadioBearerConfig.c   \
+       ./rrc_out/SRB-ToAddModList.c    \
+       ./rrc_out/SRB-ToAddMod.c        \
+       ./rrc_out/DRB-ToAddModList.c    \
+       ./rrc_out/DRB-ToAddMod.c        \
+       ./rrc_out/DRB-ToReleaseList.c   \
+       ./rrc_out/SecurityConfig.c      \
+       ./rrc_out/RadioLinkMonitoringConfig.c   \
+       ./rrc_out/RadioLinkMonitoringRS.c       \
+       ./rrc_out/RadioLinkMonitoringRS-Id.c    \
+       ./rrc_out/RAN-AreaCode.c        \
+       ./rrc_out/RateMatchPattern.c    \
+       ./rrc_out/RateMatchPatternId.c  \
+       ./rrc_out/RateMatchPatternLTE-CRS.c     \
+       ./rrc_out/RejectWaitTime.c      \
+       ./rrc_out/ReportConfigId.c      \
+       ./rrc_out/ReportConfigInterRAT.c        \
+       ./rrc_out/ReportCGI-EUTRA.c     \
+       ./rrc_out/EventTriggerConfigInterRAT.c  \
+       ./rrc_out/PeriodicalReportConfigInterRAT.c      \
+       ./rrc_out/MeasTriggerQuantityEUTRA.c    \
+       ./rrc_out/RSRP-RangeEUTRA.c     \
+       ./rrc_out/RSRQ-RangeEUTRA.c     \
+       ./rrc_out/SINR-RangeEUTRA.c     \
+       ./rrc_out/ReportConfigNR.c      \
+       ./rrc_out/ReportCGI.c   \
+       ./rrc_out/EventTriggerConfig.c  \
+       ./rrc_out/PeriodicalReportConfig.c      \
+       ./rrc_out/NR-RS-Type.c  \
+       ./rrc_out/MeasTriggerQuantity.c \
+       ./rrc_out/MeasTriggerQuantityOffset.c   \
+       ./rrc_out/MeasReportQuantity.c  \
+       ./rrc_out/ReportConfigToAddModList.c    \
+       ./rrc_out/ReportConfigToAddMod.c        \
+       ./rrc_out/ReportInterval.c      \
+       ./rrc_out/ReselectionThreshold.c        \
+       ./rrc_out/ReselectionThresholdQ.c       \
+       ./rrc_out/ResumeCause.c \
+       ./rrc_out/RLC-BearerConfig.c    \
+       ./rrc_out/RLC-Config.c  \
+       ./rrc_out/UL-AM-RLC.c   \
+       ./rrc_out/DL-AM-RLC.c   \
+       ./rrc_out/UL-UM-RLC.c   \
+       ./rrc_out/DL-UM-RLC.c   \
+       ./rrc_out/T-PollRetransmit.c    \
+       ./rrc_out/PollPDU.c     \
+       ./rrc_out/PollByte.c    \
+       ./rrc_out/T-Reassembly.c        \
+       ./rrc_out/T-StatusProhibit.c    \
+       ./rrc_out/SN-FieldLengthUM.c    \
+       ./rrc_out/SN-FieldLengthAM.c    \
+       ./rrc_out/RLF-TimersAndConstants.c      \
+       ./rrc_out/RNTI-Value.c  \
+       ./rrc_out/RSRP-Range.c  \
+       ./rrc_out/RSRQ-Range.c  \
+       ./rrc_out/SCellIndex.c  \
+       ./rrc_out/SchedulingRequestConfig.c     \
+       ./rrc_out/SchedulingRequestToAddMod.c   \
+       ./rrc_out/SchedulingRequestId.c \
+       ./rrc_out/SchedulingRequestResourceConfig.c     \
+       ./rrc_out/SchedulingRequestResourceId.c \
+       ./rrc_out/ScramblingId.c        \
+       ./rrc_out/SCS-SpecificCarrier.c \
+       ./rrc_out/SDAP-Config.c \
+       ./rrc_out/QFI.c \
+       ./rrc_out/PDU-SessionID.c       \
+       ./rrc_out/SearchSpace.c \
+       ./rrc_out/SearchSpaceId.c       \
+       ./rrc_out/SearchSpaceZero.c     \
+       ./rrc_out/SecurityAlgorithmConfig.c     \
+       ./rrc_out/IntegrityProtAlgorithm.c      \
+       ./rrc_out/CipheringAlgorithm.c  \
+       ./rrc_out/ServCellIndex.c       \
+       ./rrc_out/ServingCellConfig.c   \
+       ./rrc_out/UplinkConfig.c        \
+       ./rrc_out/ServingCellConfigCommon.c     \
+       ./rrc_out/ServingCellConfigCommonSIB.c  \
+       ./rrc_out/ShortI-RNTI-Value.c   \
+       ./rrc_out/ShortMAC-I.c  \
+       ./rrc_out/SINR-Range.c  \
+       ./rrc_out/SI-SchedulingInfo.c   \
+       ./rrc_out/SchedulingInfo.c      \
+       ./rrc_out/SIB-Mapping.c \
+       ./rrc_out/SIB-TypeInfo.c        \
+       ./rrc_out/SI-RequestConfig.c    \
+       ./rrc_out/SI-RequestResources.c \
+       ./rrc_out/SlotFormatCombinationsPerCell.c       \
+       ./rrc_out/SlotFormatCombination.c       \
+       ./rrc_out/SlotFormatCombinationId.c     \
+       ./rrc_out/SlotFormatIndicator.c \
+       ./rrc_out/S-NSSAI.c     \
+       ./rrc_out/SpeedStateScaleFactors.c      \
+       ./rrc_out/SS-RSSI-Measurement.c \
+       ./rrc_out/SPS-Config.c  \
+       ./rrc_out/SRB-Identity.c        \
+       ./rrc_out/SRS-CarrierSwitching.c        \
+       ./rrc_out/SRS-TPC-PDCCH-Config.c        \
+       ./rrc_out/SRS-CC-SetIndex.c     \
+       ./rrc_out/SRS-Config.c  \
+       ./rrc_out/SRS-ResourceSet.c     \
+       ./rrc_out/SRS-ResourceSetId.c   \
+       ./rrc_out/SRS-Resource.c        \
+       ./rrc_out/SRS-SpatialRelationInfo.c     \
+       ./rrc_out/SRS-ResourceId.c      \
+       ./rrc_out/SRS-PeriodicityAndOffset.c    \
+       ./rrc_out/SRS-TPC-CommandConfig.c       \
+       ./rrc_out/SSB-Index.c   \
+       ./rrc_out/SSB-MTC.c     \
+       ./rrc_out/SSB-MTC2.c    \
+       ./rrc_out/SSB-ToMeasure.c       \
+       ./rrc_out/SubcarrierSpacing.c   \
+       ./rrc_out/TAG-Config.c  \
+       ./rrc_out/TAG.c \
+       ./rrc_out/TAG-Id.c      \
+       ./rrc_out/TimeAlignmentTimer.c  \
+       ./rrc_out/TCI-State.c   \
+       ./rrc_out/QCL-Info.c    \
+       ./rrc_out/TCI-StateId.c \
+       ./rrc_out/TDD-UL-DL-ConfigCommon.c      \
+       ./rrc_out/TDD-UL-DL-Pattern.c   \
+       ./rrc_out/TDD-UL-DL-ConfigDedicated.c   \
+       ./rrc_out/TDD-UL-DL-SlotConfig.c        \
+       ./rrc_out/TDD-UL-DL-SlotIndex.c \
+       ./rrc_out/TrackingAreaCode.c    \
+       ./rrc_out/T-Reselection.c       \
+       ./rrc_out/TimeToTrigger.c       \
+       ./rrc_out/UAC-BarringInfoSetIndex.c     \
+       ./rrc_out/UAC-BarringInfoSetList.c      \
+       ./rrc_out/UAC-BarringInfoSet.c  \
+       ./rrc_out/UAC-BarringPerCatList.c       \
+       ./rrc_out/UAC-BarringPerCat.c   \
+       ./rrc_out/UAC-BarringPerPLMN-List.c     \
+       ./rrc_out/UAC-BarringPerPLMN.c  \
+       ./rrc_out/UE-TimersAndConstants.c       \
+       ./rrc_out/UplinkConfigCommon.c  \
+       ./rrc_out/UplinkConfigCommonSIB.c       \
+       ./rrc_out/UplinkTxDirectCurrentList.c   \
+       ./rrc_out/UplinkTxDirectCurrentCell.c   \
+       ./rrc_out/UplinkTxDirectCurrentBWP.c    \
+       ./rrc_out/ZP-CSI-RS-Resource.c  \
+       ./rrc_out/ZP-CSI-RS-ResourceId.c        \
+       ./rrc_out/ZP-CSI-RS-ResourceSet.c       \
+       ./rrc_out/ZP-CSI-RS-ResourceSetId.c     \
+       ./rrc_out/AccessStratumRelease.c        \
+       ./rrc_out/BandCombinationList.c \
+       ./rrc_out/BandCombination.c     \
+       ./rrc_out/BandParameters.c      \
+       ./rrc_out/CA-BandwidthClassEUTRA.c      \
+       ./rrc_out/CA-BandwidthClassNR.c \
+       ./rrc_out/CA-ParametersEUTRA.c  \
+       ./rrc_out/CA-ParametersNR.c     \
+       ./rrc_out/FeatureSetCombination.c       \
+       ./rrc_out/FeatureSetsPerBand.c  \
+       ./rrc_out/FeatureSet.c  \
+       ./rrc_out/FeatureSetCombinationId.c     \
+       ./rrc_out/FeatureSetDownlink.c  \
+       ./rrc_out/CSI-RS-IM-ReceptionForFeedback.c      \
+       ./rrc_out/TypeI-SinglePanelCodebook.c   \
+       ./rrc_out/TypeI-MultiPanelCodebook.c    \
+       ./rrc_out/TypeII-Codebook.c     \
+       ./rrc_out/TypeII-CodebookPortSelection.c        \
+       ./rrc_out/FeatureSetDownlinkId.c        \
+       ./rrc_out/FeatureSetDownlinkPerCC.c     \
+       ./rrc_out/FeatureSetDownlinkPerCC-Id.c  \
+       ./rrc_out/FeatureSetEUTRA-DownlinkId.c  \
+       ./rrc_out/FeatureSetEUTRA-UplinkId.c    \
+       ./rrc_out/FeatureSets.c \
+       ./rrc_out/FeatureSetUplink.c    \
+       ./rrc_out/CSI-ReportFramework.c \
+       ./rrc_out/SRS-Resources.c       \
+       ./rrc_out/FeatureSetUplinkId.c  \
+       ./rrc_out/FeatureSetUplinkPerCC.c       \
+       ./rrc_out/FeatureSetUplinkPerCC-Id.c    \
+       ./rrc_out/FreqBandIndicatorEUTRA.c      \
+       ./rrc_out/FreqBandList.c        \
+       ./rrc_out/FreqBandInformation.c \
+       ./rrc_out/FreqBandInformationEUTRA.c    \
+       ./rrc_out/FreqBandInformationNR.c       \
+       ./rrc_out/AggregatedBandwidth.c \
+       ./rrc_out/FreqSeparationClass.c \
+       ./rrc_out/InterRAT-Parameters.c \
+       ./rrc_out/EUTRA-Parameters.c    \
+       ./rrc_out/EUTRA-ParametersCommon.c      \
+       ./rrc_out/EUTRA-ParametersXDD-Diff.c    \
+       ./rrc_out/MAC-Parameters.c      \
+       ./rrc_out/MAC-ParametersCommon.c        \
+       ./rrc_out/MAC-ParametersXDD-Diff.c      \
+       ./rrc_out/MeasAndMobParameters.c        \
+       ./rrc_out/MeasAndMobParametersCommon.c  \
+       ./rrc_out/MeasAndMobParametersXDD-Diff.c        \
+       ./rrc_out/MeasAndMobParametersFRX-Diff.c        \
+       ./rrc_out/MeasAndMobParametersMRDC.c    \
+       ./rrc_out/MeasAndMobParametersMRDC-Common.c     \
+       ./rrc_out/MeasAndMobParametersMRDC-XDD-Diff.c   \
+       ./rrc_out/MeasAndMobParametersMRDC-FRX-Diff.c   \
+       ./rrc_out/MIMO-LayersDL.c       \
+       ./rrc_out/MIMO-LayersUL.c       \
+       ./rrc_out/MIMO-ParametersPerBand.c      \
+       ./rrc_out/BeamManagementSSB-CSI-RS.c    \
+       ./rrc_out/CSI-RS-ForTracking.c  \
+       ./rrc_out/PTRS-DensityRecommendationDL.c        \
+       ./rrc_out/PTRS-DensityRecommendationUL.c        \
+       ./rrc_out/SRS-TxSwitch.c        \
+       ./rrc_out/ModulationOrder.c     \
+       ./rrc_out/MRDC-Parameters.c     \
+       ./rrc_out/PDCP-Parameters.c     \
+       ./rrc_out/PDCP-ParametersMRDC.c \
+       ./rrc_out/Phy-Parameters.c      \
+       ./rrc_out/Phy-ParametersCommon.c        \
+       ./rrc_out/Phy-ParametersXDD-Diff.c      \
+       ./rrc_out/Phy-ParametersFRX-Diff.c      \
+       ./rrc_out/Phy-ParametersFR1.c   \
+       ./rrc_out/Phy-ParametersFR2.c   \
+       ./rrc_out/Phy-ParametersMRDC.c  \
+       ./rrc_out/NAICS-Capability-Entry.c      \
+       ./rrc_out/RAT-Type.c    \
+       ./rrc_out/RF-Parameters.c       \
+       ./rrc_out/BandNR.c      \
+       ./rrc_out/RF-ParametersMRDC.c   \
+       ./rrc_out/RLC-Parameters.c      \
+       ./rrc_out/SupportedBandwidth.c  \
+       ./rrc_out/UE-CapabilityRAT-ContainerList.c      \
+       ./rrc_out/UE-CapabilityRAT-Container.c  \
+       ./rrc_out/UE-CapabilityRAT-RequestList.c        \
+       ./rrc_out/UE-CapabilityRAT-Request.c    \
+       ./rrc_out/UE-CapabilityRequestFilterNR.c        \
+       ./rrc_out/UE-MRDC-Capability.c  \
+       ./rrc_out/UE-MRDC-CapabilityAddXDD-Mode.c       \
+       ./rrc_out/UE-MRDC-CapabilityAddFRX-Mode.c       \
+       ./rrc_out/GeneralParametersMRDC-XDD-Diff.c      \
+       ./rrc_out/UE-NR-Capability.c    \
+       ./rrc_out/UE-NR-CapabilityAddXDD-Mode.c \
+       ./rrc_out/UE-NR-CapabilityAddFRX-Mode.c \
+       ./rrc_out/EUTRA-AllowedMeasBandwidth.c  \
+       ./rrc_out/EUTRA-MBSFN-SubframeConfigList.c      \
+       ./rrc_out/EUTRA-MBSFN-SubframeConfig.c  \
+       ./rrc_out/EUTRA-MultiBandInfoList.c     \
+       ./rrc_out/EUTRA-MultiBandInfo.c \
+       ./rrc_out/EUTRA-NS-PmaxList.c   \
+       ./rrc_out/EUTRA-NS-PmaxValue.c  \
+       ./rrc_out/EUTRA-PhysCellId.c    \
+       ./rrc_out/EUTRA-PhysCellIdRange.c       \
+       ./rrc_out/EUTRA-PresenceAntennaPort1.c  \
+       ./rrc_out/EUTRA-Q-OffsetRange.c \
+       ./rrc_out/OtherConfig.c \
+       ./rrc_out/RRC-TransactionIdentifier.c   \
+       ./rrc_out/VarPendingRNA-Update.c        \
+       ./rrc_out/VarMeasConfig.c       \
+       ./rrc_out/VarMeasReportList.c   \
+       ./rrc_out/VarMeasReport.c       \
+       ./rrc_out/CellsTriggeredList.c  \
+       ./rrc_out/VarResumeMAC-Input.c  \
+       ./rrc_out/VarShortMAC-Input.c   \
+       ./rrc_out/HandoverCommand.c     \
+       ./rrc_out/HandoverCommand-IEs.c \
+       ./rrc_out/HandoverPreparationInformation.c      \
+       ./rrc_out/HandoverPreparationInformation-IEs.c  \
+       ./rrc_out/AS-Config.c   \
+       ./rrc_out/AS-Context.c  \
+       ./rrc_out/ReestablishmentInfo.c \
+       ./rrc_out/ReestabNCellInfoList.c        \
+       ./rrc_out/ReestabNCellInfo.c    \
+       ./rrc_out/RRM-Config.c  \
+       ./rrc_out/CG-Config.c   \
+       ./rrc_out/CG-Config-IEs.c       \
+       ./rrc_out/MeasConfigSN.c        \
+       ./rrc_out/NR-FreqInfo.c \
+       ./rrc_out/ConfigRestrictModReqSCG.c     \
+       ./rrc_out/BandCombinationIndex.c        \
+       ./rrc_out/BandCombinationInfoSN.c       \
+       ./rrc_out/FR-InfoList.c \
+       ./rrc_out/FR-Info.c     \
+       ./rrc_out/CandidateServingFreqListNR.c  \
+       ./rrc_out/CG-ConfigInfo.c       \
+       ./rrc_out/CG-ConfigInfo-IEs.c   \
+       ./rrc_out/ConfigRestrictInfoSCG.c       \
+       ./rrc_out/BandCombinationInfoList.c     \
+       ./rrc_out/BandCombinationInfo.c \
+       ./rrc_out/FeatureSetEntryIndex.c        \
+       ./rrc_out/DRX-Info.c    \
+       ./rrc_out/MeasConfigMN.c        \
+       ./rrc_out/MRDC-AssistanceInfo.c \
+       ./rrc_out/AffectedCarrierFreqCombInfoMRDC.c     \
+       ./rrc_out/VictimSystemType.c    \
+       ./rrc_out/AffectedCarrierFreqCombEUTRA.c        \
+       ./rrc_out/AffectedCarrierFreqCombNR.c   \
+       ./rrc_out/MeasurementTimingConfiguration.c      \
+       ./rrc_out/MeasurementTimingConfiguration-IEs.c  \
+       ./rrc_out/MeasTimingList.c      \
+       ./rrc_out/MeasTiming.c  \
+       ./rrc_out/UERadioPagingInformation.c    \
+       ./rrc_out/UERadioPagingInformation-IEs.c        \
+       ./rrc_out/UERadioAccessCapabilityInformation.c  \
+       ./rrc_out/UERadioAccessCapabilityInformation-IEs.c
+
+ASN_MODULE_HDRS=       \
+       ./rrc_out/BCCH-BCH-Message.h    \
+       ./rrc_out/BCCH-BCH-MessageType.h        \
+       ./rrc_out/BCCH-DL-SCH-Message.h \
+       ./rrc_out/BCCH-DL-SCH-MessageType.h     \
+       ./rrc_out/DL-CCCH-Message.h     \
+       ./rrc_out/DL-CCCH-MessageType.h \
+       ./rrc_out/DL-DCCH-Message.h     \
+       ./rrc_out/DL-DCCH-MessageType.h \
+       ./rrc_out/PCCH-Message.h        \
+       ./rrc_out/PCCH-MessageType.h    \
+       ./rrc_out/UL-CCCH-Message.h     \
+       ./rrc_out/UL-CCCH-MessageType.h \
+       ./rrc_out/UL-CCCH1-Message.h    \
+       ./rrc_out/UL-CCCH1-MessageType.h        \
+       ./rrc_out/UL-DCCH-Message.h     \
+       ./rrc_out/UL-DCCH-MessageType.h \
+       ./rrc_out/CounterCheck.h        \
+       ./rrc_out/CounterCheck-IEs.h    \
+       ./rrc_out/DRB-CountMSB-InfoList.h       \
+       ./rrc_out/DRB-CountMSB-Info.h   \
+       ./rrc_out/CounterCheckResponse.h        \
+       ./rrc_out/CounterCheckResponse-IEs.h    \
+       ./rrc_out/DRB-CountInfoList.h   \
+       ./rrc_out/DRB-CountInfo.h       \
+       ./rrc_out/DLInformationTransfer.h       \
+       ./rrc_out/DLInformationTransfer-IEs.h   \
+       ./rrc_out/FailureInformation.h  \
+       ./rrc_out/FailureInformation-IEs.h      \
+       ./rrc_out/FailureInfoRLC-Bearer.h       \
+       ./rrc_out/LocationMeasurementIndication.h       \
+       ./rrc_out/LocationMeasurementIndication-IEs.h   \
+       ./rrc_out/MIB.h \
+       ./rrc_out/MeasurementReport.h   \
+       ./rrc_out/MeasurementReport-IEs.h       \
+       ./rrc_out/MobilityFromNRCommand.h       \
+       ./rrc_out/MobilityFromNRCommand-IEs.h   \
+       ./rrc_out/Paging.h      \
+       ./rrc_out/PagingRecordList.h    \
+       ./rrc_out/PagingRecord.h        \
+       ./rrc_out/PagingUE-Identity.h   \
+       ./rrc_out/RRCReestablishment.h  \
+       ./rrc_out/RRCReestablishment-IEs.h      \
+       ./rrc_out/RRCReestablishmentComplete.h  \
+       ./rrc_out/RRCReestablishmentComplete-IEs.h      \
+       ./rrc_out/RRCReestablishmentRequest.h   \
+       ./rrc_out/RRCReestablishmentRequest-IEs.h       \
+       ./rrc_out/ReestabUE-Identity.h  \
+       ./rrc_out/ReestablishmentCause.h        \
+       ./rrc_out/RRCReconfiguration.h  \
+       ./rrc_out/RRCReconfiguration-IEs.h      \
+       ./rrc_out/RRCReconfiguration-v1530-IEs.h        \
+       ./rrc_out/MasterKeyUpdate.h     \
+       ./rrc_out/RRCReconfigurationComplete.h  \
+       ./rrc_out/RRCReconfigurationComplete-IEs.h      \
+       ./rrc_out/RRCReconfigurationComplete-v1530-IEs.h        \
+       ./rrc_out/RRCReject.h   \
+       ./rrc_out/RRCReject-IEs.h       \
+       ./rrc_out/RRCRelease.h  \
+       ./rrc_out/RRCRelease-IEs.h      \
+       ./rrc_out/RRCRelease-v1540-IEs.h        \
+       ./rrc_out/RedirectedCarrierInfo.h       \
+       ./rrc_out/RedirectedCarrierInfo-EUTRA.h \
+       ./rrc_out/CarrierInfoNR.h       \
+       ./rrc_out/SuspendConfig.h       \
+       ./rrc_out/PeriodicRNAU-TimerValue.h     \
+       ./rrc_out/CellReselectionPriorities.h   \
+       ./rrc_out/PagingCycle.h \
+       ./rrc_out/FreqPriorityListEUTRA.h       \
+       ./rrc_out/FreqPriorityListNR.h  \
+       ./rrc_out/FreqPriorityEUTRA.h   \
+       ./rrc_out/FreqPriorityNR.h      \
+       ./rrc_out/RAN-NotificationAreaInfo.h    \
+       ./rrc_out/PLMN-RAN-AreaCellList.h       \
+       ./rrc_out/PLMN-RAN-AreaCell.h   \
+       ./rrc_out/PLMN-RAN-AreaConfigList.h     \
+       ./rrc_out/PLMN-RAN-AreaConfig.h \
+       ./rrc_out/RAN-AreaConfig.h      \
+       ./rrc_out/RRCResume.h   \
+       ./rrc_out/RRCResume-IEs.h       \
+       ./rrc_out/RRCResumeComplete.h   \
+       ./rrc_out/RRCResumeComplete-IEs.h       \
+       ./rrc_out/RRCResumeRequest.h    \
+       ./rrc_out/RRCResumeRequest-IEs.h        \
+       ./rrc_out/RRCResumeRequest1.h   \
+       ./rrc_out/RRCResumeRequest1-IEs.h       \
+       ./rrc_out/RRCSetup.h    \
+       ./rrc_out/RRCSetup-IEs.h        \
+       ./rrc_out/RRCSetupComplete.h    \
+       ./rrc_out/RRCSetupComplete-IEs.h        \
+       ./rrc_out/RegisteredAMF.h       \
+       ./rrc_out/RRCSetupRequest.h     \
+       ./rrc_out/RRCSetupRequest-IEs.h \
+       ./rrc_out/InitialUE-Identity.h  \
+       ./rrc_out/EstablishmentCause.h  \
+       ./rrc_out/RRCSystemInfoRequest.h        \
+       ./rrc_out/RRCSystemInfoRequest-r15-IEs.h        \
+       ./rrc_out/SecurityModeCommand.h \
+       ./rrc_out/SecurityModeCommand-IEs.h     \
+       ./rrc_out/SecurityConfigSMC.h   \
+       ./rrc_out/SecurityModeComplete.h        \
+       ./rrc_out/SecurityModeComplete-IEs.h    \
+       ./rrc_out/SecurityModeFailure.h \
+       ./rrc_out/SecurityModeFailure-IEs.h     \
+       ./rrc_out/SIB1.h        \
+       ./rrc_out/UAC-AccessCategory1-SelectionAssistanceInfo.h \
+       ./rrc_out/SystemInformation.h   \
+       ./rrc_out/SystemInformation-IEs.h       \
+       ./rrc_out/UEAssistanceInformation.h     \
+       ./rrc_out/UEAssistanceInformation-IEs.h \
+       ./rrc_out/DelayBudgetReport.h   \
+       ./rrc_out/UEAssistanceInformation-v1540-IEs.h   \
+       ./rrc_out/OverheatingAssistance.h       \
+       ./rrc_out/ReducedAggregatedBandwidth.h  \
+       ./rrc_out/UECapabilityEnquiry.h \
+       ./rrc_out/UECapabilityEnquiry-IEs.h     \
+       ./rrc_out/UECapabilityInformation.h     \
+       ./rrc_out/UECapabilityInformation-IEs.h \
+       ./rrc_out/ULInformationTransfer.h       \
+       ./rrc_out/ULInformationTransfer-IEs.h   \
+       ./rrc_out/SIB2.h        \
+       ./rrc_out/RangeToBestCell.h     \
+       ./rrc_out/SIB3.h        \
+       ./rrc_out/IntraFreqNeighCellList.h      \
+       ./rrc_out/IntraFreqNeighCellInfo.h      \
+       ./rrc_out/IntraFreqBlackCellList.h      \
+       ./rrc_out/SIB4.h        \
+       ./rrc_out/InterFreqCarrierFreqList.h    \
+       ./rrc_out/InterFreqCarrierFreqInfo.h    \
+       ./rrc_out/InterFreqNeighCellList.h      \
+       ./rrc_out/InterFreqNeighCellInfo.h      \
+       ./rrc_out/InterFreqBlackCellList.h      \
+       ./rrc_out/SIB5.h        \
+       ./rrc_out/CarrierFreqListEUTRA.h        \
+       ./rrc_out/CarrierFreqEUTRA.h    \
+       ./rrc_out/EUTRA-FreqBlackCellList.h     \
+       ./rrc_out/EUTRA-FreqNeighCellList.h     \
+       ./rrc_out/EUTRA-FreqNeighCellInfo.h     \
+       ./rrc_out/SIB6.h        \
+       ./rrc_out/SIB7.h        \
+       ./rrc_out/SIB8.h        \
+       ./rrc_out/SIB9.h        \
+       ./rrc_out/AdditionalSpectrumEmission.h  \
+       ./rrc_out/Alpha.h       \
+       ./rrc_out/AMF-Identifier.h      \
+       ./rrc_out/ARFCN-ValueEUTRA.h    \
+       ./rrc_out/ARFCN-ValueNR.h       \
+       ./rrc_out/BeamFailureRecoveryConfig.h   \
+       ./rrc_out/PRACH-ResourceDedicatedBFR.h  \
+       ./rrc_out/BFR-SSB-Resource.h    \
+       ./rrc_out/BFR-CSIRS-Resource.h  \
+       ./rrc_out/BSR-Config.h  \
+       ./rrc_out/BWP.h \
+       ./rrc_out/BWP-Downlink.h        \
+       ./rrc_out/BWP-DownlinkCommon.h  \
+       ./rrc_out/BWP-DownlinkDedicated.h       \
+       ./rrc_out/BWP-Id.h      \
+       ./rrc_out/BWP-Uplink.h  \
+       ./rrc_out/BWP-UplinkCommon.h    \
+       ./rrc_out/BWP-UplinkDedicated.h \
+       ./rrc_out/CellAccessRelatedInfo.h       \
+       ./rrc_out/CellAccessRelatedInfo-EUTRA-5GC.h     \
+       ./rrc_out/PLMN-IdentityList-EUTRA-5GC.h \
+       ./rrc_out/PLMN-Identity-EUTRA-5GC.h     \
+       ./rrc_out/CellIdentity-EUTRA-5GC.h      \
+       ./rrc_out/CellAccessRelatedInfo-EUTRA-EPC.h     \
+       ./rrc_out/PLMN-IdentityList-EUTRA-EPC.h \
+       ./rrc_out/CellGroupConfig.h     \
+       ./rrc_out/SpCellConfig.h        \
+       ./rrc_out/ReconfigurationWithSync.h     \
+       ./rrc_out/SCellConfig.h \
+       ./rrc_out/CellGroupId.h \
+       ./rrc_out/CellIdentity.h        \
+       ./rrc_out/CellReselectionPriority.h     \
+       ./rrc_out/CellReselectionSubPriority.h  \
+       ./rrc_out/CGI-Info.h    \
+       ./rrc_out/CodebookConfig.h      \
+       ./rrc_out/ConfiguredGrantConfig.h       \
+       ./rrc_out/CG-UCI-OnPUSCH.h      \
+       ./rrc_out/ConnEstFailureControl.h       \
+       ./rrc_out/ControlResourceSet.h  \
+       ./rrc_out/ControlResourceSetId.h        \
+       ./rrc_out/ControlResourceSetZero.h      \
+       ./rrc_out/CrossCarrierSchedulingConfig.h        \
+       ./rrc_out/CSI-AperiodicTriggerStateList.h       \
+       ./rrc_out/CSI-AperiodicTriggerState.h   \
+       ./rrc_out/CSI-AssociatedReportConfigInfo.h      \
+       ./rrc_out/CSI-FrequencyOccupation.h     \
+       ./rrc_out/CSI-IM-Resource.h     \
+       ./rrc_out/CSI-IM-ResourceId.h   \
+       ./rrc_out/CSI-IM-ResourceSet.h  \
+       ./rrc_out/CSI-IM-ResourceSetId.h        \
+       ./rrc_out/CSI-MeasConfig.h      \
+       ./rrc_out/CSI-ReportConfig.h    \
+       ./rrc_out/CSI-ReportPeriodicityAndOffset.h      \
+       ./rrc_out/PUCCH-CSI-Resource.h  \
+       ./rrc_out/PortIndexFor8Ranks.h  \
+       ./rrc_out/PortIndex8.h  \
+       ./rrc_out/PortIndex4.h  \
+       ./rrc_out/PortIndex2.h  \
+       ./rrc_out/CSI-ReportConfigId.h  \
+       ./rrc_out/CSI-ResourceConfig.h  \
+       ./rrc_out/CSI-ResourceConfigId.h        \
+       ./rrc_out/CSI-ResourcePeriodicityAndOffset.h    \
+       ./rrc_out/CSI-RS-ResourceConfigMobility.h       \
+       ./rrc_out/CSI-RS-CellMobility.h \
+       ./rrc_out/CSI-RS-Resource-Mobility.h    \
+       ./rrc_out/CSI-RS-Index.h        \
+       ./rrc_out/CSI-RS-ResourceMapping.h      \
+       ./rrc_out/CSI-SemiPersistentOnPUSCH-TriggerStateList.h  \
+       ./rrc_out/CSI-SemiPersistentOnPUSCH-TriggerState.h      \
+       ./rrc_out/CSI-SSB-ResourceSet.h \
+       ./rrc_out/CSI-SSB-ResourceSetId.h       \
+       ./rrc_out/DedicatedNAS-Message.h        \
+       ./rrc_out/DMRS-DownlinkConfig.h \
+       ./rrc_out/DMRS-UplinkConfig.h   \
+       ./rrc_out/DownlinkConfigCommon.h        \
+       ./rrc_out/DownlinkConfigCommonSIB.h     \
+       ./rrc_out/BCCH-Config.h \
+       ./rrc_out/PCCH-Config.h \
+       ./rrc_out/DownlinkPreemption.h  \
+       ./rrc_out/INT-ConfigurationPerServingCell.h     \
+       ./rrc_out/DRB-Identity.h        \
+       ./rrc_out/DRX-Config.h  \
+       ./rrc_out/FilterCoefficient.h   \
+       ./rrc_out/FreqBandIndicatorNR.h \
+       ./rrc_out/FrequencyInfoDL.h     \
+       ./rrc_out/FrequencyInfoDL-SIB.h \
+       ./rrc_out/FrequencyInfoUL.h     \
+       ./rrc_out/FrequencyInfoUL-SIB.h \
+       ./rrc_out/Hysteresis.h  \
+       ./rrc_out/I-RNTI-Value.h        \
+       ./rrc_out/LocationMeasurementInfo.h     \
+       ./rrc_out/EUTRA-RSTD-InfoList.h \
+       ./rrc_out/EUTRA-RSTD-Info.h     \
+       ./rrc_out/LogicalChannelConfig.h        \
+       ./rrc_out/LogicalChannelIdentity.h      \
+       ./rrc_out/MAC-CellGroupConfig.h \
+       ./rrc_out/DataInactivityTimer.h \
+       ./rrc_out/MeasConfig.h  \
+       ./rrc_out/MeasObjectToRemoveList.h      \
+       ./rrc_out/MeasIdToRemoveList.h  \
+       ./rrc_out/ReportConfigToRemoveList.h    \
+       ./rrc_out/MeasGapConfig.h       \
+       ./rrc_out/GapConfig.h   \
+       ./rrc_out/MeasGapSharingConfig.h        \
+       ./rrc_out/MeasGapSharingScheme.h        \
+       ./rrc_out/MeasId.h      \
+       ./rrc_out/MeasIdToAddModList.h  \
+       ./rrc_out/MeasIdToAddMod.h      \
+       ./rrc_out/MeasObjectEUTRA.h     \
+       ./rrc_out/EUTRA-CellIndexList.h \
+       ./rrc_out/EUTRA-CellIndex.h     \
+       ./rrc_out/EUTRA-Cell.h  \
+       ./rrc_out/EUTRA-BlackCell.h     \
+       ./rrc_out/MeasObjectId.h        \
+       ./rrc_out/MeasObjectNR.h        \
+       ./rrc_out/ReferenceSignalConfig.h       \
+       ./rrc_out/SSB-ConfigMobility.h  \
+       ./rrc_out/Q-OffsetRangeList.h   \
+       ./rrc_out/ThresholdNR.h \
+       ./rrc_out/CellsToAddModList.h   \
+       ./rrc_out/CellsToAddMod.h       \
+       ./rrc_out/MeasObjectToAddModList.h      \
+       ./rrc_out/MeasObjectToAddMod.h  \
+       ./rrc_out/MeasResultCellListSFTD.h      \
+       ./rrc_out/MeasResultCellSFTD.h  \
+       ./rrc_out/MeasResults.h \
+       ./rrc_out/MeasResultServMOList.h        \
+       ./rrc_out/MeasResultServMO.h    \
+       ./rrc_out/MeasResultListNR.h    \
+       ./rrc_out/MeasResultNR.h        \
+       ./rrc_out/MeasResultListEUTRA.h \
+       ./rrc_out/MeasResultEUTRA.h     \
+       ./rrc_out/MultiBandInfoListEUTRA.h      \
+       ./rrc_out/MeasQuantityResults.h \
+       ./rrc_out/MeasQuantityResultsEUTRA.h    \
+       ./rrc_out/ResultsPerSSB-IndexList.h     \
+       ./rrc_out/ResultsPerSSB-Index.h \
+       ./rrc_out/ResultsPerCSI-RS-IndexList.h  \
+       ./rrc_out/ResultsPerCSI-RS-Index.h      \
+       ./rrc_out/MeasResultSCG-Failure.h       \
+       ./rrc_out/MeasResultList2NR.h   \
+       ./rrc_out/MeasResult2NR.h       \
+       ./rrc_out/MobilityStateParameters.h     \
+       ./rrc_out/MultiFrequencyBandListNR.h    \
+       ./rrc_out/MultiFrequencyBandListNR-SIB.h        \
+       ./rrc_out/NR-MultiBandInfo.h    \
+       ./rrc_out/NextHopChainingCount.h        \
+       ./rrc_out/NG-5G-S-TMSI.h        \
+       ./rrc_out/NR-NS-PmaxList.h      \
+       ./rrc_out/NR-NS-PmaxValue.h     \
+       ./rrc_out/NZP-CSI-RS-Resource.h \
+       ./rrc_out/NZP-CSI-RS-ResourceId.h       \
+       ./rrc_out/NZP-CSI-RS-ResourceSet.h      \
+       ./rrc_out/NZP-CSI-RS-ResourceSetId.h    \
+       ./rrc_out/P-Max.h       \
+       ./rrc_out/PCI-List.h    \
+       ./rrc_out/PCI-Range.h   \
+       ./rrc_out/PCI-RangeElement.h    \
+       ./rrc_out/PCI-RangeIndex.h      \
+       ./rrc_out/PCI-RangeIndexList.h  \
+       ./rrc_out/PDCCH-Config.h        \
+       ./rrc_out/PDCCH-ConfigCommon.h  \
+       ./rrc_out/PDCCH-ConfigSIB1.h    \
+       ./rrc_out/PDCCH-ServingCellConfig.h     \
+       ./rrc_out/PDCP-Config.h \
+       ./rrc_out/UL-DataSplitThreshold.h       \
+       ./rrc_out/PDSCH-Config.h        \
+       ./rrc_out/RateMatchPatternGroup.h       \
+       ./rrc_out/PDSCH-ConfigCommon.h  \
+       ./rrc_out/PDSCH-ServingCellConfig.h     \
+       ./rrc_out/PDSCH-CodeBlockGroupTransmission.h    \
+       ./rrc_out/PDSCH-TimeDomainResourceAllocationList.h      \
+       ./rrc_out/PDSCH-TimeDomainResourceAllocation.h  \
+       ./rrc_out/PHR-Config.h  \
+       ./rrc_out/PhysCellId.h  \
+       ./rrc_out/PhysicalCellGroupConfig.h     \
+       ./rrc_out/PLMN-IdentitY.h       \
+       ./rrc_out/MCC.h \
+       ./rrc_out/MNC.h \
+       ./rrc_out/MCC-MNC-Digit.h       \
+       ./rrc_out/PLMN-IdentityInfoList.h       \
+       ./rrc_out/PLMN-IdentityInfo.h   \
+       ./rrc_out/PRB-Id.h      \
+       ./rrc_out/PTRS-DownlinkConfig.h \
+       ./rrc_out/PTRS-UplinkConfig.h   \
+       ./rrc_out/PUCCH-Config.h        \
+       ./rrc_out/PUCCH-FormatConfig.h  \
+       ./rrc_out/PUCCH-MaxCodeRate.h   \
+       ./rrc_out/PUCCH-ResourceSet.h   \
+       ./rrc_out/PUCCH-ResourceSetId.h \
+       ./rrc_out/PUCCH-Resource.h      \
+       ./rrc_out/PUCCH-ResourceId.h    \
+       ./rrc_out/PUCCH-format0.h       \
+       ./rrc_out/PUCCH-format1.h       \
+       ./rrc_out/PUCCH-format2.h       \
+       ./rrc_out/PUCCH-format3.h       \
+       ./rrc_out/PUCCH-format4.h       \
+       ./rrc_out/PUCCH-ConfigCommon.h  \
+       ./rrc_out/PUCCH-PathlossReferenceRS-Id.h        \
+       ./rrc_out/PUCCH-PowerControl.h  \
+       ./rrc_out/P0-PUCCH.h    \
+       ./rrc_out/P0-PUCCH-Id.h \
+       ./rrc_out/PUCCH-PathlossReferenceRS.h   \
+       ./rrc_out/PUCCH-SpatialRelationInfo.h   \
+       ./rrc_out/PUCCH-SpatialRelationInfoId.h \
+       ./rrc_out/PUCCH-TPC-CommandConfig.h     \
+       ./rrc_out/PUSCH-Config.h        \
+       ./rrc_out/UCI-OnPUSCH.h \
+       ./rrc_out/PUSCH-ConfigCommon.h  \
+       ./rrc_out/PUSCH-PowerControl.h  \
+       ./rrc_out/P0-PUSCH-AlphaSet.h   \
+       ./rrc_out/P0-PUSCH-AlphaSetId.h \
+       ./rrc_out/PUSCH-PathlossReferenceRS.h   \
+       ./rrc_out/PUSCH-PathlossReferenceRS-Id.h        \
+       ./rrc_out/SRI-PUSCH-PowerControl.h      \
+       ./rrc_out/SRI-PUSCH-PowerControlId.h    \
+       ./rrc_out/BetaOffsets.h \
+       ./rrc_out/PUSCH-ServingCellConfig.h     \
+       ./rrc_out/PUSCH-CodeBlockGroupTransmission.h    \
+       ./rrc_out/PUSCH-TimeDomainResourceAllocationList.h      \
+       ./rrc_out/PUSCH-TimeDomainResourceAllocation.h  \
+       ./rrc_out/PUSCH-TPC-CommandConfig.h     \
+       ./rrc_out/Q-OffsetRange.h       \
+       ./rrc_out/Q-QualMin.h   \
+       ./rrc_out/Q-RxLevMin.h  \
+       ./rrc_out/QuantityConfig.h      \
+       ./rrc_out/QuantityConfigNR.h    \
+       ./rrc_out/QuantityConfigRS.h    \
+       ./rrc_out/FilterConfig.h        \
+       ./rrc_out/RACH-ConfigCommon.h   \
+       ./rrc_out/RACH-ConfigDedicated.h        \
+       ./rrc_out/CFRA.h        \
+       ./rrc_out/CFRA-SSB-Resource.h   \
+       ./rrc_out/CFRA-CSIRS-Resource.h \
+       ./rrc_out/RACH-ConfigGeneric.h  \
+       ./rrc_out/RA-Prioritization.h   \
+       ./rrc_out/RadioBearerConfig.h   \
+       ./rrc_out/SRB-ToAddModList.h    \
+       ./rrc_out/SRB-ToAddMod.h        \
+       ./rrc_out/DRB-ToAddModList.h    \
+       ./rrc_out/DRB-ToAddMod.h        \
+       ./rrc_out/DRB-ToReleaseList.h   \
+       ./rrc_out/SecurityConfig.h      \
+       ./rrc_out/RadioLinkMonitoringConfig.h   \
+       ./rrc_out/RadioLinkMonitoringRS.h       \
+       ./rrc_out/RadioLinkMonitoringRS-Id.h    \
+       ./rrc_out/RAN-AreaCode.h        \
+       ./rrc_out/RateMatchPattern.h    \
+       ./rrc_out/RateMatchPatternId.h  \
+       ./rrc_out/RateMatchPatternLTE-CRS.h     \
+       ./rrc_out/RejectWaitTime.h      \
+       ./rrc_out/ReportConfigId.h      \
+       ./rrc_out/ReportConfigInterRAT.h        \
+       ./rrc_out/ReportCGI-EUTRA.h     \
+       ./rrc_out/EventTriggerConfigInterRAT.h  \
+       ./rrc_out/PeriodicalReportConfigInterRAT.h      \
+       ./rrc_out/MeasTriggerQuantityEUTRA.h    \
+       ./rrc_out/RSRP-RangeEUTRA.h     \
+       ./rrc_out/RSRQ-RangeEUTRA.h     \
+       ./rrc_out/SINR-RangeEUTRA.h     \
+       ./rrc_out/ReportConfigNR.h      \
+       ./rrc_out/ReportCGI.h   \
+       ./rrc_out/EventTriggerConfig.h  \
+       ./rrc_out/PeriodicalReportConfig.h      \
+       ./rrc_out/NR-RS-Type.h  \
+       ./rrc_out/MeasTriggerQuantity.h \
+       ./rrc_out/MeasTriggerQuantityOffset.h   \
+       ./rrc_out/MeasReportQuantity.h  \
+       ./rrc_out/ReportConfigToAddModList.h    \
+       ./rrc_out/ReportConfigToAddMod.h        \
+       ./rrc_out/ReportInterval.h      \
+       ./rrc_out/ReselectionThreshold.h        \
+       ./rrc_out/ReselectionThresholdQ.h       \
+       ./rrc_out/ResumeCause.h \
+       ./rrc_out/RLC-BearerConfig.h    \
+       ./rrc_out/RLC-Config.h  \
+       ./rrc_out/UL-AM-RLC.h   \
+       ./rrc_out/DL-AM-RLC.h   \
+       ./rrc_out/UL-UM-RLC.h   \
+       ./rrc_out/DL-UM-RLC.h   \
+       ./rrc_out/T-PollRetransmit.h    \
+       ./rrc_out/PollPDU.h     \
+       ./rrc_out/PollByte.h    \
+       ./rrc_out/T-Reassembly.h        \
+       ./rrc_out/T-StatusProhibit.h    \
+       ./rrc_out/SN-FieldLengthUM.h    \
+       ./rrc_out/SN-FieldLengthAM.h    \
+       ./rrc_out/RLF-TimersAndConstants.h      \
+       ./rrc_out/RNTI-Value.h  \
+       ./rrc_out/RSRP-Range.h  \
+       ./rrc_out/RSRQ-Range.h  \
+       ./rrc_out/SCellIndex.h  \
+       ./rrc_out/SchedulingRequestConfig.h     \
+       ./rrc_out/SchedulingRequestToAddMod.h   \
+       ./rrc_out/SchedulingRequestId.h \
+       ./rrc_out/SchedulingRequestResourceConfig.h     \
+       ./rrc_out/SchedulingRequestResourceId.h \
+       ./rrc_out/ScramblingId.h        \
+       ./rrc_out/SCS-SpecificCarrier.h \
+       ./rrc_out/SDAP-Config.h \
+       ./rrc_out/QFI.h \
+       ./rrc_out/PDU-SessionID.h       \
+       ./rrc_out/SearchSpace.h \
+       ./rrc_out/SearchSpaceId.h       \
+       ./rrc_out/SearchSpaceZero.h     \
+       ./rrc_out/SecurityAlgorithmConfig.h     \
+       ./rrc_out/IntegrityProtAlgorithm.h      \
+       ./rrc_out/CipheringAlgorithm.h  \
+       ./rrc_out/ServCellIndex.h       \
+       ./rrc_out/ServingCellConfig.h   \
+       ./rrc_out/UplinkConfig.h        \
+       ./rrc_out/ServingCellConfigCommon.h     \
+       ./rrc_out/ServingCellConfigCommonSIB.h  \
+       ./rrc_out/ShortI-RNTI-Value.h   \
+       ./rrc_out/ShortMAC-I.h  \
+       ./rrc_out/SINR-Range.h  \
+       ./rrc_out/SI-SchedulingInfo.h   \
+       ./rrc_out/SchedulingInfo.h      \
+       ./rrc_out/SIB-Mapping.h \
+       ./rrc_out/SIB-TypeInfo.h        \
+       ./rrc_out/SI-RequestConfig.h    \
+       ./rrc_out/SI-RequestResources.h \
+       ./rrc_out/SlotFormatCombinationsPerCell.h       \
+       ./rrc_out/SlotFormatCombination.h       \
+       ./rrc_out/SlotFormatCombinationId.h     \
+       ./rrc_out/SlotFormatIndicator.h \
+       ./rrc_out/S-NSSAI.h     \
+       ./rrc_out/SpeedStateScaleFactors.h      \
+       ./rrc_out/SS-RSSI-Measurement.h \
+       ./rrc_out/SPS-Config.h  \
+       ./rrc_out/SRB-Identity.h        \
+       ./rrc_out/SRS-CarrierSwitching.h        \
+       ./rrc_out/SRS-TPC-PDCCH-Config.h        \
+       ./rrc_out/SRS-CC-SetIndex.h     \
+       ./rrc_out/SRS-Config.h  \
+       ./rrc_out/SRS-ResourceSet.h     \
+       ./rrc_out/SRS-ResourceSetId.h   \
+       ./rrc_out/SRS-Resource.h        \
+       ./rrc_out/SRS-SpatialRelationInfo.h     \
+       ./rrc_out/SRS-ResourceId.h      \
+       ./rrc_out/SRS-PeriodicityAndOffset.h    \
+       ./rrc_out/SRS-TPC-CommandConfig.h       \
+       ./rrc_out/SSB-Index.h   \
+       ./rrc_out/SSB-MTC.h     \
+       ./rrc_out/SSB-MTC2.h    \
+       ./rrc_out/SSB-ToMeasure.h       \
+       ./rrc_out/SubcarrierSpacing.h   \
+       ./rrc_out/TAG-Config.h  \
+       ./rrc_out/TAG.h \
+       ./rrc_out/TAG-Id.h      \
+       ./rrc_out/TimeAlignmentTimer.h  \
+       ./rrc_out/TCI-State.h   \
+       ./rrc_out/QCL-Info.h    \
+       ./rrc_out/TCI-StateId.h \
+       ./rrc_out/TDD-UL-DL-ConfigCommon.h      \
+       ./rrc_out/TDD-UL-DL-Pattern.h   \
+       ./rrc_out/TDD-UL-DL-ConfigDedicated.h   \
+       ./rrc_out/TDD-UL-DL-SlotConfig.h        \
+       ./rrc_out/TDD-UL-DL-SlotIndex.h \
+       ./rrc_out/TrackingAreaCode.h    \
+       ./rrc_out/T-Reselection.h       \
+       ./rrc_out/TimeToTrigger.h       \
+       ./rrc_out/UAC-BarringInfoSetIndex.h     \
+       ./rrc_out/UAC-BarringInfoSetList.h      \
+       ./rrc_out/UAC-BarringInfoSet.h  \
+       ./rrc_out/UAC-BarringPerCatList.h       \
+       ./rrc_out/UAC-BarringPerCat.h   \
+       ./rrc_out/UAC-BarringPerPLMN-List.h     \
+       ./rrc_out/UAC-BarringPerPLMN.h  \
+       ./rrc_out/UE-TimersAndConstants.h       \
+       ./rrc_out/UplinkConfigCommon.h  \
+       ./rrc_out/UplinkConfigCommonSIB.h       \
+       ./rrc_out/UplinkTxDirectCurrentList.h   \
+       ./rrc_out/UplinkTxDirectCurrentCell.h   \
+       ./rrc_out/UplinkTxDirectCurrentBWP.h    \
+       ./rrc_out/ZP-CSI-RS-Resource.h  \
+       ./rrc_out/ZP-CSI-RS-ResourceId.h        \
+       ./rrc_out/ZP-CSI-RS-ResourceSet.h       \
+       ./rrc_out/ZP-CSI-RS-ResourceSetId.h     \
+       ./rrc_out/AccessStratumRelease.h        \
+       ./rrc_out/BandCombinationList.h \
+       ./rrc_out/BandCombination.h     \
+       ./rrc_out/BandParameters.h      \
+       ./rrc_out/CA-BandwidthClassEUTRA.h      \
+       ./rrc_out/CA-BandwidthClassNR.h \
+       ./rrc_out/CA-ParametersEUTRA.h  \
+       ./rrc_out/CA-ParametersNR.h     \
+       ./rrc_out/FeatureSetCombination.h       \
+       ./rrc_out/FeatureSetsPerBand.h  \
+       ./rrc_out/FeatureSet.h  \
+       ./rrc_out/FeatureSetCombinationId.h     \
+       ./rrc_out/FeatureSetDownlink.h  \
+       ./rrc_out/CSI-RS-IM-ReceptionForFeedback.h      \
+       ./rrc_out/TypeI-SinglePanelCodebook.h   \
+       ./rrc_out/TypeI-MultiPanelCodebook.h    \
+       ./rrc_out/TypeII-Codebook.h     \
+       ./rrc_out/TypeII-CodebookPortSelection.h        \
+       ./rrc_out/FeatureSetDownlinkId.h        \
+       ./rrc_out/FeatureSetDownlinkPerCC.h     \
+       ./rrc_out/FeatureSetDownlinkPerCC-Id.h  \
+       ./rrc_out/FeatureSetEUTRA-DownlinkId.h  \
+       ./rrc_out/FeatureSetEUTRA-UplinkId.h    \
+       ./rrc_out/FeatureSets.h \
+       ./rrc_out/FeatureSetUplink.h    \
+       ./rrc_out/CSI-ReportFramework.h \
+       ./rrc_out/SRS-Resources.h       \
+       ./rrc_out/FeatureSetUplinkId.h  \
+       ./rrc_out/FeatureSetUplinkPerCC.h       \
+       ./rrc_out/FeatureSetUplinkPerCC-Id.h    \
+       ./rrc_out/FreqBandIndicatorEUTRA.h      \
+       ./rrc_out/FreqBandList.h        \
+       ./rrc_out/FreqBandInformation.h \
+       ./rrc_out/FreqBandInformationEUTRA.h    \
+       ./rrc_out/FreqBandInformationNR.h       \
+       ./rrc_out/AggregatedBandwidth.h \
+       ./rrc_out/FreqSeparationClass.h \
+       ./rrc_out/InterRAT-Parameters.h \
+       ./rrc_out/EUTRA-Parameters.h    \
+       ./rrc_out/EUTRA-ParametersCommon.h      \
+       ./rrc_out/EUTRA-ParametersXDD-Diff.h    \
+       ./rrc_out/MAC-Parameters.h      \
+       ./rrc_out/MAC-ParametersCommon.h        \
+       ./rrc_out/MAC-ParametersXDD-Diff.h      \
+       ./rrc_out/MeasAndMobParameters.h        \
+       ./rrc_out/MeasAndMobParametersCommon.h  \
+       ./rrc_out/MeasAndMobParametersXDD-Diff.h        \
+       ./rrc_out/MeasAndMobParametersFRX-Diff.h        \
+       ./rrc_out/MeasAndMobParametersMRDC.h    \
+       ./rrc_out/MeasAndMobParametersMRDC-Common.h     \
+       ./rrc_out/MeasAndMobParametersMRDC-XDD-Diff.h   \
+       ./rrc_out/MeasAndMobParametersMRDC-FRX-Diff.h   \
+       ./rrc_out/MIMO-LayersDL.h       \
+       ./rrc_out/MIMO-LayersUL.h       \
+       ./rrc_out/MIMO-ParametersPerBand.h      \
+       ./rrc_out/BeamManagementSSB-CSI-RS.h    \
+       ./rrc_out/CSI-RS-ForTracking.h  \
+       ./rrc_out/PTRS-DensityRecommendationDL.h        \
+       ./rrc_out/PTRS-DensityRecommendationUL.h        \
+       ./rrc_out/SRS-TxSwitch.h        \
+       ./rrc_out/ModulationOrder.h     \
+       ./rrc_out/MRDC-Parameters.h     \
+       ./rrc_out/PDCP-Parameters.h     \
+       ./rrc_out/PDCP-ParametersMRDC.h \
+       ./rrc_out/Phy-Parameters.h      \
+       ./rrc_out/Phy-ParametersCommon.h        \
+       ./rrc_out/Phy-ParametersXDD-Diff.h      \
+       ./rrc_out/Phy-ParametersFRX-Diff.h      \
+       ./rrc_out/Phy-ParametersFR1.h   \
+       ./rrc_out/Phy-ParametersFR2.h   \
+       ./rrc_out/Phy-ParametersMRDC.h  \
+       ./rrc_out/NAICS-Capability-Entry.h      \
+       ./rrc_out/RAT-Type.h    \
+       ./rrc_out/RF-Parameters.h       \
+       ./rrc_out/BandNR.h      \
+       ./rrc_out/RF-ParametersMRDC.h   \
+       ./rrc_out/RLC-Parameters.h      \
+       ./rrc_out/SupportedBandwidth.h  \
+       ./rrc_out/UE-CapabilityRAT-ContainerList.h      \
+       ./rrc_out/UE-CapabilityRAT-Container.h  \
+       ./rrc_out/UE-CapabilityRAT-RequestList.h        \
+       ./rrc_out/UE-CapabilityRAT-Request.h    \
+       ./rrc_out/UE-CapabilityRequestFilterNR.h        \
+       ./rrc_out/UE-MRDC-Capability.h  \
+       ./rrc_out/UE-MRDC-CapabilityAddXDD-Mode.h       \
+       ./rrc_out/UE-MRDC-CapabilityAddFRX-Mode.h       \
+       ./rrc_out/GeneralParametersMRDC-XDD-Diff.h      \
+       ./rrc_out/UE-NR-Capability.h    \
+       ./rrc_out/UE-NR-CapabilityAddXDD-Mode.h \
+       ./rrc_out/UE-NR-CapabilityAddFRX-Mode.h \
+       ./rrc_out/EUTRA-AllowedMeasBandwidth.h  \
+       ./rrc_out/EUTRA-MBSFN-SubframeConfigList.h      \
+       ./rrc_out/EUTRA-MBSFN-SubframeConfig.h  \
+       ./rrc_out/EUTRA-MultiBandInfoList.h     \
+       ./rrc_out/EUTRA-MultiBandInfo.h \
+       ./rrc_out/EUTRA-NS-PmaxList.h   \
+       ./rrc_out/EUTRA-NS-PmaxValue.h  \
+       ./rrc_out/EUTRA-PhysCellId.h    \
+       ./rrc_out/EUTRA-PhysCellIdRange.h       \
+       ./rrc_out/EUTRA-PresenceAntennaPort1.h  \
+       ./rrc_out/EUTRA-Q-OffsetRange.h \
+       ./rrc_out/OtherConfig.h \
+       ./rrc_out/RRC-TransactionIdentifier.h   \
+       ./rrc_out/VarPendingRNA-Update.h        \
+       ./rrc_out/VarMeasConfig.h       \
+       ./rrc_out/VarMeasReportList.h   \
+       ./rrc_out/VarMeasReport.h       \
+       ./rrc_out/CellsTriggeredList.h  \
+       ./rrc_out/VarResumeMAC-Input.h  \
+       ./rrc_out/VarShortMAC-Input.h   \
+       ./rrc_out/HandoverCommand.h     \
+       ./rrc_out/HandoverCommand-IEs.h \
+       ./rrc_out/HandoverPreparationInformation.h      \
+       ./rrc_out/HandoverPreparationInformation-IEs.h  \
+       ./rrc_out/AS-Config.h   \
+       ./rrc_out/AS-Context.h  \
+       ./rrc_out/ReestablishmentInfo.h \
+       ./rrc_out/ReestabNCellInfoList.h        \
+       ./rrc_out/ReestabNCellInfo.h    \
+       ./rrc_out/RRM-Config.h  \
+       ./rrc_out/CG-Config.h   \
+       ./rrc_out/CG-Config-IEs.h       \
+       ./rrc_out/MeasConfigSN.h        \
+       ./rrc_out/NR-FreqInfo.h \
+       ./rrc_out/ConfigRestrictModReqSCG.h     \
+       ./rrc_out/BandCombinationIndex.h        \
+       ./rrc_out/BandCombinationInfoSN.h       \
+       ./rrc_out/FR-InfoList.h \
+       ./rrc_out/FR-Info.h     \
+       ./rrc_out/CandidateServingFreqListNR.h  \
+       ./rrc_out/CG-ConfigInfo.h       \
+       ./rrc_out/CG-ConfigInfo-IEs.h   \
+       ./rrc_out/ConfigRestrictInfoSCG.h       \
+       ./rrc_out/BandCombinationInfoList.h     \
+       ./rrc_out/BandCombinationInfo.h \
+       ./rrc_out/FeatureSetEntryIndex.h        \
+       ./rrc_out/DRX-Info.h    \
+       ./rrc_out/MeasConfigMN.h        \
+       ./rrc_out/MRDC-AssistanceInfo.h \
+       ./rrc_out/AffectedCarrierFreqCombInfoMRDC.h     \
+       ./rrc_out/VictimSystemType.h    \
+       ./rrc_out/AffectedCarrierFreqCombEUTRA.h        \
+       ./rrc_out/AffectedCarrierFreqCombNR.h   \
+       ./rrc_out/MeasurementTimingConfiguration.h      \
+       ./rrc_out/MeasurementTimingConfiguration-IEs.h  \
+       ./rrc_out/MeasTimingList.h      \
+       ./rrc_out/MeasTiming.h  \
+       ./rrc_out/UERadioPagingInformation.h    \
+       ./rrc_out/UERadioPagingInformation-IEs.h        \
+       ./rrc_out/UERadioAccessCapabilityInformation.h  \
+       ./rrc_out/UERadioAccessCapabilityInformation-IEs.h
+
+ASN_MODULE_HDRS+=./rrc_out/OPEN_TYPE.h
+ASN_MODULE_SRCS+=./rrc_out/OPEN_TYPE.c
+ASN_MODULE_HDRS+=./rrc_out/constr_CHOICE.h
+ASN_MODULE_HDRS+=./rrc_out/BOOLEAN.h
+ASN_MODULE_SRCS+=./rrc_out/BOOLEAN.c
+ASN_MODULE_HDRS+=./rrc_out/INTEGER.h
+ASN_MODULE_SRCS+=./rrc_out/INTEGER.c
+ASN_MODULE_HDRS+=./rrc_out/NULL.h
+ASN_MODULE_SRCS+=./rrc_out/NULL.c
+ASN_MODULE_HDRS+=./rrc_out/NativeEnumerated.h
+ASN_MODULE_SRCS+=./rrc_out/NativeEnumerated.c
+ASN_MODULE_HDRS+=./rrc_out/NativeInteger.h
+ASN_MODULE_SRCS+=./rrc_out/NativeInteger.c
+ASN_MODULE_HDRS+=./rrc_out/asn_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./rrc_out/asn_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./rrc_out/asn_SET_OF.h
+ASN_MODULE_SRCS+=./rrc_out/asn_SET_OF.c
+ASN_MODULE_SRCS+=./rrc_out/constr_CHOICE.c
+ASN_MODULE_HDRS+=./rrc_out/constr_SEQUENCE.h
+ASN_MODULE_SRCS+=./rrc_out/constr_SEQUENCE.c
+ASN_MODULE_HDRS+=./rrc_out/constr_SEQUENCE_OF.h
+ASN_MODULE_SRCS+=./rrc_out/constr_SEQUENCE_OF.c
+ASN_MODULE_HDRS+=./rrc_out/constr_SET_OF.h
+ASN_MODULE_SRCS+=./rrc_out/constr_SET_OF.c
+ASN_MODULE_HDRS+=./rrc_out/asn_application.h
+ASN_MODULE_SRCS+=./rrc_out/asn_application.c
+ASN_MODULE_HDRS+=./rrc_out/asn_ioc.h
+ASN_MODULE_HDRS+=./rrc_out/asn_system.h
+ASN_MODULE_HDRS+=./rrc_out/asn_codecs.h
+ASN_MODULE_HDRS+=./rrc_out/asn_internal.h
+ASN_MODULE_SRCS+=./rrc_out/asn_internal.c
+ASN_MODULE_HDRS+=./rrc_out/asn_random_fill.h
+ASN_MODULE_SRCS+=./rrc_out/asn_random_fill.c
+ASN_MODULE_HDRS+=./rrc_out/asn_bit_data.h
+ASN_MODULE_SRCS+=./rrc_out/asn_bit_data.c
+ASN_MODULE_HDRS+=./rrc_out/OCTET_STRING.h
+ASN_MODULE_SRCS+=./rrc_out/OCTET_STRING.c
+ASN_MODULE_HDRS+=./rrc_out/BIT_STRING.h
+ASN_MODULE_SRCS+=./rrc_out/BIT_STRING.c
+ASN_MODULE_SRCS+=./rrc_out/asn_codecs_prim.c
+ASN_MODULE_HDRS+=./rrc_out/asn_codecs_prim.h
+ASN_MODULE_HDRS+=./rrc_out/ber_tlv_length.h
+ASN_MODULE_SRCS+=./rrc_out/ber_tlv_length.c
+ASN_MODULE_HDRS+=./rrc_out/ber_tlv_tag.h
+ASN_MODULE_SRCS+=./rrc_out/ber_tlv_tag.c
+ASN_MODULE_HDRS+=./rrc_out/ber_decoder.h
+ASN_MODULE_SRCS+=./rrc_out/ber_decoder.c
+ASN_MODULE_HDRS+=./rrc_out/der_encoder.h
+ASN_MODULE_SRCS+=./rrc_out/der_encoder.c
+ASN_MODULE_HDRS+=./rrc_out/constr_TYPE.h
+ASN_MODULE_SRCS+=./rrc_out/constr_TYPE.c
+ASN_MODULE_HDRS+=./rrc_out/constraints.h
+ASN_MODULE_SRCS+=./rrc_out/constraints.c
+ASN_MODULE_HDRS+=./rrc_out/xer_support.h
+ASN_MODULE_SRCS+=./rrc_out/xer_support.c
+ASN_MODULE_HDRS+=./rrc_out/xer_decoder.h
+ASN_MODULE_SRCS+=./rrc_out/xer_decoder.c
+ASN_MODULE_HDRS+=./rrc_out/xer_encoder.h
+ASN_MODULE_SRCS+=./rrc_out/xer_encoder.c
+ASN_MODULE_HDRS+=./rrc_out/per_support.h
+ASN_MODULE_SRCS+=./rrc_out/per_support.c
+ASN_MODULE_HDRS+=./rrc_out/per_decoder.h
+ASN_MODULE_SRCS+=./rrc_out/per_decoder.c
+ASN_MODULE_HDRS+=./rrc_out/per_encoder.h
+ASN_MODULE_SRCS+=./rrc_out/per_encoder.c
+ASN_MODULE_HDRS+=./rrc_out/per_opentype.h
+ASN_MODULE_SRCS+=./rrc_out/per_opentype.c
+ASN_MODULE_HDRS+=./rrc_out/oer_decoder.h
+ASN_MODULE_HDRS+=./rrc_out/oer_encoder.h
+ASN_MODULE_HDRS+=./rrc_out/oer_support.h
+ASN_MODULE_SRCS+=./rrc_out/oer_decoder.c
+ASN_MODULE_SRCS+=./rrc_out/oer_encoder.c
+ASN_MODULE_SRCS+=./rrc_out/oer_support.c
+ASN_MODULE_SRCS+=./rrc_out/OPEN_TYPE_oer.c
+ASN_MODULE_SRCS+=./rrc_out/INTEGER_oer.c
+ASN_MODULE_SRCS+=./rrc_out/BIT_STRING_oer.c
+ASN_MODULE_SRCS+=./rrc_out/OCTET_STRING_oer.c
+ASN_MODULE_SRCS+=./rrc_out/NativeInteger_oer.c
+ASN_MODULE_SRCS+=./rrc_out/NativeEnumerated_oer.c
+ASN_MODULE_SRCS+=./rrc_out/constr_CHOICE_oer.c
+ASN_MODULE_SRCS+=./rrc_out/constr_SEQUENCE_oer.c
+ASN_MODULE_SRCS+=./rrc_out/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)/./rrc_out/
+libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
+libasncodec_la_LDFLAGS=-lm
diff --git a/src/codec_utils/RRC/MasterKeyUpdate.c b/src/codec_utils/RRC/MasterKeyUpdate.c
new file mode 100644 (file)
index 0000000..b51090b
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MasterKeyUpdate.h"
+
+asn_TYPE_member_t asn_MBR_MasterKeyUpdate_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MasterKeyUpdate, keySetChangeIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "keySetChangeIndicator"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MasterKeyUpdate, nextHopChainingCount),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NextHopChainingCount,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nextHopChainingCount"
+               },
+       { ATF_POINTER, 1, offsetof(struct MasterKeyUpdate, nas_Container),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nas-Container"
+               },
+};
+static const int asn_MAP_MasterKeyUpdate_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MasterKeyUpdate_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MasterKeyUpdate_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* keySetChangeIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nextHopChainingCount */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nas-Container */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MasterKeyUpdate_specs_1 = {
+       sizeof(struct MasterKeyUpdate),
+       offsetof(struct MasterKeyUpdate, _asn_ctx),
+       asn_MAP_MasterKeyUpdate_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MasterKeyUpdate_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MasterKeyUpdate = {
+       "MasterKeyUpdate",
+       "MasterKeyUpdate",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MasterKeyUpdate_tags_1,
+       sizeof(asn_DEF_MasterKeyUpdate_tags_1)
+               /sizeof(asn_DEF_MasterKeyUpdate_tags_1[0]), /* 1 */
+       asn_DEF_MasterKeyUpdate_tags_1, /* Same as above */
+       sizeof(asn_DEF_MasterKeyUpdate_tags_1)
+               /sizeof(asn_DEF_MasterKeyUpdate_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MasterKeyUpdate_1,
+       3,      /* Elements count */
+       &asn_SPC_MasterKeyUpdate_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MasterKeyUpdate.h b/src/codec_utils/RRC/MasterKeyUpdate.h
new file mode 100644 (file)
index 0000000..5df8833
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MasterKeyUpdate_H_
+#define        _MasterKeyUpdate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include "NextHopChainingCount.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MasterKeyUpdate */
+typedef struct MasterKeyUpdate {
+       BOOLEAN_t        keySetChangeIndicator;
+       NextHopChainingCount_t   nextHopChainingCount;
+       OCTET_STRING_t  *nas_Container; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MasterKeyUpdate_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MasterKeyUpdate;
+extern asn_SEQUENCE_specifics_t asn_SPC_MasterKeyUpdate_specs_1;
+extern asn_TYPE_member_t asn_MBR_MasterKeyUpdate_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MasterKeyUpdate_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParameters.c b/src/codec_utils/RRC/MeasAndMobParameters.c
new file mode 100644 (file)
index 0000000..16f7abd
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParameters.h"
+
+#include "MeasAndMobParametersCommon.h"
+#include "MeasAndMobParametersXDD-Diff.h"
+#include "MeasAndMobParametersFRX-Diff.h"
+asn_TYPE_member_t asn_MBR_MeasAndMobParameters_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParameters, measAndMobParametersCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersCommon"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParameters, measAndMobParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersXDD-Diff"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParameters, measAndMobParametersFRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersFRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersFRX-Diff"
+               },
+};
+static const int asn_MAP_MeasAndMobParameters_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measAndMobParametersCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measAndMobParametersXDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measAndMobParametersFRX-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParameters_specs_1 = {
+       sizeof(struct MeasAndMobParameters),
+       offsetof(struct MeasAndMobParameters, _asn_ctx),
+       asn_MAP_MeasAndMobParameters_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParameters_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParameters = {
+       "MeasAndMobParameters",
+       "MeasAndMobParameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParameters_tags_1,
+       sizeof(asn_DEF_MeasAndMobParameters_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParameters_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParameters_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParameters_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParameters_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasAndMobParameters_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParameters.h b/src/codec_utils/RRC/MeasAndMobParameters.h
new file mode 100644 (file)
index 0000000..f117506
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParameters_H_
+#define        _MeasAndMobParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasAndMobParametersCommon;
+struct MeasAndMobParametersXDD_Diff;
+struct MeasAndMobParametersFRX_Diff;
+
+/* MeasAndMobParameters */
+typedef struct MeasAndMobParameters {
+       struct MeasAndMobParametersCommon       *measAndMobParametersCommon;    /* OPTIONAL */
+       struct MeasAndMobParametersXDD_Diff     *measAndMobParametersXDD_Diff;  /* OPTIONAL */
+       struct MeasAndMobParametersFRX_Diff     *measAndMobParametersFRX_Diff;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParameters_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersCommon.c b/src/codec_utils/RRC/MeasAndMobParametersCommon.c
new file mode 100644 (file)
index 0000000..71b788b
--- /dev/null
@@ -0,0 +1,478 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersCommon.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.
+ */
+static int
+memb_supportedGapPattern_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)) {
+               /* 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_ssb_RLM_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_RLM_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ssb_AndCSI_RS_RLM_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_AndCSI_RS_RLM_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eventB_MeasAndReport_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eventB_MeasAndReport_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handoverFDD_TDD_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handoverFDD_TDD_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eutra_CGI_Reporting_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eutra_CGI_Reporting_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nr_CGI_Reporting_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nr_CGI_Reporting_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedGapPattern_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       22      /* (SIZE(22..22)) */};
+static asn_per_constraints_t asn_PER_memb_supportedGapPattern_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  22,  22 }      /* (SIZE(22..22)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_RLM_value2enum_3[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_ssb_RLM_enum2value_3[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_RLM_specs_3 = {
+       asn_MAP_ssb_RLM_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_RLM_enum2value_3,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_RLM_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_ssb_RLM_3 = {
+       "ssb-RLM",
+       "ssb-RLM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_RLM_tags_3,
+       sizeof(asn_DEF_ssb_RLM_tags_3)
+               /sizeof(asn_DEF_ssb_RLM_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ssb_RLM_tags_3, /* Same as above */
+       sizeof(asn_DEF_ssb_RLM_tags_3)
+               /sizeof(asn_DEF_ssb_RLM_tags_3[0]), /* 2 */
+       { &asn_OER_type_ssb_RLM_constr_3, &asn_PER_type_ssb_RLM_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_RLM_specs_3        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_AndCSI_RS_RLM_value2enum_5[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_ssb_AndCSI_RS_RLM_enum2value_5[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_AndCSI_RS_RLM_specs_5 = {
+       asn_MAP_ssb_AndCSI_RS_RLM_value2enum_5, /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_AndCSI_RS_RLM_enum2value_5, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_AndCSI_RS_RLM_tags_5[] = {
+       (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_ssb_AndCSI_RS_RLM_5 = {
+       "ssb-AndCSI-RS-RLM",
+       "ssb-AndCSI-RS-RLM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_AndCSI_RS_RLM_tags_5,
+       sizeof(asn_DEF_ssb_AndCSI_RS_RLM_tags_5)
+               /sizeof(asn_DEF_ssb_AndCSI_RS_RLM_tags_5[0]) - 1, /* 1 */
+       asn_DEF_ssb_AndCSI_RS_RLM_tags_5,       /* Same as above */
+       sizeof(asn_DEF_ssb_AndCSI_RS_RLM_tags_5)
+               /sizeof(asn_DEF_ssb_AndCSI_RS_RLM_tags_5[0]), /* 2 */
+       { &asn_OER_type_ssb_AndCSI_RS_RLM_constr_5, &asn_PER_type_ssb_AndCSI_RS_RLM_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_AndCSI_RS_RLM_specs_5      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_eventB_MeasAndReport_value2enum_9[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_eventB_MeasAndReport_enum2value_9[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_eventB_MeasAndReport_specs_9 = {
+       asn_MAP_eventB_MeasAndReport_value2enum_9,      /* "tag" => N; sorted by tag */
+       asn_MAP_eventB_MeasAndReport_enum2value_9,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_eventB_MeasAndReport_tags_9[] = {
+       (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_eventB_MeasAndReport_9 = {
+       "eventB-MeasAndReport",
+       "eventB-MeasAndReport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_eventB_MeasAndReport_tags_9,
+       sizeof(asn_DEF_eventB_MeasAndReport_tags_9)
+               /sizeof(asn_DEF_eventB_MeasAndReport_tags_9[0]) - 1, /* 1 */
+       asn_DEF_eventB_MeasAndReport_tags_9,    /* Same as above */
+       sizeof(asn_DEF_eventB_MeasAndReport_tags_9)
+               /sizeof(asn_DEF_eventB_MeasAndReport_tags_9[0]), /* 2 */
+       { &asn_OER_type_eventB_MeasAndReport_constr_9, &asn_PER_type_eventB_MeasAndReport_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_eventB_MeasAndReport_specs_9   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handoverFDD_TDD_value2enum_11[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handoverFDD_TDD_enum2value_11[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handoverFDD_TDD_specs_11 = {
+       asn_MAP_handoverFDD_TDD_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_handoverFDD_TDD_enum2value_11,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handoverFDD_TDD_tags_11[] = {
+       (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_handoverFDD_TDD_11 = {
+       "handoverFDD-TDD",
+       "handoverFDD-TDD",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handoverFDD_TDD_tags_11,
+       sizeof(asn_DEF_handoverFDD_TDD_tags_11)
+               /sizeof(asn_DEF_handoverFDD_TDD_tags_11[0]) - 1, /* 1 */
+       asn_DEF_handoverFDD_TDD_tags_11,        /* Same as above */
+       sizeof(asn_DEF_handoverFDD_TDD_tags_11)
+               /sizeof(asn_DEF_handoverFDD_TDD_tags_11[0]), /* 2 */
+       { &asn_OER_type_handoverFDD_TDD_constr_11, &asn_PER_type_handoverFDD_TDD_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handoverFDD_TDD_specs_11       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_eutra_CGI_Reporting_value2enum_13[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_eutra_CGI_Reporting_enum2value_13[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_eutra_CGI_Reporting_specs_13 = {
+       asn_MAP_eutra_CGI_Reporting_value2enum_13,      /* "tag" => N; sorted by tag */
+       asn_MAP_eutra_CGI_Reporting_enum2value_13,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_eutra_CGI_Reporting_tags_13[] = {
+       (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_eutra_CGI_Reporting_13 = {
+       "eutra-CGI-Reporting",
+       "eutra-CGI-Reporting",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_eutra_CGI_Reporting_tags_13,
+       sizeof(asn_DEF_eutra_CGI_Reporting_tags_13)
+               /sizeof(asn_DEF_eutra_CGI_Reporting_tags_13[0]) - 1, /* 1 */
+       asn_DEF_eutra_CGI_Reporting_tags_13,    /* Same as above */
+       sizeof(asn_DEF_eutra_CGI_Reporting_tags_13)
+               /sizeof(asn_DEF_eutra_CGI_Reporting_tags_13[0]), /* 2 */
+       { &asn_OER_type_eutra_CGI_Reporting_constr_13, &asn_PER_type_eutra_CGI_Reporting_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_eutra_CGI_Reporting_specs_13   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nr_CGI_Reporting_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_nr_CGI_Reporting_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nr_CGI_Reporting_specs_15 = {
+       asn_MAP_nr_CGI_Reporting_value2enum_15, /* "tag" => N; sorted by tag */
+       asn_MAP_nr_CGI_Reporting_enum2value_15, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nr_CGI_Reporting_tags_15[] = {
+       (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_nr_CGI_Reporting_15 = {
+       "nr-CGI-Reporting",
+       "nr-CGI-Reporting",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nr_CGI_Reporting_tags_15,
+       sizeof(asn_DEF_nr_CGI_Reporting_tags_15)
+               /sizeof(asn_DEF_nr_CGI_Reporting_tags_15[0]) - 1, /* 1 */
+       asn_DEF_nr_CGI_Reporting_tags_15,       /* Same as above */
+       sizeof(asn_DEF_nr_CGI_Reporting_tags_15)
+               /sizeof(asn_DEF_nr_CGI_Reporting_tags_15[0]), /* 2 */
+       { &asn_OER_type_nr_CGI_Reporting_constr_15, &asn_PER_type_nr_CGI_Reporting_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nr_CGI_Reporting_specs_15      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_8[] = {
+       { ATF_POINTER, 4, offsetof(struct MeasAndMobParametersCommon__ext1, eventB_MeasAndReport),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_eventB_MeasAndReport_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventB-MeasAndReport"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersCommon__ext1, handoverFDD_TDD),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handoverFDD_TDD_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverFDD-TDD"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersCommon__ext1, eutra_CGI_Reporting),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_eutra_CGI_Reporting_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-CGI-Reporting"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersCommon__ext1, nr_CGI_Reporting),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nr_CGI_Reporting_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nr-CGI-Reporting"
+               },
+};
+static const int asn_MAP_ext1_oms_8[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eventB-MeasAndReport */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* handoverFDD-TDD */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* eutra-CGI-Reporting */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nr-CGI-Reporting */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_8 = {
+       sizeof(struct MeasAndMobParametersCommon__ext1),
+       offsetof(struct MeasAndMobParametersCommon__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_8,
+       4,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_8,     /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_8 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_8,
+       sizeof(asn_DEF_ext1_tags_8)
+               /sizeof(asn_DEF_ext1_tags_8[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_8,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_8)
+               /sizeof(asn_DEF_ext1_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_8,
+       4,      /* Elements count */
+       &asn_SPC_ext1_specs_8   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersCommon_1[] = {
+       { ATF_POINTER, 4, offsetof(struct MeasAndMobParametersCommon, supportedGapPattern),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_supportedGapPattern_constr_2, &asn_PER_memb_supportedGapPattern_constr_2,  memb_supportedGapPattern_constraint_1 },
+               0, 0, /* No default value */
+               "supportedGapPattern"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersCommon, ssb_RLM),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_RLM_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-RLM"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersCommon, ssb_AndCSI_RS_RLM),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_AndCSI_RS_RLM_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-AndCSI-RS-RLM"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersCommon, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersCommon_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedGapPattern */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ssb-RLM */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-AndCSI-RS-RLM */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersCommon_specs_1 = {
+       sizeof(struct MeasAndMobParametersCommon),
+       offsetof(struct MeasAndMobParametersCommon, _asn_ctx),
+       asn_MAP_MeasAndMobParametersCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersCommon_oms_1,       /* Optional members */
+       3, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersCommon = {
+       "MeasAndMobParametersCommon",
+       "MeasAndMobParametersCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersCommon_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersCommon_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersCommon_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersCommon_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersCommon.h b/src/codec_utils/RRC/MeasAndMobParametersCommon.h
new file mode 100644 (file)
index 0000000..de5bc40
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersCommon_H_
+#define        _MeasAndMobParametersCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersCommon__ssb_RLM {
+       MeasAndMobParametersCommon__ssb_RLM_supported   = 0
+} e_MeasAndMobParametersCommon__ssb_RLM;
+typedef enum MeasAndMobParametersCommon__ssb_AndCSI_RS_RLM {
+       MeasAndMobParametersCommon__ssb_AndCSI_RS_RLM_supported = 0
+} e_MeasAndMobParametersCommon__ssb_AndCSI_RS_RLM;
+typedef enum MeasAndMobParametersCommon__ext1__eventB_MeasAndReport {
+       MeasAndMobParametersCommon__ext1__eventB_MeasAndReport_supported        = 0
+} e_MeasAndMobParametersCommon__ext1__eventB_MeasAndReport;
+typedef enum MeasAndMobParametersCommon__ext1__handoverFDD_TDD {
+       MeasAndMobParametersCommon__ext1__handoverFDD_TDD_supported     = 0
+} e_MeasAndMobParametersCommon__ext1__handoverFDD_TDD;
+typedef enum MeasAndMobParametersCommon__ext1__eutra_CGI_Reporting {
+       MeasAndMobParametersCommon__ext1__eutra_CGI_Reporting_supported = 0
+} e_MeasAndMobParametersCommon__ext1__eutra_CGI_Reporting;
+typedef enum MeasAndMobParametersCommon__ext1__nr_CGI_Reporting {
+       MeasAndMobParametersCommon__ext1__nr_CGI_Reporting_supported    = 0
+} e_MeasAndMobParametersCommon__ext1__nr_CGI_Reporting;
+
+/* MeasAndMobParametersCommon */
+typedef struct MeasAndMobParametersCommon {
+       BIT_STRING_t    *supportedGapPattern;   /* OPTIONAL */
+       long    *ssb_RLM;       /* OPTIONAL */
+       long    *ssb_AndCSI_RS_RLM;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasAndMobParametersCommon__ext1 {
+               long    *eventB_MeasAndReport;  /* OPTIONAL */
+               long    *handoverFDD_TDD;       /* OPTIONAL */
+               long    *eutra_CGI_Reporting;   /* OPTIONAL */
+               long    *nr_CGI_Reporting;      /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_RLM_3;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_AndCSI_RS_RLM_5;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_eventB_MeasAndReport_9;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handoverFDD_TDD_11;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_eutra_CGI_Reporting_13;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nr_CGI_Reporting_15;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.c b/src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.c
new file mode 100644 (file)
index 0000000..041f496
--- /dev/null
@@ -0,0 +1,543 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersFRX-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_ss_SINR_Meas_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ss_SINR_Meas_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_RSRP_AndRSRQ_MeasWithSSB_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RSRP_AndRSRQ_MeasWithSSB_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_RSRP_AndRSRQ_MeasWithoutSSB_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RSRP_AndRSRQ_MeasWithoutSSB_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_SINR_Meas_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_SINR_Meas_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_RS_RLM_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RS_RLM_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handoverInterF_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handoverInterF_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handoverLTE_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handoverLTE_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handover_eLTE_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handover_eLTE_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ss_SINR_Meas_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_ss_SINR_Meas_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ss_SINR_Meas_specs_2 = {
+       asn_MAP_ss_SINR_Meas_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_ss_SINR_Meas_enum2value_2,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ss_SINR_Meas_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_ss_SINR_Meas_2 = {
+       "ss-SINR-Meas",
+       "ss-SINR-Meas",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ss_SINR_Meas_tags_2,
+       sizeof(asn_DEF_ss_SINR_Meas_tags_2)
+               /sizeof(asn_DEF_ss_SINR_Meas_tags_2[0]) - 1, /* 1 */
+       asn_DEF_ss_SINR_Meas_tags_2,    /* Same as above */
+       sizeof(asn_DEF_ss_SINR_Meas_tags_2)
+               /sizeof(asn_DEF_ss_SINR_Meas_tags_2[0]), /* 2 */
+       { &asn_OER_type_ss_SINR_Meas_constr_2, &asn_PER_type_ss_SINR_Meas_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ss_SINR_Meas_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_RSRP_AndRSRQ_MeasWithSSB_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_RSRP_AndRSRQ_MeasWithSSB_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_RSRP_AndRSRQ_MeasWithSSB_specs_4 = {
+       asn_MAP_csi_RSRP_AndRSRQ_MeasWithSSB_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_csi_RSRP_AndRSRQ_MeasWithSSB_enum2value_4,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4[] = {
+       (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_csi_RSRP_AndRSRQ_MeasWithSSB_4 = {
+       "csi-RSRP-AndRSRQ-MeasWithSSB",
+       "csi-RSRP-AndRSRQ-MeasWithSSB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4,
+       sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4)
+               /sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4[0]) - 1, /* 1 */
+       asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4,    /* Same as above */
+       sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4)
+               /sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_tags_4[0]), /* 2 */
+       { &asn_OER_type_csi_RSRP_AndRSRQ_MeasWithSSB_constr_4, &asn_PER_type_csi_RSRP_AndRSRQ_MeasWithSSB_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_RSRP_AndRSRQ_MeasWithSSB_specs_4   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_RSRP_AndRSRQ_MeasWithoutSSB_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_RSRP_AndRSRQ_MeasWithoutSSB_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_RSRP_AndRSRQ_MeasWithoutSSB_specs_6 = {
+       asn_MAP_csi_RSRP_AndRSRQ_MeasWithoutSSB_value2enum_6,   /* "tag" => N; sorted by tag */
+       asn_MAP_csi_RSRP_AndRSRQ_MeasWithoutSSB_enum2value_6,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6[] = {
+       (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_csi_RSRP_AndRSRQ_MeasWithoutSSB_6 = {
+       "csi-RSRP-AndRSRQ-MeasWithoutSSB",
+       "csi-RSRP-AndRSRQ-MeasWithoutSSB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6,
+       sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6)
+               /sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6[0]) - 1, /* 1 */
+       asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6, /* Same as above */
+       sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6)
+               /sizeof(asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_tags_6[0]), /* 2 */
+       { &asn_OER_type_csi_RSRP_AndRSRQ_MeasWithoutSSB_constr_6, &asn_PER_type_csi_RSRP_AndRSRQ_MeasWithoutSSB_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_RSRP_AndRSRQ_MeasWithoutSSB_specs_6        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_SINR_Meas_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_SINR_Meas_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_SINR_Meas_specs_8 = {
+       asn_MAP_csi_SINR_Meas_value2enum_8,     /* "tag" => N; sorted by tag */
+       asn_MAP_csi_SINR_Meas_enum2value_8,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_SINR_Meas_tags_8[] = {
+       (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_csi_SINR_Meas_8 = {
+       "csi-SINR-Meas",
+       "csi-SINR-Meas",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_SINR_Meas_tags_8,
+       sizeof(asn_DEF_csi_SINR_Meas_tags_8)
+               /sizeof(asn_DEF_csi_SINR_Meas_tags_8[0]) - 1, /* 1 */
+       asn_DEF_csi_SINR_Meas_tags_8,   /* Same as above */
+       sizeof(asn_DEF_csi_SINR_Meas_tags_8)
+               /sizeof(asn_DEF_csi_SINR_Meas_tags_8[0]), /* 2 */
+       { &asn_OER_type_csi_SINR_Meas_constr_8, &asn_PER_type_csi_SINR_Meas_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_SINR_Meas_specs_8  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_RS_RLM_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_RS_RLM_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_RS_RLM_specs_10 = {
+       asn_MAP_csi_RS_RLM_value2enum_10,       /* "tag" => N; sorted by tag */
+       asn_MAP_csi_RS_RLM_enum2value_10,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_RS_RLM_tags_10[] = {
+       (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_csi_RS_RLM_10 = {
+       "csi-RS-RLM",
+       "csi-RS-RLM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_RS_RLM_tags_10,
+       sizeof(asn_DEF_csi_RS_RLM_tags_10)
+               /sizeof(asn_DEF_csi_RS_RLM_tags_10[0]) - 1, /* 1 */
+       asn_DEF_csi_RS_RLM_tags_10,     /* Same as above */
+       sizeof(asn_DEF_csi_RS_RLM_tags_10)
+               /sizeof(asn_DEF_csi_RS_RLM_tags_10[0]), /* 2 */
+       { &asn_OER_type_csi_RS_RLM_constr_10, &asn_PER_type_csi_RS_RLM_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_RS_RLM_specs_10    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handoverInterF_value2enum_14[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handoverInterF_enum2value_14[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handoverInterF_specs_14 = {
+       asn_MAP_handoverInterF_value2enum_14,   /* "tag" => N; sorted by tag */
+       asn_MAP_handoverInterF_enum2value_14,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handoverInterF_tags_14[] = {
+       (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_handoverInterF_14 = {
+       "handoverInterF",
+       "handoverInterF",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handoverInterF_tags_14,
+       sizeof(asn_DEF_handoverInterF_tags_14)
+               /sizeof(asn_DEF_handoverInterF_tags_14[0]) - 1, /* 1 */
+       asn_DEF_handoverInterF_tags_14, /* Same as above */
+       sizeof(asn_DEF_handoverInterF_tags_14)
+               /sizeof(asn_DEF_handoverInterF_tags_14[0]), /* 2 */
+       { &asn_OER_type_handoverInterF_constr_14, &asn_PER_type_handoverInterF_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handoverInterF_specs_14        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handoverLTE_value2enum_16[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handoverLTE_enum2value_16[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handoverLTE_specs_16 = {
+       asn_MAP_handoverLTE_value2enum_16,      /* "tag" => N; sorted by tag */
+       asn_MAP_handoverLTE_enum2value_16,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handoverLTE_tags_16[] = {
+       (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_handoverLTE_16 = {
+       "handoverLTE",
+       "handoverLTE",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handoverLTE_tags_16,
+       sizeof(asn_DEF_handoverLTE_tags_16)
+               /sizeof(asn_DEF_handoverLTE_tags_16[0]) - 1, /* 1 */
+       asn_DEF_handoverLTE_tags_16,    /* Same as above */
+       sizeof(asn_DEF_handoverLTE_tags_16)
+               /sizeof(asn_DEF_handoverLTE_tags_16[0]), /* 2 */
+       { &asn_OER_type_handoverLTE_constr_16, &asn_PER_type_handoverLTE_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handoverLTE_specs_16   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handover_eLTE_value2enum_18[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handover_eLTE_enum2value_18[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handover_eLTE_specs_18 = {
+       asn_MAP_handover_eLTE_value2enum_18,    /* "tag" => N; sorted by tag */
+       asn_MAP_handover_eLTE_enum2value_18,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handover_eLTE_tags_18[] = {
+       (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_handover_eLTE_18 = {
+       "handover-eLTE",
+       "handover-eLTE",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handover_eLTE_tags_18,
+       sizeof(asn_DEF_handover_eLTE_tags_18)
+               /sizeof(asn_DEF_handover_eLTE_tags_18[0]) - 1, /* 1 */
+       asn_DEF_handover_eLTE_tags_18,  /* Same as above */
+       sizeof(asn_DEF_handover_eLTE_tags_18)
+               /sizeof(asn_DEF_handover_eLTE_tags_18[0]), /* 2 */
+       { &asn_OER_type_handover_eLTE_constr_18, &asn_PER_type_handover_eLTE_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handover_eLTE_specs_18 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_13[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersFRX_Diff__ext1, handoverInterF),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handoverInterF_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverInterF"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersFRX_Diff__ext1, handoverLTE),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handoverLTE_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverLTE"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersFRX_Diff__ext1, handover_eLTE),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handover_eLTE_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handover-eLTE"
+               },
+};
+static const int asn_MAP_ext1_oms_13[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_13[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverInterF */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* handoverLTE */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* handover-eLTE */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_13 = {
+       sizeof(struct MeasAndMobParametersFRX_Diff__ext1),
+       offsetof(struct MeasAndMobParametersFRX_Diff__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_13,
+       3,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_13,    /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_13 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_13,
+       sizeof(asn_DEF_ext1_tags_13)
+               /sizeof(asn_DEF_ext1_tags_13[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_13,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_13)
+               /sizeof(asn_DEF_ext1_tags_13[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_13,
+       3,      /* Elements count */
+       &asn_SPC_ext1_specs_13  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersFRX_Diff_1[] = {
+       { ATF_POINTER, 6, offsetof(struct MeasAndMobParametersFRX_Diff, ss_SINR_Meas),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ss_SINR_Meas_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ss-SINR-Meas"
+               },
+       { ATF_POINTER, 5, offsetof(struct MeasAndMobParametersFRX_Diff, csi_RSRP_AndRSRQ_MeasWithSSB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RSRP-AndRSRQ-MeasWithSSB"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasAndMobParametersFRX_Diff, csi_RSRP_AndRSRQ_MeasWithoutSSB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RSRP-AndRSRQ-MeasWithoutSSB"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersFRX_Diff, csi_SINR_Meas),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_SINR_Meas_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-SINR-Meas"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersFRX_Diff, csi_RS_RLM),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_RS_RLM_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-RLM"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersFRX_Diff, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_ext1_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersFRX_Diff_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersFRX_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersFRX_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ss-SINR-Meas */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RSRP-AndRSRQ-MeasWithSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* csi-RSRP-AndRSRQ-MeasWithoutSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* csi-SINR-Meas */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* csi-RS-RLM */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersFRX_Diff_specs_1 = {
+       sizeof(struct MeasAndMobParametersFRX_Diff),
+       offsetof(struct MeasAndMobParametersFRX_Diff, _asn_ctx),
+       asn_MAP_MeasAndMobParametersFRX_Diff_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersFRX_Diff_oms_1,     /* Optional members */
+       5, 1,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersFRX_Diff = {
+       "MeasAndMobParametersFRX-Diff",
+       "MeasAndMobParametersFRX-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersFRX_Diff_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersFRX_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersFRX_Diff_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersFRX_Diff_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersFRX_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersFRX_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersFRX_Diff_1,
+       6,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersFRX_Diff_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.h b/src/codec_utils/RRC/MeasAndMobParametersFRX-Diff.h
new file mode 100644 (file)
index 0000000..71cfb3b
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersFRX_Diff_H_
+#define        _MeasAndMobParametersFRX_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersFRX_Diff__ss_SINR_Meas {
+       MeasAndMobParametersFRX_Diff__ss_SINR_Meas_supported    = 0
+} e_MeasAndMobParametersFRX_Diff__ss_SINR_Meas;
+typedef enum MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithSSB {
+       MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithSSB_supported    = 0
+} e_MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithSSB;
+typedef enum MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithoutSSB {
+       MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithoutSSB_supported = 0
+} e_MeasAndMobParametersFRX_Diff__csi_RSRP_AndRSRQ_MeasWithoutSSB;
+typedef enum MeasAndMobParametersFRX_Diff__csi_SINR_Meas {
+       MeasAndMobParametersFRX_Diff__csi_SINR_Meas_supported   = 0
+} e_MeasAndMobParametersFRX_Diff__csi_SINR_Meas;
+typedef enum MeasAndMobParametersFRX_Diff__csi_RS_RLM {
+       MeasAndMobParametersFRX_Diff__csi_RS_RLM_supported      = 0
+} e_MeasAndMobParametersFRX_Diff__csi_RS_RLM;
+typedef enum MeasAndMobParametersFRX_Diff__ext1__handoverInterF {
+       MeasAndMobParametersFRX_Diff__ext1__handoverInterF_supported    = 0
+} e_MeasAndMobParametersFRX_Diff__ext1__handoverInterF;
+typedef enum MeasAndMobParametersFRX_Diff__ext1__handoverLTE {
+       MeasAndMobParametersFRX_Diff__ext1__handoverLTE_supported       = 0
+} e_MeasAndMobParametersFRX_Diff__ext1__handoverLTE;
+typedef enum MeasAndMobParametersFRX_Diff__ext1__handover_eLTE {
+       MeasAndMobParametersFRX_Diff__ext1__handover_eLTE_supported     = 0
+} e_MeasAndMobParametersFRX_Diff__ext1__handover_eLTE;
+
+/* MeasAndMobParametersFRX-Diff */
+typedef struct MeasAndMobParametersFRX_Diff {
+       long    *ss_SINR_Meas;  /* OPTIONAL */
+       long    *csi_RSRP_AndRSRQ_MeasWithSSB;  /* OPTIONAL */
+       long    *csi_RSRP_AndRSRQ_MeasWithoutSSB;       /* OPTIONAL */
+       long    *csi_SINR_Meas; /* OPTIONAL */
+       long    *csi_RS_RLM;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasAndMobParametersFRX_Diff__ext1 {
+               long    *handoverInterF;        /* OPTIONAL */
+               long    *handoverLTE;   /* OPTIONAL */
+               long    *handover_eLTE; /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersFRX_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ss_SINR_Meas_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_RSRP_AndRSRQ_MeasWithSSB_4;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_RSRP_AndRSRQ_MeasWithoutSSB_6;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_SINR_Meas_8;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_RS_RLM_10; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handoverInterF_14;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handoverLTE_16;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handover_eLTE_18;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersFRX_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersFRX_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersFRX_Diff_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersFRX_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.c b/src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.c
new file mode 100644 (file)
index 0000000..0d0b2db
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersMRDC-Common.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_independentGapConfig_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_independentGapConfig_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_independentGapConfig_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_independentGapConfig_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_independentGapConfig_specs_2 = {
+       asn_MAP_independentGapConfig_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_independentGapConfig_enum2value_2,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_independentGapConfig_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_independentGapConfig_2 = {
+       "independentGapConfig",
+       "independentGapConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_independentGapConfig_tags_2,
+       sizeof(asn_DEF_independentGapConfig_tags_2)
+               /sizeof(asn_DEF_independentGapConfig_tags_2[0]) - 1, /* 1 */
+       asn_DEF_independentGapConfig_tags_2,    /* Same as above */
+       sizeof(asn_DEF_independentGapConfig_tags_2)
+               /sizeof(asn_DEF_independentGapConfig_tags_2[0]), /* 2 */
+       { &asn_OER_type_independentGapConfig_constr_2, &asn_PER_type_independentGapConfig_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_independentGapConfig_specs_2   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_Common_1[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersMRDC_Common, independentGapConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_independentGapConfig_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "independentGapConfig"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersMRDC_Common_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersMRDC_Common_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersMRDC_Common_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* independentGapConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_Common_specs_1 = {
+       sizeof(struct MeasAndMobParametersMRDC_Common),
+       offsetof(struct MeasAndMobParametersMRDC_Common, _asn_ctx),
+       asn_MAP_MeasAndMobParametersMRDC_Common_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersMRDC_Common_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_Common = {
+       "MeasAndMobParametersMRDC-Common",
+       "MeasAndMobParametersMRDC-Common",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersMRDC_Common_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_Common_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_Common_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersMRDC_Common_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_Common_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_Common_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersMRDC_Common_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersMRDC_Common_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.h b/src/codec_utils/RRC/MeasAndMobParametersMRDC-Common.h
new file mode 100644 (file)
index 0000000..3f6fe05
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersMRDC_Common_H_
+#define        _MeasAndMobParametersMRDC_Common_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersMRDC_Common__independentGapConfig {
+       MeasAndMobParametersMRDC_Common__independentGapConfig_supported = 0
+} e_MeasAndMobParametersMRDC_Common__independentGapConfig;
+
+/* MeasAndMobParametersMRDC-Common */
+typedef struct MeasAndMobParametersMRDC_Common {
+       long    *independentGapConfig;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersMRDC_Common_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_independentGapConfig_2;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_Common;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_Common_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_Common_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersMRDC_Common_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.c b/src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.c
new file mode 100644 (file)
index 0000000..9d78560
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersMRDC-FRX-Diff.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_simultaneousRxDataSSB_DiffNumerology_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousRxDataSSB_DiffNumerology_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousRxDataSSB_DiffNumerology_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_simultaneousRxDataSSB_DiffNumerology_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousRxDataSSB_DiffNumerology_specs_2 = {
+       asn_MAP_simultaneousRxDataSSB_DiffNumerology_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousRxDataSSB_DiffNumerology_enum2value_2,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousRxDataSSB_DiffNumerology_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_simultaneousRxDataSSB_DiffNumerology_2 = {
+       "simultaneousRxDataSSB-DiffNumerology",
+       "simultaneousRxDataSSB-DiffNumerology",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2,
+       sizeof(asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2)
+               /sizeof(asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2[0]) - 1, /* 1 */
+       asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2,    /* Same as above */
+       sizeof(asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2)
+               /sizeof(asn_DEF_simultaneousRxDataSSB_DiffNumerology_tags_2[0]), /* 2 */
+       { &asn_OER_type_simultaneousRxDataSSB_DiffNumerology_constr_2, &asn_PER_type_simultaneousRxDataSSB_DiffNumerology_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousRxDataSSB_DiffNumerology_specs_2   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_FRX_Diff_1[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersMRDC_FRX_Diff, simultaneousRxDataSSB_DiffNumerology),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousRxDataSSB_DiffNumerology_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousRxDataSSB-DiffNumerology"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersMRDC_FRX_Diff_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersMRDC_FRX_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* simultaneousRxDataSSB-DiffNumerology */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_FRX_Diff_specs_1 = {
+       sizeof(struct MeasAndMobParametersMRDC_FRX_Diff),
+       offsetof(struct MeasAndMobParametersMRDC_FRX_Diff, _asn_ctx),
+       asn_MAP_MeasAndMobParametersMRDC_FRX_Diff_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersMRDC_FRX_Diff_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_FRX_Diff = {
+       "MeasAndMobParametersMRDC-FRX-Diff",
+       "MeasAndMobParametersMRDC-FRX-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_FRX_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersMRDC_FRX_Diff_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersMRDC_FRX_Diff_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.h b/src/codec_utils/RRC/MeasAndMobParametersMRDC-FRX-Diff.h
new file mode 100644 (file)
index 0000000..2ace5e5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersMRDC_FRX_Diff_H_
+#define        _MeasAndMobParametersMRDC_FRX_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersMRDC_FRX_Diff__simultaneousRxDataSSB_DiffNumerology {
+       MeasAndMobParametersMRDC_FRX_Diff__simultaneousRxDataSSB_DiffNumerology_supported       = 0
+} e_MeasAndMobParametersMRDC_FRX_Diff__simultaneousRxDataSSB_DiffNumerology;
+
+/* MeasAndMobParametersMRDC-FRX-Diff */
+typedef struct MeasAndMobParametersMRDC_FRX_Diff {
+       long    *simultaneousRxDataSSB_DiffNumerology;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersMRDC_FRX_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousRxDataSSB_DiffNumerology_2;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_FRX_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_FRX_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_FRX_Diff_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersMRDC_FRX_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.c b/src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.c
new file mode 100644 (file)
index 0000000..10bcca2
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersMRDC-XDD-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_sftd_MeasPSCell_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sftd_MeasPSCell_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sftd_MeasNR_Cell_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sftd_MeasNR_Cell_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sftd_MeasPSCell_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sftd_MeasPSCell_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sftd_MeasPSCell_specs_2 = {
+       asn_MAP_sftd_MeasPSCell_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_sftd_MeasPSCell_enum2value_2,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sftd_MeasPSCell_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_sftd_MeasPSCell_2 = {
+       "sftd-MeasPSCell",
+       "sftd-MeasPSCell",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sftd_MeasPSCell_tags_2,
+       sizeof(asn_DEF_sftd_MeasPSCell_tags_2)
+               /sizeof(asn_DEF_sftd_MeasPSCell_tags_2[0]) - 1, /* 1 */
+       asn_DEF_sftd_MeasPSCell_tags_2, /* Same as above */
+       sizeof(asn_DEF_sftd_MeasPSCell_tags_2)
+               /sizeof(asn_DEF_sftd_MeasPSCell_tags_2[0]), /* 2 */
+       { &asn_OER_type_sftd_MeasPSCell_constr_2, &asn_PER_type_sftd_MeasPSCell_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sftd_MeasPSCell_specs_2        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sftd_MeasNR_Cell_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sftd_MeasNR_Cell_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sftd_MeasNR_Cell_specs_4 = {
+       asn_MAP_sftd_MeasNR_Cell_value2enum_4,  /* "tag" => N; sorted by tag */
+       asn_MAP_sftd_MeasNR_Cell_enum2value_4,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sftd_MeasNR_Cell_tags_4[] = {
+       (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_sftd_MeasNR_Cell_4 = {
+       "sftd-MeasNR-Cell",
+       "sftd-MeasNR-Cell",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sftd_MeasNR_Cell_tags_4,
+       sizeof(asn_DEF_sftd_MeasNR_Cell_tags_4)
+               /sizeof(asn_DEF_sftd_MeasNR_Cell_tags_4[0]) - 1, /* 1 */
+       asn_DEF_sftd_MeasNR_Cell_tags_4,        /* Same as above */
+       sizeof(asn_DEF_sftd_MeasNR_Cell_tags_4)
+               /sizeof(asn_DEF_sftd_MeasNR_Cell_tags_4[0]), /* 2 */
+       { &asn_OER_type_sftd_MeasNR_Cell_constr_4, &asn_PER_type_sftd_MeasNR_Cell_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sftd_MeasNR_Cell_specs_4       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_XDD_Diff_1[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersMRDC_XDD_Diff, sftd_MeasPSCell),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sftd_MeasPSCell_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sftd-MeasPSCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersMRDC_XDD_Diff, sftd_MeasNR_Cell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sftd_MeasNR_Cell_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sftd-MeasNR-Cell"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersMRDC_XDD_Diff_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersMRDC_XDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sftd-MeasPSCell */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sftd-MeasNR-Cell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_XDD_Diff_specs_1 = {
+       sizeof(struct MeasAndMobParametersMRDC_XDD_Diff),
+       offsetof(struct MeasAndMobParametersMRDC_XDD_Diff, _asn_ctx),
+       asn_MAP_MeasAndMobParametersMRDC_XDD_Diff_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersMRDC_XDD_Diff_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_XDD_Diff = {
+       "MeasAndMobParametersMRDC-XDD-Diff",
+       "MeasAndMobParametersMRDC-XDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_XDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersMRDC_XDD_Diff_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersMRDC_XDD_Diff_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.h b/src/codec_utils/RRC/MeasAndMobParametersMRDC-XDD-Diff.h
new file mode 100644 (file)
index 0000000..0178b90
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersMRDC_XDD_Diff_H_
+#define        _MeasAndMobParametersMRDC_XDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasPSCell {
+       MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasPSCell_supported    = 0
+} e_MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasPSCell;
+typedef enum MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasNR_Cell {
+       MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasNR_Cell_supported   = 0
+} e_MeasAndMobParametersMRDC_XDD_Diff__sftd_MeasNR_Cell;
+
+/* MeasAndMobParametersMRDC-XDD-Diff */
+typedef struct MeasAndMobParametersMRDC_XDD_Diff {
+       long    *sftd_MeasPSCell;       /* OPTIONAL */
+       long    *sftd_MeasNR_Cell;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersMRDC_XDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_sftd_MeasPSCell_2;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sftd_MeasNR_Cell_4;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC_XDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_XDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_XDD_Diff_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersMRDC_XDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC.c b/src/codec_utils/RRC/MeasAndMobParametersMRDC.c
new file mode 100644 (file)
index 0000000..a2428f9
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersMRDC.h"
+
+#include "MeasAndMobParametersMRDC-Common.h"
+#include "MeasAndMobParametersMRDC-XDD-Diff.h"
+#include "MeasAndMobParametersMRDC-FRX-Diff.h"
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersMRDC, measAndMobParametersMRDC_Common),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC_Common,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC-Common"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersMRDC, measAndMobParametersMRDC_XDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC_XDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC-XDD-Diff"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersMRDC, measAndMobParametersMRDC_FRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC_FRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC-FRX-Diff"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersMRDC_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersMRDC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersMRDC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measAndMobParametersMRDC-Common */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measAndMobParametersMRDC-XDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measAndMobParametersMRDC-FRX-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_specs_1 = {
+       sizeof(struct MeasAndMobParametersMRDC),
+       offsetof(struct MeasAndMobParametersMRDC, _asn_ctx),
+       asn_MAP_MeasAndMobParametersMRDC_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersMRDC_oms_1, /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC = {
+       "MeasAndMobParametersMRDC",
+       "MeasAndMobParametersMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersMRDC_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersMRDC_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersMRDC_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersMRDC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersMRDC_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersMRDC_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersMRDC.h b/src/codec_utils/RRC/MeasAndMobParametersMRDC.h
new file mode 100644 (file)
index 0000000..6f0be72
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersMRDC_H_
+#define        _MeasAndMobParametersMRDC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasAndMobParametersMRDC_Common;
+struct MeasAndMobParametersMRDC_XDD_Diff;
+struct MeasAndMobParametersMRDC_FRX_Diff;
+
+/* MeasAndMobParametersMRDC */
+typedef struct MeasAndMobParametersMRDC {
+       struct MeasAndMobParametersMRDC_Common  *measAndMobParametersMRDC_Common;       /* OPTIONAL */
+       struct MeasAndMobParametersMRDC_XDD_Diff        *measAndMobParametersMRDC_XDD_Diff;     /* OPTIONAL */
+       struct MeasAndMobParametersMRDC_FRX_Diff        *measAndMobParametersMRDC_FRX_Diff;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersMRDC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersMRDC;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersMRDC_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersMRDC_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersMRDC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.c b/src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.c
new file mode 100644 (file)
index 0000000..a699817
--- /dev/null
@@ -0,0 +1,372 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasAndMobParametersXDD-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_intraAndInterF_MeasAndReport_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_intraAndInterF_MeasAndReport_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eventA_MeasAndReport_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eventA_MeasAndReport_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handoverInterF_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handoverInterF_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handoverLTE_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handoverLTE_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_handover_eLTE_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_handover_eLTE_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_intraAndInterF_MeasAndReport_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_intraAndInterF_MeasAndReport_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_intraAndInterF_MeasAndReport_specs_2 = {
+       asn_MAP_intraAndInterF_MeasAndReport_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_intraAndInterF_MeasAndReport_enum2value_2,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_intraAndInterF_MeasAndReport_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_intraAndInterF_MeasAndReport_2 = {
+       "intraAndInterF-MeasAndReport",
+       "intraAndInterF-MeasAndReport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_intraAndInterF_MeasAndReport_tags_2,
+       sizeof(asn_DEF_intraAndInterF_MeasAndReport_tags_2)
+               /sizeof(asn_DEF_intraAndInterF_MeasAndReport_tags_2[0]) - 1, /* 1 */
+       asn_DEF_intraAndInterF_MeasAndReport_tags_2,    /* Same as above */
+       sizeof(asn_DEF_intraAndInterF_MeasAndReport_tags_2)
+               /sizeof(asn_DEF_intraAndInterF_MeasAndReport_tags_2[0]), /* 2 */
+       { &asn_OER_type_intraAndInterF_MeasAndReport_constr_2, &asn_PER_type_intraAndInterF_MeasAndReport_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_intraAndInterF_MeasAndReport_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_eventA_MeasAndReport_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_eventA_MeasAndReport_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_eventA_MeasAndReport_specs_4 = {
+       asn_MAP_eventA_MeasAndReport_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_eventA_MeasAndReport_enum2value_4,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_eventA_MeasAndReport_tags_4[] = {
+       (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_eventA_MeasAndReport_4 = {
+       "eventA-MeasAndReport",
+       "eventA-MeasAndReport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_eventA_MeasAndReport_tags_4,
+       sizeof(asn_DEF_eventA_MeasAndReport_tags_4)
+               /sizeof(asn_DEF_eventA_MeasAndReport_tags_4[0]) - 1, /* 1 */
+       asn_DEF_eventA_MeasAndReport_tags_4,    /* Same as above */
+       sizeof(asn_DEF_eventA_MeasAndReport_tags_4)
+               /sizeof(asn_DEF_eventA_MeasAndReport_tags_4[0]), /* 2 */
+       { &asn_OER_type_eventA_MeasAndReport_constr_4, &asn_PER_type_eventA_MeasAndReport_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_eventA_MeasAndReport_specs_4   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handoverInterF_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handoverInterF_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handoverInterF_specs_8 = {
+       asn_MAP_handoverInterF_value2enum_8,    /* "tag" => N; sorted by tag */
+       asn_MAP_handoverInterF_enum2value_8,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handoverInterF_tags_8[] = {
+       (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_handoverInterF_8 = {
+       "handoverInterF",
+       "handoverInterF",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handoverInterF_tags_8,
+       sizeof(asn_DEF_handoverInterF_tags_8)
+               /sizeof(asn_DEF_handoverInterF_tags_8[0]) - 1, /* 1 */
+       asn_DEF_handoverInterF_tags_8,  /* Same as above */
+       sizeof(asn_DEF_handoverInterF_tags_8)
+               /sizeof(asn_DEF_handoverInterF_tags_8[0]), /* 2 */
+       { &asn_OER_type_handoverInterF_constr_8, &asn_PER_type_handoverInterF_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handoverInterF_specs_8 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handoverLTE_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handoverLTE_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handoverLTE_specs_10 = {
+       asn_MAP_handoverLTE_value2enum_10,      /* "tag" => N; sorted by tag */
+       asn_MAP_handoverLTE_enum2value_10,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handoverLTE_tags_10[] = {
+       (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_handoverLTE_10 = {
+       "handoverLTE",
+       "handoverLTE",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handoverLTE_tags_10,
+       sizeof(asn_DEF_handoverLTE_tags_10)
+               /sizeof(asn_DEF_handoverLTE_tags_10[0]) - 1, /* 1 */
+       asn_DEF_handoverLTE_tags_10,    /* Same as above */
+       sizeof(asn_DEF_handoverLTE_tags_10)
+               /sizeof(asn_DEF_handoverLTE_tags_10[0]), /* 2 */
+       { &asn_OER_type_handoverLTE_constr_10, &asn_PER_type_handoverLTE_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handoverLTE_specs_10   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_handover_eLTE_value2enum_12[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_handover_eLTE_enum2value_12[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_handover_eLTE_specs_12 = {
+       asn_MAP_handover_eLTE_value2enum_12,    /* "tag" => N; sorted by tag */
+       asn_MAP_handover_eLTE_enum2value_12,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_handover_eLTE_tags_12[] = {
+       (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_handover_eLTE_12 = {
+       "handover-eLTE",
+       "handover-eLTE",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_handover_eLTE_tags_12,
+       sizeof(asn_DEF_handover_eLTE_tags_12)
+               /sizeof(asn_DEF_handover_eLTE_tags_12[0]) - 1, /* 1 */
+       asn_DEF_handover_eLTE_tags_12,  /* Same as above */
+       sizeof(asn_DEF_handover_eLTE_tags_12)
+               /sizeof(asn_DEF_handover_eLTE_tags_12[0]), /* 2 */
+       { &asn_OER_type_handover_eLTE_constr_12, &asn_PER_type_handover_eLTE_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_handover_eLTE_specs_12 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_7[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersXDD_Diff__ext1, handoverInterF),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handoverInterF_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverInterF"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersXDD_Diff__ext1, handoverLTE),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handoverLTE_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handoverLTE"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersXDD_Diff__ext1, handover_eLTE),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_handover_eLTE_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "handover-eLTE"
+               },
+};
+static const int asn_MAP_ext1_oms_7[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* handoverInterF */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* handoverLTE */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* handover-eLTE */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_7 = {
+       sizeof(struct MeasAndMobParametersXDD_Diff__ext1),
+       offsetof(struct MeasAndMobParametersXDD_Diff__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_7,
+       3,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_7,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_7 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_7,
+       sizeof(asn_DEF_ext1_tags_7)
+               /sizeof(asn_DEF_ext1_tags_7[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_7,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_7)
+               /sizeof(asn_DEF_ext1_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_7,
+       3,      /* Elements count */
+       &asn_SPC_ext1_specs_7   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasAndMobParametersXDD_Diff_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasAndMobParametersXDD_Diff, intraAndInterF_MeasAndReport),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_intraAndInterF_MeasAndReport_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraAndInterF-MeasAndReport"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasAndMobParametersXDD_Diff, eventA_MeasAndReport),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_eventA_MeasAndReport_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventA-MeasAndReport"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasAndMobParametersXDD_Diff, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasAndMobParametersXDD_Diff_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasAndMobParametersXDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasAndMobParametersXDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* intraAndInterF-MeasAndReport */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventA-MeasAndReport */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersXDD_Diff_specs_1 = {
+       sizeof(struct MeasAndMobParametersXDD_Diff),
+       offsetof(struct MeasAndMobParametersXDD_Diff, _asn_ctx),
+       asn_MAP_MeasAndMobParametersXDD_Diff_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasAndMobParametersXDD_Diff_oms_1,     /* Optional members */
+       2, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersXDD_Diff = {
+       "MeasAndMobParametersXDD-Diff",
+       "MeasAndMobParametersXDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasAndMobParametersXDD_Diff_tags_1,
+       sizeof(asn_DEF_MeasAndMobParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersXDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_MeasAndMobParametersXDD_Diff_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasAndMobParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_MeasAndMobParametersXDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasAndMobParametersXDD_Diff_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasAndMobParametersXDD_Diff_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.h b/src/codec_utils/RRC/MeasAndMobParametersXDD-Diff.h
new file mode 100644 (file)
index 0000000..a713e03
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasAndMobParametersXDD_Diff_H_
+#define        _MeasAndMobParametersXDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasAndMobParametersXDD_Diff__intraAndInterF_MeasAndReport {
+       MeasAndMobParametersXDD_Diff__intraAndInterF_MeasAndReport_supported    = 0
+} e_MeasAndMobParametersXDD_Diff__intraAndInterF_MeasAndReport;
+typedef enum MeasAndMobParametersXDD_Diff__eventA_MeasAndReport {
+       MeasAndMobParametersXDD_Diff__eventA_MeasAndReport_supported    = 0
+} e_MeasAndMobParametersXDD_Diff__eventA_MeasAndReport;
+typedef enum MeasAndMobParametersXDD_Diff__ext1__handoverInterF {
+       MeasAndMobParametersXDD_Diff__ext1__handoverInterF_supported    = 0
+} e_MeasAndMobParametersXDD_Diff__ext1__handoverInterF;
+typedef enum MeasAndMobParametersXDD_Diff__ext1__handoverLTE {
+       MeasAndMobParametersXDD_Diff__ext1__handoverLTE_supported       = 0
+} e_MeasAndMobParametersXDD_Diff__ext1__handoverLTE;
+typedef enum MeasAndMobParametersXDD_Diff__ext1__handover_eLTE {
+       MeasAndMobParametersXDD_Diff__ext1__handover_eLTE_supported     = 0
+} e_MeasAndMobParametersXDD_Diff__ext1__handover_eLTE;
+
+/* MeasAndMobParametersXDD-Diff */
+typedef struct MeasAndMobParametersXDD_Diff {
+       long    *intraAndInterF_MeasAndReport;  /* OPTIONAL */
+       long    *eventA_MeasAndReport;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasAndMobParametersXDD_Diff__ext1 {
+               long    *handoverInterF;        /* OPTIONAL */
+               long    *handoverLTE;   /* OPTIONAL */
+               long    *handover_eLTE; /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasAndMobParametersXDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_intraAndInterF_MeasAndReport_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_eventA_MeasAndReport_4;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handoverInterF_8;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handoverLTE_10;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_handover_eLTE_12;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasAndMobParametersXDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasAndMobParametersXDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasAndMobParametersXDD_Diff_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasAndMobParametersXDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasConfig.c b/src/codec_utils/RRC/MeasConfig.c
new file mode 100644 (file)
index 0000000..b9e84ff
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasConfig.h"
+
+#include "MeasObjectToRemoveList.h"
+#include "MeasObjectToAddModList.h"
+#include "ReportConfigToRemoveList.h"
+#include "ReportConfigToAddModList.h"
+#include "MeasIdToRemoveList.h"
+#include "MeasIdToAddModList.h"
+#include "QuantityConfig.h"
+#include "MeasGapConfig.h"
+#include "MeasGapSharingConfig.h"
+static asn_oer_constraints_t asn_OER_type_s_MeasureConfig_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_s_MeasureConfig_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_s_MeasureConfig_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasConfig__s_MeasureConfig, choice.ssb_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-RSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasConfig__s_MeasureConfig, choice.csi_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RSRP"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_s_MeasureConfig_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-RSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RSRP */
+};
+static asn_CHOICE_specifics_t asn_SPC_s_MeasureConfig_specs_8 = {
+       sizeof(struct MeasConfig__s_MeasureConfig),
+       offsetof(struct MeasConfig__s_MeasureConfig, _asn_ctx),
+       offsetof(struct MeasConfig__s_MeasureConfig, present),
+       sizeof(((struct MeasConfig__s_MeasureConfig *)0)->present),
+       asn_MAP_s_MeasureConfig_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_s_MeasureConfig_8 = {
+       "s-MeasureConfig",
+       "s-MeasureConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_s_MeasureConfig_constr_8, &asn_PER_type_s_MeasureConfig_constr_8, CHOICE_constraint },
+       asn_MBR_s_MeasureConfig_8,
+       2,      /* Elements count */
+       &asn_SPC_s_MeasureConfig_specs_8        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasConfig_1[] = {
+       { ATF_POINTER, 10, offsetof(struct MeasConfig, measObjectToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectToRemoveList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectToRemoveList"
+               },
+       { ATF_POINTER, 9, offsetof(struct MeasConfig, measObjectToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectToAddModList"
+               },
+       { ATF_POINTER, 8, offsetof(struct MeasConfig, reportConfigToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigToRemoveList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigToRemoveList"
+               },
+       { ATF_POINTER, 7, offsetof(struct MeasConfig, reportConfigToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigToAddModList"
+               },
+       { ATF_POINTER, 6, offsetof(struct MeasConfig, measIdToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasIdToRemoveList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measIdToRemoveList"
+               },
+       { ATF_POINTER, 5, offsetof(struct MeasConfig, measIdToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasIdToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measIdToAddModList"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasConfig, s_MeasureConfig),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_s_MeasureConfig_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-MeasureConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasConfig, quantityConfig),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QuantityConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "quantityConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasConfig, measGapConfig),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasGapConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measGapConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasConfig, measGapSharingConfig),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasGapSharingConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measGapSharingConfig"
+               },
+};
+static const int asn_MAP_MeasConfig_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+static const ber_tlv_tag_t asn_DEF_MeasConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measObjectToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measObjectToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportConfigToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reportConfigToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* measIdToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* measIdToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* s-MeasureConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* quantityConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* measGapConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* measGapSharingConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasConfig_specs_1 = {
+       sizeof(struct MeasConfig),
+       offsetof(struct MeasConfig, _asn_ctx),
+       asn_MAP_MeasConfig_tag2el_1,
+       10,     /* Count of tags in the map */
+       asn_MAP_MeasConfig_oms_1,       /* Optional members */
+       10, 0,  /* Root/Additions */
+       10,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasConfig = {
+       "MeasConfig",
+       "MeasConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasConfig_tags_1,
+       sizeof(asn_DEF_MeasConfig_tags_1)
+               /sizeof(asn_DEF_MeasConfig_tags_1[0]), /* 1 */
+       asn_DEF_MeasConfig_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasConfig_tags_1)
+               /sizeof(asn_DEF_MeasConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasConfig_1,
+       10,     /* Elements count */
+       &asn_SPC_MeasConfig_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasConfig.h b/src/codec_utils/RRC/MeasConfig.h
new file mode 100644 (file)
index 0000000..a2b8385
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasConfig_H_
+#define        _MeasConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasConfig__s_MeasureConfig_PR {
+       MeasConfig__s_MeasureConfig_PR_NOTHING, /* No components present */
+       MeasConfig__s_MeasureConfig_PR_ssb_RSRP,
+       MeasConfig__s_MeasureConfig_PR_csi_RSRP
+} MeasConfig__s_MeasureConfig_PR;
+
+/* Forward declarations */
+struct MeasObjectToRemoveList;
+struct MeasObjectToAddModList;
+struct ReportConfigToRemoveList;
+struct ReportConfigToAddModList;
+struct MeasIdToRemoveList;
+struct MeasIdToAddModList;
+struct QuantityConfig;
+struct MeasGapConfig;
+struct MeasGapSharingConfig;
+
+/* MeasConfig */
+typedef struct MeasConfig {
+       struct MeasObjectToRemoveList   *measObjectToRemoveList;        /* OPTIONAL */
+       struct MeasObjectToAddModList   *measObjectToAddModList;        /* OPTIONAL */
+       struct ReportConfigToRemoveList *reportConfigToRemoveList;      /* OPTIONAL */
+       struct ReportConfigToAddModList *reportConfigToAddModList;      /* OPTIONAL */
+       struct MeasIdToRemoveList       *measIdToRemoveList;    /* OPTIONAL */
+       struct MeasIdToAddModList       *measIdToAddModList;    /* OPTIONAL */
+       struct MeasConfig__s_MeasureConfig {
+               MeasConfig__s_MeasureConfig_PR present;
+               union MeasConfig__s_MeasureConfig_u {
+                       RSRP_Range_t     ssb_RSRP;
+                       RSRP_Range_t     csi_RSRP;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *s_MeasureConfig;
+       struct QuantityConfig   *quantityConfig;        /* OPTIONAL */
+       struct MeasGapConfig    *measGapConfig; /* OPTIONAL */
+       struct MeasGapSharingConfig     *measGapSharingConfig;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasConfig_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasConfigMN.c b/src/codec_utils/RRC/MeasConfigMN.c
new file mode 100644 (file)
index 0000000..97a95e1
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasConfigMN.h"
+
+#include "NR-FreqInfo.h"
+#include "GapConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_measuredFrequenciesMN_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 <= 32)) {
+               /* 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_measuredFrequenciesMN_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_measuredFrequenciesMN_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_measGapConfig_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_measGapConfig_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapPurpose_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapPurpose_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_measuredFrequenciesMN_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_measuredFrequenciesMN_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_measuredFrequenciesMN_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NR_FreqInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_measuredFrequenciesMN_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_measuredFrequenciesMN_specs_2 = {
+       sizeof(struct MeasConfigMN__measuredFrequenciesMN),
+       offsetof(struct MeasConfigMN__measuredFrequenciesMN, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measuredFrequenciesMN_2 = {
+       "measuredFrequenciesMN",
+       "measuredFrequenciesMN",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_measuredFrequenciesMN_tags_2,
+       sizeof(asn_DEF_measuredFrequenciesMN_tags_2)
+               /sizeof(asn_DEF_measuredFrequenciesMN_tags_2[0]) - 1, /* 1 */
+       asn_DEF_measuredFrequenciesMN_tags_2,   /* Same as above */
+       sizeof(asn_DEF_measuredFrequenciesMN_tags_2)
+               /sizeof(asn_DEF_measuredFrequenciesMN_tags_2[0]), /* 2 */
+       { &asn_OER_type_measuredFrequenciesMN_constr_2, &asn_PER_type_measuredFrequenciesMN_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_measuredFrequenciesMN_2,
+       1,      /* Single element */
+       &asn_SPC_measuredFrequenciesMN_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_measGapConfig_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasConfigMN__measGapConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasConfigMN__measGapConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GapConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_measGapConfig_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_measGapConfig_specs_4 = {
+       sizeof(struct MeasConfigMN__measGapConfig),
+       offsetof(struct MeasConfigMN__measGapConfig, _asn_ctx),
+       offsetof(struct MeasConfigMN__measGapConfig, present),
+       sizeof(((struct MeasConfigMN__measGapConfig *)0)->present),
+       asn_MAP_measGapConfig_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measGapConfig_4 = {
+       "measGapConfig",
+       "measGapConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_measGapConfig_constr_4, &asn_PER_type_measGapConfig_constr_4, CHOICE_constraint },
+       asn_MBR_measGapConfig_4,
+       2,      /* Elements count */
+       &asn_SPC_measGapConfig_specs_4  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_gapPurpose_value2enum_7[] = {
+       { 0,    5,      "perUE" },
+       { 1,    6,      "perFR1" }
+};
+static const unsigned int asn_MAP_gapPurpose_enum2value_7[] = {
+       1,      /* perFR1(1) */
+       0       /* perUE(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_gapPurpose_specs_7 = {
+       asn_MAP_gapPurpose_value2enum_7,        /* "tag" => N; sorted by tag */
+       asn_MAP_gapPurpose_enum2value_7,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_gapPurpose_tags_7[] = {
+       (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_gapPurpose_7 = {
+       "gapPurpose",
+       "gapPurpose",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_gapPurpose_tags_7,
+       sizeof(asn_DEF_gapPurpose_tags_7)
+               /sizeof(asn_DEF_gapPurpose_tags_7[0]) - 1, /* 1 */
+       asn_DEF_gapPurpose_tags_7,      /* Same as above */
+       sizeof(asn_DEF_gapPurpose_tags_7)
+               /sizeof(asn_DEF_gapPurpose_tags_7[0]), /* 2 */
+       { &asn_OER_type_gapPurpose_constr_7, &asn_PER_type_gapPurpose_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_gapPurpose_specs_7     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasConfigMN_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasConfigMN, measuredFrequenciesMN),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_measuredFrequenciesMN_2,
+               0,
+               { &asn_OER_memb_measuredFrequenciesMN_constr_2, &asn_PER_memb_measuredFrequenciesMN_constr_2,  memb_measuredFrequenciesMN_constraint_1 },
+               0, 0, /* No default value */
+               "measuredFrequenciesMN"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasConfigMN, measGapConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_measGapConfig_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measGapConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasConfigMN, gapPurpose),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_gapPurpose_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapPurpose"
+               },
+};
+static const int asn_MAP_MeasConfigMN_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasConfigMN_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasConfigMN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measuredFrequenciesMN */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measGapConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* gapPurpose */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasConfigMN_specs_1 = {
+       sizeof(struct MeasConfigMN),
+       offsetof(struct MeasConfigMN, _asn_ctx),
+       asn_MAP_MeasConfigMN_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasConfigMN_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasConfigMN = {
+       "MeasConfigMN",
+       "MeasConfigMN",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasConfigMN_tags_1,
+       sizeof(asn_DEF_MeasConfigMN_tags_1)
+               /sizeof(asn_DEF_MeasConfigMN_tags_1[0]), /* 1 */
+       asn_DEF_MeasConfigMN_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasConfigMN_tags_1)
+               /sizeof(asn_DEF_MeasConfigMN_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasConfigMN_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasConfigMN_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasConfigMN.h b/src/codec_utils/RRC/MeasConfigMN.h
new file mode 100644 (file)
index 0000000..aefbe03
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasConfigMN_H_
+#define        _MeasConfigMN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasConfigMN__measGapConfig_PR {
+       MeasConfigMN__measGapConfig_PR_NOTHING, /* No components present */
+       MeasConfigMN__measGapConfig_PR_release,
+       MeasConfigMN__measGapConfig_PR_setup
+} MeasConfigMN__measGapConfig_PR;
+typedef enum MeasConfigMN__gapPurpose {
+       MeasConfigMN__gapPurpose_perUE  = 0,
+       MeasConfigMN__gapPurpose_perFR1 = 1
+} e_MeasConfigMN__gapPurpose;
+
+/* Forward declarations */
+struct NR_FreqInfo;
+struct GapConfig;
+
+/* MeasConfigMN */
+typedef struct MeasConfigMN {
+       struct MeasConfigMN__measuredFrequenciesMN {
+               A_SEQUENCE_OF(struct NR_FreqInfo) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *measuredFrequenciesMN;
+       struct MeasConfigMN__measGapConfig {
+               MeasConfigMN__measGapConfig_PR present;
+               union MeasConfigMN__measGapConfig_u {
+                       NULL_t   release;
+                       struct GapConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *measGapConfig;
+       long    *gapPurpose;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasConfigMN_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_gapPurpose_7;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasConfigMN;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasConfigMN_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasConfigMN_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasConfigMN_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasConfigSN.c b/src/codec_utils/RRC/MeasConfigSN.c
new file mode 100644 (file)
index 0000000..93c6f42
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasConfigSN.h"
+
+#include "NR-FreqInfo.h"
+static int
+memb_measuredFrequenciesSN_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 <= 32)) {
+               /* 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_measuredFrequenciesSN_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_measuredFrequenciesSN_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_measuredFrequenciesSN_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_measuredFrequenciesSN_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_measuredFrequenciesSN_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NR_FreqInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_measuredFrequenciesSN_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_measuredFrequenciesSN_specs_2 = {
+       sizeof(struct MeasConfigSN__measuredFrequenciesSN),
+       offsetof(struct MeasConfigSN__measuredFrequenciesSN, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measuredFrequenciesSN_2 = {
+       "measuredFrequenciesSN",
+       "measuredFrequenciesSN",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_measuredFrequenciesSN_tags_2,
+       sizeof(asn_DEF_measuredFrequenciesSN_tags_2)
+               /sizeof(asn_DEF_measuredFrequenciesSN_tags_2[0]) - 1, /* 1 */
+       asn_DEF_measuredFrequenciesSN_tags_2,   /* Same as above */
+       sizeof(asn_DEF_measuredFrequenciesSN_tags_2)
+               /sizeof(asn_DEF_measuredFrequenciesSN_tags_2[0]), /* 2 */
+       { &asn_OER_type_measuredFrequenciesSN_constr_2, &asn_PER_type_measuredFrequenciesSN_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_measuredFrequenciesSN_2,
+       1,      /* Single element */
+       &asn_SPC_measuredFrequenciesSN_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasConfigSN_1[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasConfigSN, measuredFrequenciesSN),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_measuredFrequenciesSN_2,
+               0,
+               { &asn_OER_memb_measuredFrequenciesSN_constr_2, &asn_PER_memb_measuredFrequenciesSN_constr_2,  memb_measuredFrequenciesSN_constraint_1 },
+               0, 0, /* No default value */
+               "measuredFrequenciesSN"
+               },
+};
+static const int asn_MAP_MeasConfigSN_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_MeasConfigSN_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasConfigSN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measuredFrequenciesSN */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasConfigSN_specs_1 = {
+       sizeof(struct MeasConfigSN),
+       offsetof(struct MeasConfigSN, _asn_ctx),
+       asn_MAP_MeasConfigSN_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_MeasConfigSN_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasConfigSN = {
+       "MeasConfigSN",
+       "MeasConfigSN",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasConfigSN_tags_1,
+       sizeof(asn_DEF_MeasConfigSN_tags_1)
+               /sizeof(asn_DEF_MeasConfigSN_tags_1[0]), /* 1 */
+       asn_DEF_MeasConfigSN_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasConfigSN_tags_1)
+               /sizeof(asn_DEF_MeasConfigSN_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasConfigSN_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasConfigSN_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasConfigSN.h b/src/codec_utils/RRC/MeasConfigSN.h
new file mode 100644 (file)
index 0000000..05fcf2c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasConfigSN_H_
+#define        _MeasConfigSN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct NR_FreqInfo;
+
+/* MeasConfigSN */
+typedef struct MeasConfigSN {
+       struct MeasConfigSN__measuredFrequenciesSN {
+               A_SEQUENCE_OF(struct NR_FreqInfo) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *measuredFrequenciesSN;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasConfigSN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasConfigSN;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasConfigSN_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasConfigSN_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasConfigSN_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasGapConfig.c b/src/codec_utils/RRC/MeasGapConfig.c
new file mode 100644 (file)
index 0000000..7b32eaf
--- /dev/null
@@ -0,0 +1,289 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasGapConfig.h"
+
+#include "GapConfig.h"
+static asn_oer_constraints_t asn_OER_type_gapFR2_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapFR2_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapFR1_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapFR1_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapUE_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapUE_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapFR2_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapConfig__gapFR2, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasGapConfig__gapFR2, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GapConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapFR2_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapFR2_specs_2 = {
+       sizeof(struct MeasGapConfig__gapFR2),
+       offsetof(struct MeasGapConfig__gapFR2, _asn_ctx),
+       offsetof(struct MeasGapConfig__gapFR2, present),
+       sizeof(((struct MeasGapConfig__gapFR2 *)0)->present),
+       asn_MAP_gapFR2_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapFR2_2 = {
+       "gapFR2",
+       "gapFR2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapFR2_constr_2, &asn_PER_type_gapFR2_constr_2, CHOICE_constraint },
+       asn_MBR_gapFR2_2,
+       2,      /* Elements count */
+       &asn_SPC_gapFR2_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_gapFR1_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapConfig__ext1__gapFR1, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasGapConfig__ext1__gapFR1, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GapConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapFR1_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapFR1_specs_7 = {
+       sizeof(struct MeasGapConfig__ext1__gapFR1),
+       offsetof(struct MeasGapConfig__ext1__gapFR1, _asn_ctx),
+       offsetof(struct MeasGapConfig__ext1__gapFR1, present),
+       sizeof(((struct MeasGapConfig__ext1__gapFR1 *)0)->present),
+       asn_MAP_gapFR1_tag2el_7,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapFR1_7 = {
+       "gapFR1",
+       "gapFR1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapFR1_constr_7, &asn_PER_type_gapFR1_constr_7, CHOICE_constraint },
+       asn_MBR_gapFR1_7,
+       2,      /* Elements count */
+       &asn_SPC_gapFR1_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_gapUE_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapConfig__ext1__gapUE, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasGapConfig__ext1__gapUE, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GapConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapUE_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapUE_specs_10 = {
+       sizeof(struct MeasGapConfig__ext1__gapUE),
+       offsetof(struct MeasGapConfig__ext1__gapUE, _asn_ctx),
+       offsetof(struct MeasGapConfig__ext1__gapUE, present),
+       sizeof(((struct MeasGapConfig__ext1__gapUE *)0)->present),
+       asn_MAP_gapUE_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapUE_10 = {
+       "gapUE",
+       "gapUE",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapUE_constr_10, &asn_PER_type_gapUE_constr_10, CHOICE_constraint },
+       asn_MBR_gapUE_10,
+       2,      /* Elements count */
+       &asn_SPC_gapUE_specs_10 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_6[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasGapConfig__ext1, gapFR1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapFR1_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapFR1"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasGapConfig__ext1, gapUE),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapUE_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapUE"
+               },
+};
+static const int asn_MAP_ext1_oms_6[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gapFR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gapUE */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
+       sizeof(struct MeasGapConfig__ext1),
+       offsetof(struct MeasGapConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_6,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_6,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_6,
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_6,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_6,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasGapConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasGapConfig, gapFR2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapFR2_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapFR2"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasGapConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ext1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasGapConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_MeasGapConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasGapConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gapFR2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasGapConfig_specs_1 = {
+       sizeof(struct MeasGapConfig),
+       offsetof(struct MeasGapConfig, _asn_ctx),
+       asn_MAP_MeasGapConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MeasGapConfig_oms_1,    /* Optional members */
+       1, 1,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasGapConfig = {
+       "MeasGapConfig",
+       "MeasGapConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasGapConfig_tags_1,
+       sizeof(asn_DEF_MeasGapConfig_tags_1)
+               /sizeof(asn_DEF_MeasGapConfig_tags_1[0]), /* 1 */
+       asn_DEF_MeasGapConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MeasGapConfig_tags_1)
+               /sizeof(asn_DEF_MeasGapConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasGapConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasGapConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasGapConfig.h b/src/codec_utils/RRC/MeasGapConfig.h
new file mode 100644 (file)
index 0000000..7eaf74a
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasGapConfig_H_
+#define        _MeasGapConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasGapConfig__gapFR2_PR {
+       MeasGapConfig__gapFR2_PR_NOTHING,       /* No components present */
+       MeasGapConfig__gapFR2_PR_release,
+       MeasGapConfig__gapFR2_PR_setup
+} MeasGapConfig__gapFR2_PR;
+typedef enum MeasGapConfig__ext1__gapFR1_PR {
+       MeasGapConfig__ext1__gapFR1_PR_NOTHING, /* No components present */
+       MeasGapConfig__ext1__gapFR1_PR_release,
+       MeasGapConfig__ext1__gapFR1_PR_setup
+} MeasGapConfig__ext1__gapFR1_PR;
+typedef enum MeasGapConfig__ext1__gapUE_PR {
+       MeasGapConfig__ext1__gapUE_PR_NOTHING,  /* No components present */
+       MeasGapConfig__ext1__gapUE_PR_release,
+       MeasGapConfig__ext1__gapUE_PR_setup
+} MeasGapConfig__ext1__gapUE_PR;
+
+/* Forward declarations */
+struct GapConfig;
+
+/* MeasGapConfig */
+typedef struct MeasGapConfig {
+       struct MeasGapConfig__gapFR2 {
+               MeasGapConfig__gapFR2_PR present;
+               union MeasGapConfig__gapFR2_u {
+                       NULL_t   release;
+                       struct GapConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *gapFR2;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasGapConfig__ext1 {
+               struct MeasGapConfig__ext1__gapFR1 {
+                       MeasGapConfig__ext1__gapFR1_PR present;
+                       union MeasGapConfig__ext1__gapFR1_u {
+                               NULL_t   release;
+                               struct GapConfig        *setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *gapFR1;
+               struct MeasGapConfig__ext1__gapUE {
+                       MeasGapConfig__ext1__gapUE_PR present;
+                       union MeasGapConfig__ext1__gapUE_u {
+                               NULL_t   release;
+                               struct GapConfig        *setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *gapUE;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasGapConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasGapConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasGapConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasGapConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasGapConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasGapSharingConfig.c b/src/codec_utils/RRC/MeasGapSharingConfig.c
new file mode 100644 (file)
index 0000000..1b911c2
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasGapSharingConfig.h"
+
+static asn_oer_constraints_t asn_OER_type_gapSharingFR2_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapSharingFR2_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapSharingFR1_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapSharingFR1_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapSharingUE_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gapSharingUE_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gapSharingFR2_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__gapSharingFR2, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__gapSharingFR2, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasGapSharingScheme,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapSharingFR2_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapSharingFR2_specs_2 = {
+       sizeof(struct MeasGapSharingConfig__gapSharingFR2),
+       offsetof(struct MeasGapSharingConfig__gapSharingFR2, _asn_ctx),
+       offsetof(struct MeasGapSharingConfig__gapSharingFR2, present),
+       sizeof(((struct MeasGapSharingConfig__gapSharingFR2 *)0)->present),
+       asn_MAP_gapSharingFR2_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapSharingFR2_2 = {
+       "gapSharingFR2",
+       "gapSharingFR2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapSharingFR2_constr_2, &asn_PER_type_gapSharingFR2_constr_2, CHOICE_constraint },
+       asn_MBR_gapSharingFR2_2,
+       2,      /* Elements count */
+       &asn_SPC_gapSharingFR2_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_gapSharingFR1_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__ext1__gapSharingFR1, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__ext1__gapSharingFR1, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasGapSharingScheme,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapSharingFR1_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapSharingFR1_specs_7 = {
+       sizeof(struct MeasGapSharingConfig__ext1__gapSharingFR1),
+       offsetof(struct MeasGapSharingConfig__ext1__gapSharingFR1, _asn_ctx),
+       offsetof(struct MeasGapSharingConfig__ext1__gapSharingFR1, present),
+       sizeof(((struct MeasGapSharingConfig__ext1__gapSharingFR1 *)0)->present),
+       asn_MAP_gapSharingFR1_tag2el_7,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapSharingFR1_7 = {
+       "gapSharingFR1",
+       "gapSharingFR1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapSharingFR1_constr_7, &asn_PER_type_gapSharingFR1_constr_7, CHOICE_constraint },
+       asn_MBR_gapSharingFR1_7,
+       2,      /* Elements count */
+       &asn_SPC_gapSharingFR1_specs_7  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_gapSharingUE_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__ext1__gapSharingUE, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasGapSharingConfig__ext1__gapSharingUE, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasGapSharingScheme,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_gapSharingUE_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_gapSharingUE_specs_10 = {
+       sizeof(struct MeasGapSharingConfig__ext1__gapSharingUE),
+       offsetof(struct MeasGapSharingConfig__ext1__gapSharingUE, _asn_ctx),
+       offsetof(struct MeasGapSharingConfig__ext1__gapSharingUE, present),
+       sizeof(((struct MeasGapSharingConfig__ext1__gapSharingUE *)0)->present),
+       asn_MAP_gapSharingUE_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_gapSharingUE_10 = {
+       "gapSharingUE",
+       "gapSharingUE",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_gapSharingUE_constr_10, &asn_PER_type_gapSharingUE_constr_10, CHOICE_constraint },
+       asn_MBR_gapSharingUE_10,
+       2,      /* Elements count */
+       &asn_SPC_gapSharingUE_specs_10  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_6[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasGapSharingConfig__ext1, gapSharingFR1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapSharingFR1_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapSharingFR1"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasGapSharingConfig__ext1, gapSharingUE),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapSharingUE_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapSharingUE"
+               },
+};
+static const int asn_MAP_ext1_oms_6[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gapSharingFR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* gapSharingUE */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
+       sizeof(struct MeasGapSharingConfig__ext1),
+       offsetof(struct MeasGapSharingConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_6,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_6,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_6,
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_6,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_6,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasGapSharingConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasGapSharingConfig, gapSharingFR2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_gapSharingFR2_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gapSharingFR2"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasGapSharingConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ext1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasGapSharingConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_MeasGapSharingConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasGapSharingConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gapSharingFR2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasGapSharingConfig_specs_1 = {
+       sizeof(struct MeasGapSharingConfig),
+       offsetof(struct MeasGapSharingConfig, _asn_ctx),
+       asn_MAP_MeasGapSharingConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MeasGapSharingConfig_oms_1,     /* Optional members */
+       1, 1,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasGapSharingConfig = {
+       "MeasGapSharingConfig",
+       "MeasGapSharingConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasGapSharingConfig_tags_1,
+       sizeof(asn_DEF_MeasGapSharingConfig_tags_1)
+               /sizeof(asn_DEF_MeasGapSharingConfig_tags_1[0]), /* 1 */
+       asn_DEF_MeasGapSharingConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasGapSharingConfig_tags_1)
+               /sizeof(asn_DEF_MeasGapSharingConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasGapSharingConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasGapSharingConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasGapSharingConfig.h b/src/codec_utils/RRC/MeasGapSharingConfig.h
new file mode 100644 (file)
index 0000000..478af01
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasGapSharingConfig_H_
+#define        _MeasGapSharingConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include "MeasGapSharingScheme.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasGapSharingConfig__gapSharingFR2_PR {
+       MeasGapSharingConfig__gapSharingFR2_PR_NOTHING, /* No components present */
+       MeasGapSharingConfig__gapSharingFR2_PR_release,
+       MeasGapSharingConfig__gapSharingFR2_PR_setup
+} MeasGapSharingConfig__gapSharingFR2_PR;
+typedef enum MeasGapSharingConfig__ext1__gapSharingFR1_PR {
+       MeasGapSharingConfig__ext1__gapSharingFR1_PR_NOTHING,   /* No components present */
+       MeasGapSharingConfig__ext1__gapSharingFR1_PR_release,
+       MeasGapSharingConfig__ext1__gapSharingFR1_PR_setup
+} MeasGapSharingConfig__ext1__gapSharingFR1_PR;
+typedef enum MeasGapSharingConfig__ext1__gapSharingUE_PR {
+       MeasGapSharingConfig__ext1__gapSharingUE_PR_NOTHING,    /* No components present */
+       MeasGapSharingConfig__ext1__gapSharingUE_PR_release,
+       MeasGapSharingConfig__ext1__gapSharingUE_PR_setup
+} MeasGapSharingConfig__ext1__gapSharingUE_PR;
+
+/* MeasGapSharingConfig */
+typedef struct MeasGapSharingConfig {
+       struct MeasGapSharingConfig__gapSharingFR2 {
+               MeasGapSharingConfig__gapSharingFR2_PR present;
+               union MeasGapSharingConfig__gapSharingFR2_u {
+                       NULL_t   release;
+                       MeasGapSharingScheme_t   setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *gapSharingFR2;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasGapSharingConfig__ext1 {
+               struct MeasGapSharingConfig__ext1__gapSharingFR1 {
+                       MeasGapSharingConfig__ext1__gapSharingFR1_PR present;
+                       union MeasGapSharingConfig__ext1__gapSharingFR1_u {
+                               NULL_t   release;
+                               MeasGapSharingScheme_t   setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *gapSharingFR1;
+               struct MeasGapSharingConfig__ext1__gapSharingUE {
+                       MeasGapSharingConfig__ext1__gapSharingUE_PR present;
+                       union MeasGapSharingConfig__ext1__gapSharingUE_u {
+                               NULL_t   release;
+                               MeasGapSharingScheme_t   setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *gapSharingUE;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasGapSharingConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasGapSharingConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasGapSharingConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasGapSharingConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasGapSharingConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasGapSharingScheme.c b/src/codec_utils/RRC/MeasGapSharingScheme.c
new file mode 100644 (file)
index 0000000..09f7131
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasGapSharingScheme.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_MeasGapSharingScheme_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasGapSharingScheme_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_MeasGapSharingScheme_value2enum_1[] = {
+       { 0,    8,      "scheme00" },
+       { 1,    8,      "scheme01" },
+       { 2,    8,      "scheme10" },
+       { 3,    8,      "scheme11" }
+};
+static const unsigned int asn_MAP_MeasGapSharingScheme_enum2value_1[] = {
+       0,      /* scheme00(0) */
+       1,      /* scheme01(1) */
+       2,      /* scheme10(2) */
+       3       /* scheme11(3) */
+};
+const asn_INTEGER_specifics_t asn_SPC_MeasGapSharingScheme_specs_1 = {
+       asn_MAP_MeasGapSharingScheme_value2enum_1,      /* "tag" => N; sorted by tag */
+       asn_MAP_MeasGapSharingScheme_enum2value_1,      /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_MeasGapSharingScheme_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasGapSharingScheme = {
+       "MeasGapSharingScheme",
+       "MeasGapSharingScheme",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_MeasGapSharingScheme_tags_1,
+       sizeof(asn_DEF_MeasGapSharingScheme_tags_1)
+               /sizeof(asn_DEF_MeasGapSharingScheme_tags_1[0]), /* 1 */
+       asn_DEF_MeasGapSharingScheme_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasGapSharingScheme_tags_1)
+               /sizeof(asn_DEF_MeasGapSharingScheme_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasGapSharingScheme_constr_1, &asn_PER_type_MeasGapSharingScheme_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_MeasGapSharingScheme_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasGapSharingScheme.h b/src/codec_utils/RRC/MeasGapSharingScheme.h
new file mode 100644 (file)
index 0000000..f0e4735
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasGapSharingScheme_H_
+#define        _MeasGapSharingScheme_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasGapSharingScheme {
+       MeasGapSharingScheme_scheme00   = 0,
+       MeasGapSharingScheme_scheme01   = 1,
+       MeasGapSharingScheme_scheme10   = 2,
+       MeasGapSharingScheme_scheme11   = 3
+} e_MeasGapSharingScheme;
+
+/* MeasGapSharingScheme */
+typedef long    MeasGapSharingScheme_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasGapSharingScheme_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasGapSharingScheme;
+extern const asn_INTEGER_specifics_t asn_SPC_MeasGapSharingScheme_specs_1;
+asn_struct_free_f MeasGapSharingScheme_free;
+asn_struct_print_f MeasGapSharingScheme_print;
+asn_constr_check_f MeasGapSharingScheme_constraint;
+ber_type_decoder_f MeasGapSharingScheme_decode_ber;
+der_type_encoder_f MeasGapSharingScheme_encode_der;
+xer_type_decoder_f MeasGapSharingScheme_decode_xer;
+xer_type_encoder_f MeasGapSharingScheme_encode_xer;
+oer_type_decoder_f MeasGapSharingScheme_decode_oer;
+oer_type_encoder_f MeasGapSharingScheme_encode_oer;
+per_type_decoder_f MeasGapSharingScheme_decode_uper;
+per_type_encoder_f MeasGapSharingScheme_encode_uper;
+per_type_decoder_f MeasGapSharingScheme_decode_aper;
+per_type_encoder_f MeasGapSharingScheme_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasGapSharingScheme_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasId.c b/src/codec_utils/RRC/MeasId.c
new file mode 100644 (file)
index 0000000..7d23d68
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasId.h"
+
+int
+MeasId_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 <= 64)) {
+               /* 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_MeasId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+asn_per_constraints_t asn_PER_type_MeasId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasId = {
+       "MeasId",
+       "MeasId",
+       &asn_OP_NativeInteger,
+       asn_DEF_MeasId_tags_1,
+       sizeof(asn_DEF_MeasId_tags_1)
+               /sizeof(asn_DEF_MeasId_tags_1[0]), /* 1 */
+       asn_DEF_MeasId_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasId_tags_1)
+               /sizeof(asn_DEF_MeasId_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasId_constr_1, &asn_PER_type_MeasId_constr_1, MeasId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/MeasId.h b/src/codec_utils/RRC/MeasId.h
new file mode 100644 (file)
index 0000000..dfa2136
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasId_H_
+#define        _MeasId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasId */
+typedef long    MeasId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasId;
+asn_struct_free_f MeasId_free;
+asn_struct_print_f MeasId_print;
+asn_constr_check_f MeasId_constraint;
+ber_type_decoder_f MeasId_decode_ber;
+der_type_encoder_f MeasId_encode_der;
+xer_type_decoder_f MeasId_decode_xer;
+xer_type_encoder_f MeasId_encode_xer;
+oer_type_decoder_f MeasId_decode_oer;
+oer_type_encoder_f MeasId_encode_oer;
+per_type_decoder_f MeasId_decode_uper;
+per_type_encoder_f MeasId_encode_uper;
+per_type_decoder_f MeasId_decode_aper;
+per_type_encoder_f MeasId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasIdToAddMod.c b/src/codec_utils/RRC/MeasIdToAddMod.c
new file mode 100644 (file)
index 0000000..32b5af3
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasIdToAddMod.h"
+
+asn_TYPE_member_t asn_MBR_MeasIdToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasIdToAddMod, measId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasIdToAddMod, measObjectId),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasIdToAddMod, reportConfigId),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigId"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasIdToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasIdToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measObjectId */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* reportConfigId */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasIdToAddMod_specs_1 = {
+       sizeof(struct MeasIdToAddMod),
+       offsetof(struct MeasIdToAddMod, _asn_ctx),
+       asn_MAP_MeasIdToAddMod_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasIdToAddMod = {
+       "MeasIdToAddMod",
+       "MeasIdToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasIdToAddMod_tags_1,
+       sizeof(asn_DEF_MeasIdToAddMod_tags_1)
+               /sizeof(asn_DEF_MeasIdToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_MeasIdToAddMod_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasIdToAddMod_tags_1)
+               /sizeof(asn_DEF_MeasIdToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasIdToAddMod_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasIdToAddMod_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasIdToAddMod.h b/src/codec_utils/RRC/MeasIdToAddMod.h
new file mode 100644 (file)
index 0000000..0ec4d4b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasIdToAddMod_H_
+#define        _MeasIdToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasId.h"
+#include "MeasObjectId.h"
+#include "ReportConfigId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasIdToAddMod */
+typedef struct MeasIdToAddMod {
+       MeasId_t         measId;
+       MeasObjectId_t   measObjectId;
+       ReportConfigId_t         reportConfigId;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasIdToAddMod_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasIdToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasIdToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasIdToAddMod_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasIdToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasIdToAddModList.c b/src/codec_utils/RRC/MeasIdToAddModList.c
new file mode 100644 (file)
index 0000000..04a716c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasIdToAddModList.h"
+
+#include "MeasIdToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_MeasIdToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_MeasIdToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasIdToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasIdToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasIdToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasIdToAddModList_specs_1 = {
+       sizeof(struct MeasIdToAddModList),
+       offsetof(struct MeasIdToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasIdToAddModList = {
+       "MeasIdToAddModList",
+       "MeasIdToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasIdToAddModList_tags_1,
+       sizeof(asn_DEF_MeasIdToAddModList_tags_1)
+               /sizeof(asn_DEF_MeasIdToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_MeasIdToAddModList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasIdToAddModList_tags_1)
+               /sizeof(asn_DEF_MeasIdToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasIdToAddModList_constr_1, &asn_PER_type_MeasIdToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasIdToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasIdToAddModList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasIdToAddModList.h b/src/codec_utils/RRC/MeasIdToAddModList.h
new file mode 100644 (file)
index 0000000..79e2bb7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasIdToAddModList_H_
+#define        _MeasIdToAddModList_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 MeasIdToAddMod;
+
+/* MeasIdToAddModList */
+typedef struct MeasIdToAddModList {
+       A_SEQUENCE_OF(struct MeasIdToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasIdToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasIdToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasIdToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasIdToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasIdToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasIdToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasIdToRemoveList.c b/src/codec_utils/RRC/MeasIdToRemoveList.c
new file mode 100644 (file)
index 0000000..5c2f60d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasIdToRemoveList.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasIdToRemoveList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_MeasIdToRemoveList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasIdToRemoveList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_MeasId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasIdToRemoveList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasIdToRemoveList_specs_1 = {
+       sizeof(struct MeasIdToRemoveList),
+       offsetof(struct MeasIdToRemoveList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasIdToRemoveList = {
+       "MeasIdToRemoveList",
+       "MeasIdToRemoveList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasIdToRemoveList_tags_1,
+       sizeof(asn_DEF_MeasIdToRemoveList_tags_1)
+               /sizeof(asn_DEF_MeasIdToRemoveList_tags_1[0]), /* 1 */
+       asn_DEF_MeasIdToRemoveList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasIdToRemoveList_tags_1)
+               /sizeof(asn_DEF_MeasIdToRemoveList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasIdToRemoveList_constr_1, &asn_PER_type_MeasIdToRemoveList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasIdToRemoveList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasIdToRemoveList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasIdToRemoveList.h b/src/codec_utils/RRC/MeasIdToRemoveList.h
new file mode 100644 (file)
index 0000000..7e43b52
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasIdToRemoveList_H_
+#define        _MeasIdToRemoveList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasIdToRemoveList */
+typedef struct MeasIdToRemoveList {
+       A_SEQUENCE_OF(MeasId_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasIdToRemoveList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasIdToRemoveList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasIdToRemoveList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasIdToRemoveList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasIdToRemoveList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasIdToRemoveList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectEUTRA.c b/src/codec_utils/RRC/MeasObjectEUTRA.c
new file mode 100644 (file)
index 0000000..57395a3
--- /dev/null
@@ -0,0 +1,293 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectEUTRA.h"
+
+#include "EUTRA-CellIndexList.h"
+#include "EUTRA-Cell.h"
+#include "EUTRA-BlackCell.h"
+static int
+memb_cellsToAddModListEUTRAN_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 <= 32)) {
+               /* 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_blackCellsToAddModListEUTRAN_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 <= 32)) {
+               /* 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_cellsToAddModListEUTRAN_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_cellsToAddModListEUTRAN_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_blackCellsToAddModListEUTRAN_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_blackCellsToAddModListEUTRAN_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cellsToAddModListEUTRAN_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_cellsToAddModListEUTRAN_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_blackCellsToAddModListEUTRAN_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_blackCellsToAddModListEUTRAN_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cellsToAddModListEUTRAN_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_Cell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_cellsToAddModListEUTRAN_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cellsToAddModListEUTRAN_specs_5 = {
+       sizeof(struct MeasObjectEUTRA__cellsToAddModListEUTRAN),
+       offsetof(struct MeasObjectEUTRA__cellsToAddModListEUTRAN, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellsToAddModListEUTRAN_5 = {
+       "cellsToAddModListEUTRAN",
+       "cellsToAddModListEUTRAN",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_cellsToAddModListEUTRAN_tags_5,
+       sizeof(asn_DEF_cellsToAddModListEUTRAN_tags_5)
+               /sizeof(asn_DEF_cellsToAddModListEUTRAN_tags_5[0]) - 1, /* 1 */
+       asn_DEF_cellsToAddModListEUTRAN_tags_5, /* Same as above */
+       sizeof(asn_DEF_cellsToAddModListEUTRAN_tags_5)
+               /sizeof(asn_DEF_cellsToAddModListEUTRAN_tags_5[0]), /* 2 */
+       { &asn_OER_type_cellsToAddModListEUTRAN_constr_5, &asn_PER_type_cellsToAddModListEUTRAN_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_cellsToAddModListEUTRAN_5,
+       1,      /* Single element */
+       &asn_SPC_cellsToAddModListEUTRAN_specs_5        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_blackCellsToAddModListEUTRAN_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_EUTRA_BlackCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_blackCellsToAddModListEUTRAN_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_blackCellsToAddModListEUTRAN_specs_8 = {
+       sizeof(struct MeasObjectEUTRA__blackCellsToAddModListEUTRAN),
+       offsetof(struct MeasObjectEUTRA__blackCellsToAddModListEUTRAN, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_blackCellsToAddModListEUTRAN_8 = {
+       "blackCellsToAddModListEUTRAN",
+       "blackCellsToAddModListEUTRAN",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_blackCellsToAddModListEUTRAN_tags_8,
+       sizeof(asn_DEF_blackCellsToAddModListEUTRAN_tags_8)
+               /sizeof(asn_DEF_blackCellsToAddModListEUTRAN_tags_8[0]) - 1, /* 1 */
+       asn_DEF_blackCellsToAddModListEUTRAN_tags_8,    /* Same as above */
+       sizeof(asn_DEF_blackCellsToAddModListEUTRAN_tags_8)
+               /sizeof(asn_DEF_blackCellsToAddModListEUTRAN_tags_8[0]), /* 2 */
+       { &asn_OER_type_blackCellsToAddModListEUTRAN_constr_8, &asn_PER_type_blackCellsToAddModListEUTRAN_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_blackCellsToAddModListEUTRAN_8,
+       1,      /* Single element */
+       &asn_SPC_blackCellsToAddModListEUTRAN_specs_8   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasObjectEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectEUTRA, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectEUTRA, allowedMeasBandwidth),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_AllowedMeasBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "allowedMeasBandwidth"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasObjectEUTRA, cellsToRemoveListEUTRAN),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_CellIndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellsToRemoveListEUTRAN"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasObjectEUTRA, cellsToAddModListEUTRAN),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_cellsToAddModListEUTRAN_5,
+               0,
+               { &asn_OER_memb_cellsToAddModListEUTRAN_constr_5, &asn_PER_memb_cellsToAddModListEUTRAN_constr_5,  memb_cellsToAddModListEUTRAN_constraint_1 },
+               0, 0, /* No default value */
+               "cellsToAddModListEUTRAN"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasObjectEUTRA, blackCellsToRemoveListEUTRAN),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_CellIndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "blackCellsToRemoveListEUTRAN"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectEUTRA, blackCellsToAddModListEUTRAN),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_blackCellsToAddModListEUTRAN_8,
+               0,
+               { &asn_OER_memb_blackCellsToAddModListEUTRAN_constr_8, &asn_PER_memb_blackCellsToAddModListEUTRAN_constr_8,  memb_blackCellsToAddModListEUTRAN_constraint_1 },
+               0, 0, /* No default value */
+               "blackCellsToAddModListEUTRAN"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectEUTRA, eutra_PresenceAntennaPort1),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PresenceAntennaPort1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-PresenceAntennaPort1"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectEUTRA, eutra_Q_OffsetRange),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-Q-OffsetRange"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectEUTRA, widebandRSRQ_Meas),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "widebandRSRQ-Meas"
+               },
+};
+static const int asn_MAP_MeasObjectEUTRA_oms_1[] = { 2, 3, 4, 5, 7 };
+static const ber_tlv_tag_t asn_DEF_MeasObjectEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasObjectEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* allowedMeasBandwidth */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* cellsToRemoveListEUTRAN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cellsToAddModListEUTRAN */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* blackCellsToRemoveListEUTRAN */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* blackCellsToAddModListEUTRAN */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eutra-PresenceAntennaPort1 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* eutra-Q-OffsetRange */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* widebandRSRQ-Meas */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasObjectEUTRA_specs_1 = {
+       sizeof(struct MeasObjectEUTRA),
+       offsetof(struct MeasObjectEUTRA, _asn_ctx),
+       asn_MAP_MeasObjectEUTRA_tag2el_1,
+       9,      /* Count of tags in the map */
+       asn_MAP_MeasObjectEUTRA_oms_1,  /* Optional members */
+       5, 0,   /* Root/Additions */
+       9,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectEUTRA = {
+       "MeasObjectEUTRA",
+       "MeasObjectEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasObjectEUTRA_tags_1,
+       sizeof(asn_DEF_MeasObjectEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasObjectEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectEUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasObjectEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasObjectEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasObjectEUTRA_1,
+       9,      /* Elements count */
+       &asn_SPC_MeasObjectEUTRA_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectEUTRA.h b/src/codec_utils/RRC/MeasObjectEUTRA.h
new file mode 100644 (file)
index 0000000..462a357
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectEUTRA_H_
+#define        _MeasObjectEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include "EUTRA-AllowedMeasBandwidth.h"
+#include "EUTRA-PresenceAntennaPort1.h"
+#include "EUTRA-Q-OffsetRange.h"
+#include <BOOLEAN.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct EUTRA_CellIndexList;
+struct EUTRA_Cell;
+struct EUTRA_BlackCell;
+
+/* MeasObjectEUTRA */
+typedef struct MeasObjectEUTRA {
+       ARFCN_ValueEUTRA_t       carrierFreq;
+       EUTRA_AllowedMeasBandwidth_t     allowedMeasBandwidth;
+       struct EUTRA_CellIndexList      *cellsToRemoveListEUTRAN;       /* OPTIONAL */
+       struct MeasObjectEUTRA__cellsToAddModListEUTRAN {
+               A_SEQUENCE_OF(struct EUTRA_Cell) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *cellsToAddModListEUTRAN;
+       struct EUTRA_CellIndexList      *blackCellsToRemoveListEUTRAN;  /* OPTIONAL */
+       struct MeasObjectEUTRA__blackCellsToAddModListEUTRAN {
+               A_SEQUENCE_OF(struct EUTRA_BlackCell) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *blackCellsToAddModListEUTRAN;
+       EUTRA_PresenceAntennaPort1_t     eutra_PresenceAntennaPort1;
+       EUTRA_Q_OffsetRange_t   *eutra_Q_OffsetRange;   /* OPTIONAL */
+       BOOLEAN_t        widebandRSRQ_Meas;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasObjectEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasObjectEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasObjectEUTRA_1[9];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectId.c b/src/codec_utils/RRC/MeasObjectId.c
new file mode 100644 (file)
index 0000000..10f856d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectId.h"
+
+int
+MeasObjectId_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 <= 64)) {
+               /* 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_MeasObjectId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+asn_per_constraints_t asn_PER_type_MeasObjectId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_MeasObjectId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectId = {
+       "MeasObjectId",
+       "MeasObjectId",
+       &asn_OP_NativeInteger,
+       asn_DEF_MeasObjectId_tags_1,
+       sizeof(asn_DEF_MeasObjectId_tags_1)
+               /sizeof(asn_DEF_MeasObjectId_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasObjectId_tags_1)
+               /sizeof(asn_DEF_MeasObjectId_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasObjectId_constr_1, &asn_PER_type_MeasObjectId_constr_1, MeasObjectId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectId.h b/src/codec_utils/RRC/MeasObjectId.h
new file mode 100644 (file)
index 0000000..522588e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectId_H_
+#define        _MeasObjectId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasObjectId */
+typedef long    MeasObjectId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_MeasObjectId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectId;
+asn_struct_free_f MeasObjectId_free;
+asn_struct_print_f MeasObjectId_print;
+asn_constr_check_f MeasObjectId_constraint;
+ber_type_decoder_f MeasObjectId_decode_ber;
+der_type_encoder_f MeasObjectId_encode_der;
+xer_type_decoder_f MeasObjectId_decode_xer;
+xer_type_encoder_f MeasObjectId_encode_xer;
+oer_type_decoder_f MeasObjectId_decode_oer;
+oer_type_encoder_f MeasObjectId_encode_oer;
+per_type_decoder_f MeasObjectId_decode_uper;
+per_type_encoder_f MeasObjectId_encode_uper;
+per_type_decoder_f MeasObjectId_decode_aper;
+per_type_encoder_f MeasObjectId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectNR.c b/src/codec_utils/RRC/MeasObjectNR.c
new file mode 100644 (file)
index 0000000..985cf95
--- /dev/null
@@ -0,0 +1,610 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectNR.h"
+
+#include "SSB-MTC.h"
+#include "SSB-MTC2.h"
+#include "ThresholdNR.h"
+#include "PCI-List.h"
+#include "CellsToAddModList.h"
+#include "PCI-RangeIndexList.h"
+#include "PCI-RangeElement.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_nrofSS_BlocksToAverage_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 >= 2 && value <= 16)) {
+               /* 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_nrofCSI_RS_ResourcesToAverage_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 >= 2 && value <= 16)) {
+               /* 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_quantityConfigIndex_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 int
+memb_blackCellsToAddModList_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 <= 8)) {
+               /* 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_whiteCellsToAddModList_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 <= 8)) {
+               /* 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_blackCellsToAddModList_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_blackCellsToAddModList_constr_17 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_whiteCellsToAddModList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_whiteCellsToAddModList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_measCycleSCell_v1530_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_measCycleSCell_v1530_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSS_BlocksToAverage_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (2..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSS_BlocksToAverage_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  2,  16 }       /* (2..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofCSI_RS_ResourcesToAverage_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (2..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofCSI_RS_ResourcesToAverage_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  2,  16 }       /* (2..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_quantityConfigIndex_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_quantityConfigIndex_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (1..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_blackCellsToAddModList_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_blackCellsToAddModList_constr_17 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_whiteCellsToAddModList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_whiteCellsToAddModList_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_blackCellsToAddModList_17[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PCI_RangeElement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_blackCellsToAddModList_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_blackCellsToAddModList_specs_17 = {
+       sizeof(struct MeasObjectNR__blackCellsToAddModList),
+       offsetof(struct MeasObjectNR__blackCellsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_blackCellsToAddModList_17 = {
+       "blackCellsToAddModList",
+       "blackCellsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_blackCellsToAddModList_tags_17,
+       sizeof(asn_DEF_blackCellsToAddModList_tags_17)
+               /sizeof(asn_DEF_blackCellsToAddModList_tags_17[0]) - 1, /* 1 */
+       asn_DEF_blackCellsToAddModList_tags_17, /* Same as above */
+       sizeof(asn_DEF_blackCellsToAddModList_tags_17)
+               /sizeof(asn_DEF_blackCellsToAddModList_tags_17[0]), /* 2 */
+       { &asn_OER_type_blackCellsToAddModList_constr_17, &asn_PER_type_blackCellsToAddModList_constr_17, SEQUENCE_OF_constraint },
+       asn_MBR_blackCellsToAddModList_17,
+       1,      /* Single element */
+       &asn_SPC_blackCellsToAddModList_specs_17        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_whiteCellsToAddModList_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PCI_RangeElement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_whiteCellsToAddModList_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_whiteCellsToAddModList_specs_20 = {
+       sizeof(struct MeasObjectNR__whiteCellsToAddModList),
+       offsetof(struct MeasObjectNR__whiteCellsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_whiteCellsToAddModList_20 = {
+       "whiteCellsToAddModList",
+       "whiteCellsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_whiteCellsToAddModList_tags_20,
+       sizeof(asn_DEF_whiteCellsToAddModList_tags_20)
+               /sizeof(asn_DEF_whiteCellsToAddModList_tags_20[0]) - 1, /* 1 */
+       asn_DEF_whiteCellsToAddModList_tags_20, /* Same as above */
+       sizeof(asn_DEF_whiteCellsToAddModList_tags_20)
+               /sizeof(asn_DEF_whiteCellsToAddModList_tags_20[0]), /* 2 */
+       { &asn_OER_type_whiteCellsToAddModList_constr_20, &asn_PER_type_whiteCellsToAddModList_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_whiteCellsToAddModList_20,
+       1,      /* Single element */
+       &asn_SPC_whiteCellsToAddModList_specs_20        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_measCycleSCell_v1530_value2enum_25[] = {
+       { 0,    5,      "sf160" },
+       { 1,    5,      "sf256" },
+       { 2,    5,      "sf320" },
+       { 3,    5,      "sf512" },
+       { 4,    5,      "sf640" },
+       { 5,    6,      "sf1024" },
+       { 6,    6,      "sf1280" }
+};
+static const unsigned int asn_MAP_measCycleSCell_v1530_enum2value_25[] = {
+       5,      /* sf1024(5) */
+       6,      /* sf1280(6) */
+       0,      /* sf160(0) */
+       1,      /* sf256(1) */
+       2,      /* sf320(2) */
+       3,      /* sf512(3) */
+       4       /* sf640(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_measCycleSCell_v1530_specs_25 = {
+       asn_MAP_measCycleSCell_v1530_value2enum_25,     /* "tag" => N; sorted by tag */
+       asn_MAP_measCycleSCell_v1530_enum2value_25,     /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_measCycleSCell_v1530_tags_25[] = {
+       (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_measCycleSCell_v1530_25 = {
+       "measCycleSCell-v1530",
+       "measCycleSCell-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_measCycleSCell_v1530_tags_25,
+       sizeof(asn_DEF_measCycleSCell_v1530_tags_25)
+               /sizeof(asn_DEF_measCycleSCell_v1530_tags_25[0]) - 1, /* 1 */
+       asn_DEF_measCycleSCell_v1530_tags_25,   /* Same as above */
+       sizeof(asn_DEF_measCycleSCell_v1530_tags_25)
+               /sizeof(asn_DEF_measCycleSCell_v1530_tags_25[0]), /* 2 */
+       { &asn_OER_type_measCycleSCell_v1530_constr_25, &asn_PER_type_measCycleSCell_v1530_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_measCycleSCell_v1530_specs_25  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_23[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasObjectNR__ext1, freqBandIndicatorNR_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBandIndicatorNR-v1530"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectNR__ext1, measCycleSCell_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_measCycleSCell_v1530_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measCycleSCell-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_23[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_23[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNR-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measCycleSCell-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_23 = {
+       sizeof(struct MeasObjectNR__ext1),
+       offsetof(struct MeasObjectNR__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_23,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_23,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_23 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_23,
+       sizeof(asn_DEF_ext1_tags_23)
+               /sizeof(asn_DEF_ext1_tags_23[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_23,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_23)
+               /sizeof(asn_DEF_ext1_tags_23[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_23,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_23  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasObjectNR_1[] = {
+       { ATF_POINTER, 5, offsetof(struct MeasObjectNR, ssbFrequency),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbFrequency"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasObjectNR, ssbSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbSubcarrierSpacing"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasObjectNR, smtc1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc1"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasObjectNR, smtc2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc2"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectNR, refFreqCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "refFreqCSI-RS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectNR, referenceSignalConfig),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReferenceSignalConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignalConfig"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasObjectNR, absThreshSS_BlocksConsolidation),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ThresholdNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absThreshSS-BlocksConsolidation"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasObjectNR, absThreshCSI_RS_Consolidation),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ThresholdNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absThreshCSI-RS-Consolidation"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasObjectNR, nrofSS_BlocksToAverage),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSS_BlocksToAverage_constr_10, &asn_PER_memb_nrofSS_BlocksToAverage_constr_10,  memb_nrofSS_BlocksToAverage_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSS-BlocksToAverage"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectNR, nrofCSI_RS_ResourcesToAverage),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofCSI_RS_ResourcesToAverage_constr_11, &asn_PER_memb_nrofCSI_RS_ResourcesToAverage_constr_11,  memb_nrofCSI_RS_ResourcesToAverage_constraint_1 },
+               0, 0, /* No default value */
+               "nrofCSI-RS-ResourcesToAverage"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectNR, quantityConfigIndex),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_quantityConfigIndex_constr_12, &asn_PER_memb_quantityConfigIndex_constr_12,  memb_quantityConfigIndex_constraint_1 },
+               0, 0, /* No default value */
+               "quantityConfigIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectNR, offsetMO),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRangeList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "offsetMO"
+               },
+       { ATF_POINTER, 7, offsetof(struct MeasObjectNR, cellsToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCI_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellsToRemoveList"
+               },
+       { ATF_POINTER, 6, offsetof(struct MeasObjectNR, cellsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellsToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellsToAddModList"
+               },
+       { ATF_POINTER, 5, offsetof(struct MeasObjectNR, blackCellsToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCI_RangeIndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "blackCellsToRemoveList"
+               },
+       { ATF_POINTER, 4, offsetof(struct MeasObjectNR, blackCellsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               0,
+               &asn_DEF_blackCellsToAddModList_17,
+               0,
+               { &asn_OER_memb_blackCellsToAddModList_constr_17, &asn_PER_memb_blackCellsToAddModList_constr_17,  memb_blackCellsToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "blackCellsToAddModList"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasObjectNR, whiteCellsToRemoveList),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCI_RangeIndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "whiteCellsToRemoveList"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasObjectNR, whiteCellsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               0,
+               &asn_DEF_whiteCellsToAddModList_20,
+               0,
+               { &asn_OER_memb_whiteCellsToAddModList_constr_20, &asn_PER_memb_whiteCellsToAddModList_constr_20,  memb_whiteCellsToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "whiteCellsToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasObjectNR, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               0,
+               &asn_DEF_ext1_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasObjectNR_oms_1[] = { 0, 1, 2, 3, 4, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18 };
+static const ber_tlv_tag_t asn_DEF_MeasObjectNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasObjectNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssbFrequency */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ssbSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* smtc1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* smtc2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* refFreqCSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* referenceSignalConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* absThreshSS-BlocksConsolidation */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* absThreshCSI-RS-Consolidation */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* nrofSS-BlocksToAverage */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* nrofCSI-RS-ResourcesToAverage */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* quantityConfigIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* offsetMO */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* cellsToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* cellsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* blackCellsToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* blackCellsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* whiteCellsToRemoveList */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* whiteCellsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasObjectNR_specs_1 = {
+       sizeof(struct MeasObjectNR),
+       offsetof(struct MeasObjectNR, _asn_ctx),
+       asn_MAP_MeasObjectNR_tag2el_1,
+       19,     /* Count of tags in the map */
+       asn_MAP_MeasObjectNR_oms_1,     /* Optional members */
+       15, 1,  /* Root/Additions */
+       18,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectNR = {
+       "MeasObjectNR",
+       "MeasObjectNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasObjectNR_tags_1,
+       sizeof(asn_DEF_MeasObjectNR_tags_1)
+               /sizeof(asn_DEF_MeasObjectNR_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectNR_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasObjectNR_tags_1)
+               /sizeof(asn_DEF_MeasObjectNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasObjectNR_1,
+       19,     /* Elements count */
+       &asn_SPC_MeasObjectNR_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectNR.h b/src/codec_utils/RRC/MeasObjectNR.h
new file mode 100644 (file)
index 0000000..16ecbeb
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectNR_H_
+#define        _MeasObjectNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "SubcarrierSpacing.h"
+#include "ReferenceSignalConfig.h"
+#include <NativeInteger.h>
+#include "Q-OffsetRangeList.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "FreqBandIndicatorNR.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasObjectNR__ext1__measCycleSCell_v1530 {
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf160  = 0,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf256  = 1,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf320  = 2,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf512  = 3,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf640  = 4,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf1024 = 5,
+       MeasObjectNR__ext1__measCycleSCell_v1530_sf1280 = 6
+} e_MeasObjectNR__ext1__measCycleSCell_v1530;
+
+/* Forward declarations */
+struct SSB_MTC;
+struct SSB_MTC2;
+struct ThresholdNR;
+struct PCI_List;
+struct CellsToAddModList;
+struct PCI_RangeIndexList;
+struct PCI_RangeElement;
+
+/* MeasObjectNR */
+typedef struct MeasObjectNR {
+       ARFCN_ValueNR_t *ssbFrequency;  /* OPTIONAL */
+       SubcarrierSpacing_t     *ssbSubcarrierSpacing;  /* OPTIONAL */
+       struct SSB_MTC  *smtc1; /* OPTIONAL */
+       struct SSB_MTC2 *smtc2; /* OPTIONAL */
+       ARFCN_ValueNR_t *refFreqCSI_RS; /* OPTIONAL */
+       ReferenceSignalConfig_t  referenceSignalConfig;
+       struct ThresholdNR      *absThreshSS_BlocksConsolidation;       /* OPTIONAL */
+       struct ThresholdNR      *absThreshCSI_RS_Consolidation; /* OPTIONAL */
+       long    *nrofSS_BlocksToAverage;        /* OPTIONAL */
+       long    *nrofCSI_RS_ResourcesToAverage; /* OPTIONAL */
+       long     quantityConfigIndex;
+       Q_OffsetRangeList_t      offsetMO;
+       struct PCI_List *cellsToRemoveList;     /* OPTIONAL */
+       struct CellsToAddModList        *cellsToAddModList;     /* OPTIONAL */
+       struct PCI_RangeIndexList       *blackCellsToRemoveList;        /* OPTIONAL */
+       struct MeasObjectNR__blackCellsToAddModList {
+               A_SEQUENCE_OF(struct PCI_RangeElement) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *blackCellsToAddModList;
+       struct PCI_RangeIndexList       *whiteCellsToRemoveList;        /* OPTIONAL */
+       struct MeasObjectNR__whiteCellsToAddModList {
+               A_SEQUENCE_OF(struct PCI_RangeElement) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *whiteCellsToAddModList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasObjectNR__ext1 {
+               FreqBandIndicatorNR_t   *freqBandIndicatorNR_v1530;     /* OPTIONAL */
+               long    *measCycleSCell_v1530;  /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasObjectNR_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_measCycleSCell_v1530_25;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasObjectNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasObjectNR_1[19];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectToAddMod.c b/src/codec_utils/RRC/MeasObjectToAddMod.c
new file mode 100644 (file)
index 0000000..ca6d693
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectToAddMod.h"
+
+#include "MeasObjectNR.h"
+#include "MeasObjectEUTRA.h"
+static asn_oer_constraints_t asn_OER_type_measObject_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_measObject_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_TYPE_member_t asn_MBR_measObject_3[] = {
+       { ATF_POINTER, 0, offsetof(struct MeasObjectToAddMod__measObject, choice.measObjectNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectNR"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasObjectToAddMod__measObject, choice.measObjectEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectEUTRA"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_measObject_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measObjectNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measObjectEUTRA */
+};
+static asn_CHOICE_specifics_t asn_SPC_measObject_specs_3 = {
+       sizeof(struct MeasObjectToAddMod__measObject),
+       offsetof(struct MeasObjectToAddMod__measObject, _asn_ctx),
+       offsetof(struct MeasObjectToAddMod__measObject, present),
+       sizeof(((struct MeasObjectToAddMod__measObject *)0)->present),
+       asn_MAP_measObject_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measObject_3 = {
+       "measObject",
+       "measObject",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_measObject_constr_3, &asn_PER_type_measObject_constr_3, CHOICE_constraint },
+       asn_MBR_measObject_3,
+       2,      /* Elements count */
+       &asn_SPC_measObject_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasObjectToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectToAddMod, measObjectId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasObjectToAddMod, measObject),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_measObject_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObject"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasObjectToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasObjectToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measObjectId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measObject */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasObjectToAddMod_specs_1 = {
+       sizeof(struct MeasObjectToAddMod),
+       offsetof(struct MeasObjectToAddMod, _asn_ctx),
+       asn_MAP_MeasObjectToAddMod_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectToAddMod = {
+       "MeasObjectToAddMod",
+       "MeasObjectToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasObjectToAddMod_tags_1,
+       sizeof(asn_DEF_MeasObjectToAddMod_tags_1)
+               /sizeof(asn_DEF_MeasObjectToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectToAddMod_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasObjectToAddMod_tags_1)
+               /sizeof(asn_DEF_MeasObjectToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasObjectToAddMod_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasObjectToAddMod_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectToAddMod.h b/src/codec_utils/RRC/MeasObjectToAddMod.h
new file mode 100644 (file)
index 0000000..e6f3e45
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectToAddMod_H_
+#define        _MeasObjectToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasObjectId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasObjectToAddMod__measObject_PR {
+       MeasObjectToAddMod__measObject_PR_NOTHING,      /* No components present */
+       MeasObjectToAddMod__measObject_PR_measObjectNR,
+       /* Extensions may appear below */
+       MeasObjectToAddMod__measObject_PR_measObjectEUTRA
+} MeasObjectToAddMod__measObject_PR;
+
+/* Forward declarations */
+struct MeasObjectNR;
+struct MeasObjectEUTRA;
+
+/* MeasObjectToAddMod */
+typedef struct MeasObjectToAddMod {
+       MeasObjectId_t   measObjectId;
+       struct MeasObjectToAddMod__measObject {
+               MeasObjectToAddMod__measObject_PR present;
+               union MeasObjectToAddMod__measObject_u {
+                       struct MeasObjectNR     *measObjectNR;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct MeasObjectEUTRA  *measObjectEUTRA;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } measObject;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasObjectToAddMod_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasObjectToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasObjectToAddMod_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectToAddModList.c b/src/codec_utils/RRC/MeasObjectToAddModList.c
new file mode 100644 (file)
index 0000000..503a63c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectToAddModList.h"
+
+#include "MeasObjectToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_MeasObjectToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_MeasObjectToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasObjectToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasObjectToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasObjectToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasObjectToAddModList_specs_1 = {
+       sizeof(struct MeasObjectToAddModList),
+       offsetof(struct MeasObjectToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectToAddModList = {
+       "MeasObjectToAddModList",
+       "MeasObjectToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasObjectToAddModList_tags_1,
+       sizeof(asn_DEF_MeasObjectToAddModList_tags_1)
+               /sizeof(asn_DEF_MeasObjectToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectToAddModList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasObjectToAddModList_tags_1)
+               /sizeof(asn_DEF_MeasObjectToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasObjectToAddModList_constr_1, &asn_PER_type_MeasObjectToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasObjectToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasObjectToAddModList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectToAddModList.h b/src/codec_utils/RRC/MeasObjectToAddModList.h
new file mode 100644 (file)
index 0000000..c2b71ca
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectToAddModList_H_
+#define        _MeasObjectToAddModList_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 MeasObjectToAddMod;
+
+/* MeasObjectToAddModList */
+typedef struct MeasObjectToAddModList {
+       A_SEQUENCE_OF(struct MeasObjectToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasObjectToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasObjectToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasObjectToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasObjectToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasObjectToRemoveList.c b/src/codec_utils/RRC/MeasObjectToRemoveList.c
new file mode 100644 (file)
index 0000000..0cfb4b1
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasObjectToRemoveList.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasObjectToRemoveList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_MeasObjectToRemoveList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasObjectToRemoveList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_MeasObjectId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasObjectToRemoveList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasObjectToRemoveList_specs_1 = {
+       sizeof(struct MeasObjectToRemoveList),
+       offsetof(struct MeasObjectToRemoveList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasObjectToRemoveList = {
+       "MeasObjectToRemoveList",
+       "MeasObjectToRemoveList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasObjectToRemoveList_tags_1,
+       sizeof(asn_DEF_MeasObjectToRemoveList_tags_1)
+               /sizeof(asn_DEF_MeasObjectToRemoveList_tags_1[0]), /* 1 */
+       asn_DEF_MeasObjectToRemoveList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasObjectToRemoveList_tags_1)
+               /sizeof(asn_DEF_MeasObjectToRemoveList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasObjectToRemoveList_constr_1, &asn_PER_type_MeasObjectToRemoveList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasObjectToRemoveList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasObjectToRemoveList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasObjectToRemoveList.h b/src/codec_utils/RRC/MeasObjectToRemoveList.h
new file mode 100644 (file)
index 0000000..bbfc4ae
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasObjectToRemoveList_H_
+#define        _MeasObjectToRemoveList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasObjectId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasObjectToRemoveList */
+typedef struct MeasObjectToRemoveList {
+       A_SEQUENCE_OF(MeasObjectId_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasObjectToRemoveList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasObjectToRemoveList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasObjectToRemoveList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasObjectToRemoveList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasObjectToRemoveList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasObjectToRemoveList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasQuantityResults.c b/src/codec_utils/RRC/MeasQuantityResults.c
new file mode 100644 (file)
index 0000000..742a3f6
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasQuantityResults.h"
+
+asn_TYPE_member_t asn_MBR_MeasQuantityResults_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasQuantityResults, rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasQuantityResults, rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRQ_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasQuantityResults, sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SINR_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const int asn_MAP_MeasQuantityResults_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasQuantityResults_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasQuantityResults_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResults_specs_1 = {
+       sizeof(struct MeasQuantityResults),
+       offsetof(struct MeasQuantityResults, _asn_ctx),
+       asn_MAP_MeasQuantityResults_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasQuantityResults_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasQuantityResults = {
+       "MeasQuantityResults",
+       "MeasQuantityResults",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasQuantityResults_tags_1,
+       sizeof(asn_DEF_MeasQuantityResults_tags_1)
+               /sizeof(asn_DEF_MeasQuantityResults_tags_1[0]), /* 1 */
+       asn_DEF_MeasQuantityResults_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasQuantityResults_tags_1)
+               /sizeof(asn_DEF_MeasQuantityResults_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasQuantityResults_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasQuantityResults_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasQuantityResults.h b/src/codec_utils/RRC/MeasQuantityResults.h
new file mode 100644 (file)
index 0000000..3d14908
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasQuantityResults_H_
+#define        _MeasQuantityResults_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include "RSRQ-Range.h"
+#include "SINR-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasQuantityResults */
+typedef struct MeasQuantityResults {
+       RSRP_Range_t    *rsrp;  /* OPTIONAL */
+       RSRQ_Range_t    *rsrq;  /* OPTIONAL */
+       SINR_Range_t    *sinr;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasQuantityResults_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasQuantityResults;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResults_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasQuantityResults_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasQuantityResults_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasQuantityResultsEUTRA.c b/src/codec_utils/RRC/MeasQuantityResultsEUTRA.c
new file mode 100644 (file)
index 0000000..157b408
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasQuantityResultsEUTRA.h"
+
+asn_TYPE_member_t asn_MBR_MeasQuantityResultsEUTRA_1[] = {
+       { ATF_POINTER, 3, offsetof(struct MeasQuantityResultsEUTRA, rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasQuantityResultsEUTRA, rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRQ_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasQuantityResultsEUTRA, sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SINR_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const int asn_MAP_MeasQuantityResultsEUTRA_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasQuantityResultsEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasQuantityResultsEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResultsEUTRA_specs_1 = {
+       sizeof(struct MeasQuantityResultsEUTRA),
+       offsetof(struct MeasQuantityResultsEUTRA, _asn_ctx),
+       asn_MAP_MeasQuantityResultsEUTRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasQuantityResultsEUTRA_oms_1, /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasQuantityResultsEUTRA = {
+       "MeasQuantityResultsEUTRA",
+       "MeasQuantityResultsEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasQuantityResultsEUTRA_tags_1,
+       sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_MeasQuantityResultsEUTRA_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasQuantityResultsEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasQuantityResultsEUTRA_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasQuantityResultsEUTRA_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasQuantityResultsEUTRA.h b/src/codec_utils/RRC/MeasQuantityResultsEUTRA.h
new file mode 100644 (file)
index 0000000..504c5f1
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasQuantityResultsEUTRA_H_
+#define        _MeasQuantityResultsEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-RangeEUTRA.h"
+#include "RSRQ-RangeEUTRA.h"
+#include "SINR-RangeEUTRA.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasQuantityResultsEUTRA */
+typedef struct MeasQuantityResultsEUTRA {
+       RSRP_RangeEUTRA_t       *rsrp;  /* OPTIONAL */
+       RSRQ_RangeEUTRA_t       *rsrq;  /* OPTIONAL */
+       SINR_RangeEUTRA_t       *sinr;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasQuantityResultsEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasQuantityResultsEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasQuantityResultsEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasQuantityResultsEUTRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasQuantityResultsEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasReportQuantity.c b/src/codec_utils/RRC/MeasReportQuantity.c
new file mode 100644 (file)
index 0000000..a132e3d
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasReportQuantity.h"
+
+asn_TYPE_member_t asn_MBR_MeasReportQuantity_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasReportQuantity, rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasReportQuantity, rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasReportQuantity, sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasReportQuantity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasReportQuantity_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasReportQuantity_specs_1 = {
+       sizeof(struct MeasReportQuantity),
+       offsetof(struct MeasReportQuantity, _asn_ctx),
+       asn_MAP_MeasReportQuantity_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasReportQuantity = {
+       "MeasReportQuantity",
+       "MeasReportQuantity",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasReportQuantity_tags_1,
+       sizeof(asn_DEF_MeasReportQuantity_tags_1)
+               /sizeof(asn_DEF_MeasReportQuantity_tags_1[0]), /* 1 */
+       asn_DEF_MeasReportQuantity_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasReportQuantity_tags_1)
+               /sizeof(asn_DEF_MeasReportQuantity_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasReportQuantity_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasReportQuantity_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasReportQuantity.h b/src/codec_utils/RRC/MeasReportQuantity.h
new file mode 100644 (file)
index 0000000..c103605
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasReportQuantity_H_
+#define        _MeasReportQuantity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasReportQuantity */
+typedef struct MeasReportQuantity {
+       BOOLEAN_t        rsrp;
+       BOOLEAN_t        rsrq;
+       BOOLEAN_t        sinr;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasReportQuantity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasReportQuantity;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasReportQuantity_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasReportQuantity_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasReportQuantity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResult2NR.c b/src/codec_utils/RRC/MeasResult2NR.c
new file mode 100644 (file)
index 0000000..e1802db
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResult2NR.h"
+
+#include "MeasResultNR.h"
+#include "MeasResultListNR.h"
+asn_TYPE_member_t asn_MBR_MeasResult2NR_1[] = {
+       { ATF_POINTER, 4, offsetof(struct MeasResult2NR, ssbFrequency),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbFrequency"
+               },
+       { ATF_POINTER, 3, offsetof(struct MeasResult2NR, refFreqCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "refFreqCSI-RS"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasResult2NR, measResultServingCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultServingCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResult2NR, measResultNeighCellListNR),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultNeighCellListNR"
+               },
+};
+static const int asn_MAP_MeasResult2NR_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_MeasResult2NR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResult2NR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssbFrequency */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* refFreqCSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measResultServingCell */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* measResultNeighCellListNR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResult2NR_specs_1 = {
+       sizeof(struct MeasResult2NR),
+       offsetof(struct MeasResult2NR, _asn_ctx),
+       asn_MAP_MeasResult2NR_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_MeasResult2NR_oms_1,    /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResult2NR = {
+       "MeasResult2NR",
+       "MeasResult2NR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResult2NR_tags_1,
+       sizeof(asn_DEF_MeasResult2NR_tags_1)
+               /sizeof(asn_DEF_MeasResult2NR_tags_1[0]), /* 1 */
+       asn_DEF_MeasResult2NR_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MeasResult2NR_tags_1)
+               /sizeof(asn_DEF_MeasResult2NR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResult2NR_1,
+       4,      /* Elements count */
+       &asn_SPC_MeasResult2NR_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResult2NR.h b/src/codec_utils/RRC/MeasResult2NR.h
new file mode 100644 (file)
index 0000000..09f1498
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResult2NR_H_
+#define        _MeasResult2NR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultNR;
+struct MeasResultListNR;
+
+/* MeasResult2NR */
+typedef struct MeasResult2NR {
+       ARFCN_ValueNR_t *ssbFrequency;  /* OPTIONAL */
+       ARFCN_ValueNR_t *refFreqCSI_RS; /* OPTIONAL */
+       struct MeasResultNR     *measResultServingCell; /* OPTIONAL */
+       struct MeasResultListNR *measResultNeighCellListNR;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResult2NR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResult2NR;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResult2NR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResult2NR_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResult2NR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultCellListSFTD.c b/src/codec_utils/RRC/MeasResultCellListSFTD.c
new file mode 100644 (file)
index 0000000..a591aa6
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultCellListSFTD.h"
+
+#include "MeasResultCellSFTD.h"
+static asn_oer_constraints_t asn_OER_type_MeasResultCellListSFTD_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+asn_per_constraints_t asn_PER_type_MeasResultCellListSFTD_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultCellListSFTD_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasResultCellSFTD,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultCellListSFTD_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasResultCellListSFTD_specs_1 = {
+       sizeof(struct MeasResultCellListSFTD),
+       offsetof(struct MeasResultCellListSFTD, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultCellListSFTD = {
+       "MeasResultCellListSFTD",
+       "MeasResultCellListSFTD",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasResultCellListSFTD_tags_1,
+       sizeof(asn_DEF_MeasResultCellListSFTD_tags_1)
+               /sizeof(asn_DEF_MeasResultCellListSFTD_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultCellListSFTD_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasResultCellListSFTD_tags_1)
+               /sizeof(asn_DEF_MeasResultCellListSFTD_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasResultCellListSFTD_constr_1, &asn_PER_type_MeasResultCellListSFTD_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasResultCellListSFTD_1,
+       1,      /* Single element */
+       &asn_SPC_MeasResultCellListSFTD_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultCellListSFTD.h b/src/codec_utils/RRC/MeasResultCellListSFTD.h
new file mode 100644 (file)
index 0000000..ae637f5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultCellListSFTD_H_
+#define        _MeasResultCellListSFTD_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 MeasResultCellSFTD;
+
+/* MeasResultCellListSFTD */
+typedef struct MeasResultCellListSFTD {
+       A_SEQUENCE_OF(struct MeasResultCellSFTD) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultCellListSFTD_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultCellListSFTD;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultCellListSFTD_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultCellListSFTD_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultCellListSFTD_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultCellListSFTD_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultCellSFTD.c b/src/codec_utils/RRC/MeasResultCellSFTD.c
new file mode 100644 (file)
index 0000000..279fa74
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultCellSFTD.h"
+
+static int
+memb_sfn_OffsetResult_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 >= 0 && value <= 1023)) {
+               /* 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_frameBoundaryOffsetResult_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 >= -30720 && value <= 30719)) {
+               /* 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_sfn_OffsetResult_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sfn_OffsetResult_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frameBoundaryOffsetResult_constr_4 CC_NOTUSED = {
+       { 2, 0 }        /* (-30720..30719) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frameBoundaryOffsetResult_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16, -30720,  30719 }      /* (-30720..30719) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultCellSFTD_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultCellSFTD, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultCellSFTD, sfn_OffsetResult),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sfn_OffsetResult_constr_3, &asn_PER_memb_sfn_OffsetResult_constr_3,  memb_sfn_OffsetResult_constraint_1 },
+               0, 0, /* No default value */
+               "sfn-OffsetResult"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultCellSFTD, frameBoundaryOffsetResult),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frameBoundaryOffsetResult_constr_4, &asn_PER_memb_frameBoundaryOffsetResult_constr_4,  memb_frameBoundaryOffsetResult_constraint_1 },
+               0, 0, /* No default value */
+               "frameBoundaryOffsetResult"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultCellSFTD, rsrp_Result),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp-Result"
+               },
+};
+static const int asn_MAP_MeasResultCellSFTD_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_MeasResultCellSFTD_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResultCellSFTD_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sfn-OffsetResult */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* frameBoundaryOffsetResult */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* rsrp-Result */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResultCellSFTD_specs_1 = {
+       sizeof(struct MeasResultCellSFTD),
+       offsetof(struct MeasResultCellSFTD, _asn_ctx),
+       asn_MAP_MeasResultCellSFTD_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_MeasResultCellSFTD_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultCellSFTD = {
+       "MeasResultCellSFTD",
+       "MeasResultCellSFTD",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResultCellSFTD_tags_1,
+       sizeof(asn_DEF_MeasResultCellSFTD_tags_1)
+               /sizeof(asn_DEF_MeasResultCellSFTD_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultCellSFTD_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasResultCellSFTD_tags_1)
+               /sizeof(asn_DEF_MeasResultCellSFTD_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResultCellSFTD_1,
+       4,      /* Elements count */
+       &asn_SPC_MeasResultCellSFTD_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultCellSFTD.h b/src/codec_utils/RRC/MeasResultCellSFTD.h
new file mode 100644 (file)
index 0000000..80c6967
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultCellSFTD_H_
+#define        _MeasResultCellSFTD_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <NativeInteger.h>
+#include "RSRP-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasResultCellSFTD */
+typedef struct MeasResultCellSFTD {
+       PhysCellId_t     physCellId;
+       long     sfn_OffsetResult;
+       long     frameBoundaryOffsetResult;
+       RSRP_Range_t    *rsrp_Result;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultCellSFTD_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultCellSFTD;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultCellSFTD_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultCellSFTD_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultCellSFTD_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultEUTRA.c b/src/codec_utils/RRC/MeasResultEUTRA.c
new file mode 100644 (file)
index 0000000..48783c0
--- /dev/null
@@ -0,0 +1,420 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultEUTRA.h"
+
+#include "MultiBandInfoListEUTRA.h"
+#include "CellAccessRelatedInfo-EUTRA-EPC.h"
+#include "CellAccessRelatedInfo-EUTRA-5GC.h"
+static int
+memb_cgi_info_EPC_list_constraint_5(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 <= 12)) {
+               /* 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;
+       }
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_cgi_info_5GC_constraint_4(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 <= 12)) {
+               /* 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_cgi_info_EPC_list_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_type_cgi_info_EPC_list_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cgi_info_EPC_list_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_memb_cgi_info_EPC_list_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cgi_info_5GC_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_type_cgi_info_5GC_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_freqBandIndicatorPriority_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_freqBandIndicatorPriority_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cgi_info_5GC_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_memb_cgi_info_5GC_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_cgi_info_EPC_list_7[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CellAccessRelatedInfo_EUTRA_EPC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_cgi_info_EPC_list_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cgi_info_EPC_list_specs_7 = {
+       sizeof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC__cgi_info_EPC_list),
+       offsetof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC__cgi_info_EPC_list, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cgi_info_EPC_list_7 = {
+       "cgi-info-EPC-list",
+       "cgi-info-EPC-list",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_cgi_info_EPC_list_tags_7,
+       sizeof(asn_DEF_cgi_info_EPC_list_tags_7)
+               /sizeof(asn_DEF_cgi_info_EPC_list_tags_7[0]) - 1, /* 1 */
+       asn_DEF_cgi_info_EPC_list_tags_7,       /* Same as above */
+       sizeof(asn_DEF_cgi_info_EPC_list_tags_7)
+               /sizeof(asn_DEF_cgi_info_EPC_list_tags_7[0]), /* 2 */
+       { &asn_OER_type_cgi_info_EPC_list_constr_7, &asn_PER_type_cgi_info_EPC_list_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_cgi_info_EPC_list_7,
+       1,      /* Single element */
+       &asn_SPC_cgi_info_EPC_list_specs_7      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cgi_info_EPC_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC, cgi_info_EPC_legacy),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellAccessRelatedInfo_EUTRA_EPC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cgi-info-EPC-legacy"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC, cgi_info_EPC_list),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_cgi_info_EPC_list_7,
+               0,
+               { &asn_OER_memb_cgi_info_EPC_list_constr_7, &asn_PER_memb_cgi_info_EPC_list_constr_7,  memb_cgi_info_EPC_list_constraint_5 },
+               0, 0, /* No default value */
+               "cgi-info-EPC-list"
+               },
+};
+static const int asn_MAP_cgi_info_EPC_oms_5[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_cgi_info_EPC_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cgi_info_EPC_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cgi-info-EPC-legacy */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cgi-info-EPC-list */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cgi_info_EPC_specs_5 = {
+       sizeof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC),
+       offsetof(struct MeasResultEUTRA__cgi_Info__cgi_info_EPC, _asn_ctx),
+       asn_MAP_cgi_info_EPC_tag2el_5,
+       2,      /* Count of tags in the map */
+       asn_MAP_cgi_info_EPC_oms_5,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cgi_info_EPC_5 = {
+       "cgi-info-EPC",
+       "cgi-info-EPC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cgi_info_EPC_tags_5,
+       sizeof(asn_DEF_cgi_info_EPC_tags_5)
+               /sizeof(asn_DEF_cgi_info_EPC_tags_5[0]) - 1, /* 1 */
+       asn_DEF_cgi_info_EPC_tags_5,    /* Same as above */
+       sizeof(asn_DEF_cgi_info_EPC_tags_5)
+               /sizeof(asn_DEF_cgi_info_EPC_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cgi_info_EPC_5,
+       2,      /* Elements count */
+       &asn_SPC_cgi_info_EPC_specs_5   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cgi_info_5GC_9[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_CellAccessRelatedInfo_EUTRA_5GC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_cgi_info_5GC_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_cgi_info_5GC_specs_9 = {
+       sizeof(struct MeasResultEUTRA__cgi_Info__cgi_info_5GC),
+       offsetof(struct MeasResultEUTRA__cgi_Info__cgi_info_5GC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cgi_info_5GC_9 = {
+       "cgi-info-5GC",
+       "cgi-info-5GC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_cgi_info_5GC_tags_9,
+       sizeof(asn_DEF_cgi_info_5GC_tags_9)
+               /sizeof(asn_DEF_cgi_info_5GC_tags_9[0]) - 1, /* 1 */
+       asn_DEF_cgi_info_5GC_tags_9,    /* Same as above */
+       sizeof(asn_DEF_cgi_info_5GC_tags_9)
+               /sizeof(asn_DEF_cgi_info_5GC_tags_9[0]), /* 2 */
+       { &asn_OER_type_cgi_info_5GC_constr_9, &asn_PER_type_cgi_info_5GC_constr_9, SEQUENCE_OF_constraint },
+       asn_MBR_cgi_info_5GC_9,
+       1,      /* Single element */
+       &asn_SPC_cgi_info_5GC_specs_9   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_freqBandIndicatorPriority_value2enum_13[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_freqBandIndicatorPriority_enum2value_13[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_freqBandIndicatorPriority_specs_13 = {
+       asn_MAP_freqBandIndicatorPriority_value2enum_13,        /* "tag" => N; sorted by tag */
+       asn_MAP_freqBandIndicatorPriority_enum2value_13,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_freqBandIndicatorPriority_tags_13[] = {
+       (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_freqBandIndicatorPriority_13 = {
+       "freqBandIndicatorPriority",
+       "freqBandIndicatorPriority",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_freqBandIndicatorPriority_tags_13,
+       sizeof(asn_DEF_freqBandIndicatorPriority_tags_13)
+               /sizeof(asn_DEF_freqBandIndicatorPriority_tags_13[0]) - 1, /* 1 */
+       asn_DEF_freqBandIndicatorPriority_tags_13,      /* Same as above */
+       sizeof(asn_DEF_freqBandIndicatorPriority_tags_13)
+               /sizeof(asn_DEF_freqBandIndicatorPriority_tags_13[0]), /* 2 */
+       { &asn_OER_type_freqBandIndicatorPriority_constr_13, &asn_PER_type_freqBandIndicatorPriority_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_freqBandIndicatorPriority_specs_13     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cgi_Info_4[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasResultEUTRA__cgi_Info, cgi_info_EPC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_cgi_info_EPC_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cgi-info-EPC"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultEUTRA__cgi_Info, cgi_info_5GC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_cgi_info_5GC_9,
+               0,
+               { &asn_OER_memb_cgi_info_5GC_constr_9, &asn_PER_memb_cgi_info_5GC_constr_9,  memb_cgi_info_5GC_constraint_4 },
+               0, 0, /* No default value */
+               "cgi-info-5GC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA__cgi_Info, freqBandIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBandIndicator"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasResultEUTRA__cgi_Info, multiBandInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiBandInfoListEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multiBandInfoList"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultEUTRA__cgi_Info, freqBandIndicatorPriority),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_freqBandIndicatorPriority_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBandIndicatorPriority"
+               },
+};
+static const int asn_MAP_cgi_Info_oms_4[] = { 0, 1, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_cgi_Info_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cgi_Info_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cgi-info-EPC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cgi-info-5GC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* freqBandIndicator */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* multiBandInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* freqBandIndicatorPriority */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cgi_Info_specs_4 = {
+       sizeof(struct MeasResultEUTRA__cgi_Info),
+       offsetof(struct MeasResultEUTRA__cgi_Info, _asn_ctx),
+       asn_MAP_cgi_Info_tag2el_4,
+       5,      /* Count of tags in the map */
+       asn_MAP_cgi_Info_oms_4, /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cgi_Info_4 = {
+       "cgi-Info",
+       "cgi-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cgi_Info_tags_4,
+       sizeof(asn_DEF_cgi_Info_tags_4)
+               /sizeof(asn_DEF_cgi_Info_tags_4[0]) - 1, /* 1 */
+       asn_DEF_cgi_Info_tags_4,        /* Same as above */
+       sizeof(asn_DEF_cgi_Info_tags_4)
+               /sizeof(asn_DEF_cgi_Info_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cgi_Info_4,
+       5,      /* Elements count */
+       &asn_SPC_cgi_Info_specs_4       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasResultEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA, eutra_PhysCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-PhysCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultEUTRA, measResult),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasQuantityResultsEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResult"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultEUTRA, cgi_Info),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_cgi_Info_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cgi-Info"
+               },
+};
+static const int asn_MAP_MeasResultEUTRA_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MeasResultEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResultEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutra-PhysCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measResult */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cgi-Info */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResultEUTRA_specs_1 = {
+       sizeof(struct MeasResultEUTRA),
+       offsetof(struct MeasResultEUTRA, _asn_ctx),
+       asn_MAP_MeasResultEUTRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasResultEUTRA_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultEUTRA = {
+       "MeasResultEUTRA",
+       "MeasResultEUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResultEUTRA_tags_1,
+       sizeof(asn_DEF_MeasResultEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasResultEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultEUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_MeasResultEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasResultEUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResultEUTRA_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasResultEUTRA_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultEUTRA.h b/src/codec_utils/RRC/MeasResultEUTRA.h
new file mode 100644 (file)
index 0000000..54e0153
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultEUTRA_H_
+#define        _MeasResultEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "MeasQuantityResultsEUTRA.h"
+#include "FreqBandIndicatorEUTRA.h"
+#include <NativeEnumerated.h>
+#include "CellAccessRelatedInfo-EUTRA-EPC.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasResultEUTRA__cgi_Info__freqBandIndicatorPriority {
+       MeasResultEUTRA__cgi_Info__freqBandIndicatorPriority_true       = 0
+} e_MeasResultEUTRA__cgi_Info__freqBandIndicatorPriority;
+
+/* Forward declarations */
+struct MultiBandInfoListEUTRA;
+struct CellAccessRelatedInfo_EUTRA_EPC;
+struct CellAccessRelatedInfo_EUTRA_5GC;
+
+/* MeasResultEUTRA */
+typedef struct MeasResultEUTRA {
+       PhysCellId_t     eutra_PhysCellId;
+       MeasQuantityResultsEUTRA_t       measResult;
+       struct MeasResultEUTRA__cgi_Info {
+               struct MeasResultEUTRA__cgi_Info__cgi_info_EPC {
+                       CellAccessRelatedInfo_EUTRA_EPC_t        cgi_info_EPC_legacy;
+                       struct MeasResultEUTRA__cgi_Info__cgi_info_EPC__cgi_info_EPC_list {
+                               A_SEQUENCE_OF(struct CellAccessRelatedInfo_EUTRA_EPC) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *cgi_info_EPC_list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *cgi_info_EPC;
+               struct MeasResultEUTRA__cgi_Info__cgi_info_5GC {
+                       A_SEQUENCE_OF(struct CellAccessRelatedInfo_EUTRA_5GC) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *cgi_info_5GC;
+               FreqBandIndicatorEUTRA_t         freqBandIndicator;
+               struct MultiBandInfoListEUTRA   *multiBandInfoList;     /* OPTIONAL */
+               long    *freqBandIndicatorPriority;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *cgi_Info;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultEUTRA_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_freqBandIndicatorPriority_13;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultEUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultEUTRA_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultList2NR.c b/src/codec_utils/RRC/MeasResultList2NR.c
new file mode 100644 (file)
index 0000000..0d8554b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultList2NR.h"
+
+#include "MeasResult2NR.h"
+static asn_oer_constraints_t asn_OER_type_MeasResultList2NR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MeasResultList2NR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultList2NR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasResult2NR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultList2NR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasResultList2NR_specs_1 = {
+       sizeof(struct MeasResultList2NR),
+       offsetof(struct MeasResultList2NR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultList2NR = {
+       "MeasResultList2NR",
+       "MeasResultList2NR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasResultList2NR_tags_1,
+       sizeof(asn_DEF_MeasResultList2NR_tags_1)
+               /sizeof(asn_DEF_MeasResultList2NR_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultList2NR_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasResultList2NR_tags_1)
+               /sizeof(asn_DEF_MeasResultList2NR_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasResultList2NR_constr_1, &asn_PER_type_MeasResultList2NR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasResultList2NR_1,
+       1,      /* Single element */
+       &asn_SPC_MeasResultList2NR_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultList2NR.h b/src/codec_utils/RRC/MeasResultList2NR.h
new file mode 100644 (file)
index 0000000..9ad0cd1
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultList2NR_H_
+#define        _MeasResultList2NR_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 MeasResult2NR;
+
+/* MeasResultList2NR */
+typedef struct MeasResultList2NR {
+       A_SEQUENCE_OF(struct MeasResult2NR) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultList2NR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultList2NR;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultList2NR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultList2NR_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultList2NR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultList2NR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultListEUTRA.c b/src/codec_utils/RRC/MeasResultListEUTRA.c
new file mode 100644 (file)
index 0000000..921059b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultListEUTRA.h"
+
+#include "MeasResultEUTRA.h"
+static asn_oer_constraints_t asn_OER_type_MeasResultListEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MeasResultListEUTRA_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultListEUTRA_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasResultEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultListEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasResultListEUTRA_specs_1 = {
+       sizeof(struct MeasResultListEUTRA),
+       offsetof(struct MeasResultListEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultListEUTRA = {
+       "MeasResultListEUTRA",
+       "MeasResultListEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasResultListEUTRA_tags_1,
+       sizeof(asn_DEF_MeasResultListEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasResultListEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultListEUTRA_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasResultListEUTRA_tags_1)
+               /sizeof(asn_DEF_MeasResultListEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasResultListEUTRA_constr_1, &asn_PER_type_MeasResultListEUTRA_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasResultListEUTRA_1,
+       1,      /* Single element */
+       &asn_SPC_MeasResultListEUTRA_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultListEUTRA.h b/src/codec_utils/RRC/MeasResultListEUTRA.h
new file mode 100644 (file)
index 0000000..502970f
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultListEUTRA_H_
+#define        _MeasResultListEUTRA_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 MeasResultEUTRA;
+
+/* MeasResultListEUTRA */
+typedef struct MeasResultListEUTRA {
+       A_SEQUENCE_OF(struct MeasResultEUTRA) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultListEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultListEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultListEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultListEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultListEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultListEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultListNR.c b/src/codec_utils/RRC/MeasResultListNR.c
new file mode 100644 (file)
index 0000000..fcdf62e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultListNR.h"
+
+#include "MeasResultNR.h"
+static asn_oer_constraints_t asn_OER_type_MeasResultListNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MeasResultListNR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultListNR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasResultNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultListNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasResultListNR_specs_1 = {
+       sizeof(struct MeasResultListNR),
+       offsetof(struct MeasResultListNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultListNR = {
+       "MeasResultListNR",
+       "MeasResultListNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasResultListNR_tags_1,
+       sizeof(asn_DEF_MeasResultListNR_tags_1)
+               /sizeof(asn_DEF_MeasResultListNR_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultListNR_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MeasResultListNR_tags_1)
+               /sizeof(asn_DEF_MeasResultListNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasResultListNR_constr_1, &asn_PER_type_MeasResultListNR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasResultListNR_1,
+       1,      /* Single element */
+       &asn_SPC_MeasResultListNR_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultListNR.h b/src/codec_utils/RRC/MeasResultListNR.h
new file mode 100644 (file)
index 0000000..b3571a8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultListNR_H_
+#define        _MeasResultListNR_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 MeasResultNR;
+
+/* MeasResultListNR */
+typedef struct MeasResultListNR {
+       A_SEQUENCE_OF(struct MeasResultNR) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultListNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultListNR;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultListNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultListNR_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultListNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultListNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultNR.c b/src/codec_utils/RRC/MeasResultNR.c
new file mode 100644 (file)
index 0000000..9303d46
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultNR.h"
+
+#include "MeasQuantityResults.h"
+#include "ResultsPerSSB-IndexList.h"
+#include "ResultsPerCSI-RS-IndexList.h"
+#include "CGI-Info.h"
+static asn_TYPE_member_t asn_MBR_cellResults_4[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasResultNR__measResult__cellResults, resultsSSB_Cell),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasQuantityResults,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resultsSSB-Cell"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult__cellResults, resultsCSI_RS_Cell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasQuantityResults,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resultsCSI-RS-Cell"
+               },
+};
+static const int asn_MAP_cellResults_oms_4[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_cellResults_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cellResults_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resultsSSB-Cell */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* resultsCSI-RS-Cell */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cellResults_specs_4 = {
+       sizeof(struct MeasResultNR__measResult__cellResults),
+       offsetof(struct MeasResultNR__measResult__cellResults, _asn_ctx),
+       asn_MAP_cellResults_tag2el_4,
+       2,      /* Count of tags in the map */
+       asn_MAP_cellResults_oms_4,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellResults_4 = {
+       "cellResults",
+       "cellResults",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cellResults_tags_4,
+       sizeof(asn_DEF_cellResults_tags_4)
+               /sizeof(asn_DEF_cellResults_tags_4[0]) - 1, /* 1 */
+       asn_DEF_cellResults_tags_4,     /* Same as above */
+       sizeof(asn_DEF_cellResults_tags_4)
+               /sizeof(asn_DEF_cellResults_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cellResults_4,
+       2,      /* Elements count */
+       &asn_SPC_cellResults_specs_4    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rsIndexResults_7[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasResultNR__measResult__rsIndexResults, resultsSSB_Indexes),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ResultsPerSSB_IndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resultsSSB-Indexes"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult__rsIndexResults, resultsCSI_RS_Indexes),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ResultsPerCSI_RS_IndexList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resultsCSI-RS-Indexes"
+               },
+};
+static const int asn_MAP_rsIndexResults_oms_7[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_rsIndexResults_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_rsIndexResults_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resultsSSB-Indexes */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* resultsCSI-RS-Indexes */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_rsIndexResults_specs_7 = {
+       sizeof(struct MeasResultNR__measResult__rsIndexResults),
+       offsetof(struct MeasResultNR__measResult__rsIndexResults, _asn_ctx),
+       asn_MAP_rsIndexResults_tag2el_7,
+       2,      /* Count of tags in the map */
+       asn_MAP_rsIndexResults_oms_7,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rsIndexResults_7 = {
+       "rsIndexResults",
+       "rsIndexResults",
+       &asn_OP_SEQUENCE,
+       asn_DEF_rsIndexResults_tags_7,
+       sizeof(asn_DEF_rsIndexResults_tags_7)
+               /sizeof(asn_DEF_rsIndexResults_tags_7[0]) - 1, /* 1 */
+       asn_DEF_rsIndexResults_tags_7,  /* Same as above */
+       sizeof(asn_DEF_rsIndexResults_tags_7)
+               /sizeof(asn_DEF_rsIndexResults_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_rsIndexResults_7,
+       2,      /* Elements count */
+       &asn_SPC_rsIndexResults_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_measResult_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultNR__measResult, cellResults),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_cellResults_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellResults"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR__measResult, rsIndexResults),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rsIndexResults_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsIndexResults"
+               },
+};
+static const int asn_MAP_measResult_oms_3[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_measResult_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_measResult_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellResults */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rsIndexResults */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_measResult_specs_3 = {
+       sizeof(struct MeasResultNR__measResult),
+       offsetof(struct MeasResultNR__measResult, _asn_ctx),
+       asn_MAP_measResult_tag2el_3,
+       2,      /* Count of tags in the map */
+       asn_MAP_measResult_oms_3,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measResult_3 = {
+       "measResult",
+       "measResult",
+       &asn_OP_SEQUENCE,
+       asn_DEF_measResult_tags_3,
+       sizeof(asn_DEF_measResult_tags_3)
+               /sizeof(asn_DEF_measResult_tags_3[0]) - 1, /* 1 */
+       asn_DEF_measResult_tags_3,      /* Same as above */
+       sizeof(asn_DEF_measResult_tags_3)
+               /sizeof(asn_DEF_measResult_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_measResult_3,
+       2,      /* Elements count */
+       &asn_SPC_measResult_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_11[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR__ext1, cgi_Info),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CGI_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cgi-Info"
+               },
+};
+static const int asn_MAP_ext1_oms_11[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cgi-Info */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_11 = {
+       sizeof(struct MeasResultNR__ext1),
+       offsetof(struct MeasResultNR__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_11,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_11,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_11 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_11,
+       sizeof(asn_DEF_ext1_tags_11)
+               /sizeof(asn_DEF_ext1_tags_11[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_11,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_11)
+               /sizeof(asn_DEF_ext1_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_11,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasResultNR_1[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultNR, measResult),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_measResult_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResult"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultNR, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_MeasResultNR_oms_1[] = { 0, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasResultNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResultNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measResult */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResultNR_specs_1 = {
+       sizeof(struct MeasResultNR),
+       offsetof(struct MeasResultNR, _asn_ctx),
+       asn_MAP_MeasResultNR_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasResultNR_oms_1,     /* Optional members */
+       1, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultNR = {
+       "MeasResultNR",
+       "MeasResultNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResultNR_tags_1,
+       sizeof(asn_DEF_MeasResultNR_tags_1)
+               /sizeof(asn_DEF_MeasResultNR_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultNR_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasResultNR_tags_1)
+               /sizeof(asn_DEF_MeasResultNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResultNR_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasResultNR_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultNR.h b/src/codec_utils/RRC/MeasResultNR.h
new file mode 100644 (file)
index 0000000..d7e9f29
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultNR_H_
+#define        _MeasResultNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+struct ResultsPerSSB_IndexList;
+struct ResultsPerCSI_RS_IndexList;
+struct CGI_Info;
+
+/* MeasResultNR */
+typedef struct MeasResultNR {
+       PhysCellId_t    *physCellId;    /* OPTIONAL */
+       struct MeasResultNR__measResult {
+               struct MeasResultNR__measResult__cellResults {
+                       struct MeasQuantityResults      *resultsSSB_Cell;       /* OPTIONAL */
+                       struct MeasQuantityResults      *resultsCSI_RS_Cell;    /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } cellResults;
+               struct MeasResultNR__measResult__rsIndexResults {
+                       struct ResultsPerSSB_IndexList  *resultsSSB_Indexes;    /* OPTIONAL */
+                       struct ResultsPerCSI_RS_IndexList       *resultsCSI_RS_Indexes; /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *rsIndexResults;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } measResult;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct MeasResultNR__ext1 {
+               struct CGI_Info *cgi_Info;      /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultNR_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultSCG-Failure.c b/src/codec_utils/RRC/MeasResultSCG-Failure.c
new file mode 100644 (file)
index 0000000..c42228c
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultSCG-Failure.h"
+
+static asn_TYPE_member_t asn_MBR_MeasResultSCG_Failure_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultSCG_Failure, measResultPerMOList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultList2NR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultPerMOList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultSCG_Failure_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResultSCG_Failure_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measResultPerMOList */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MeasResultSCG_Failure_specs_1 = {
+       sizeof(struct MeasResultSCG_Failure),
+       offsetof(struct MeasResultSCG_Failure, _asn_ctx),
+       asn_MAP_MeasResultSCG_Failure_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_MeasResultSCG_Failure = {
+       "MeasResultSCG-Failure",
+       "MeasResultSCG-Failure",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResultSCG_Failure_tags_1,
+       sizeof(asn_DEF_MeasResultSCG_Failure_tags_1)
+               /sizeof(asn_DEF_MeasResultSCG_Failure_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultSCG_Failure_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MeasResultSCG_Failure_tags_1)
+               /sizeof(asn_DEF_MeasResultSCG_Failure_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResultSCG_Failure_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasResultSCG_Failure_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultSCG-Failure.h b/src/codec_utils/RRC/MeasResultSCG-Failure.h
new file mode 100644 (file)
index 0000000..af43e8b
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultSCG_Failure_H_
+#define        _MeasResultSCG_Failure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasResultList2NR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasResultSCG-Failure */
+typedef struct MeasResultSCG_Failure {
+       MeasResultList2NR_t      measResultPerMOList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultSCG_Failure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultSCG_Failure;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultSCG_Failure_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultServMO.c b/src/codec_utils/RRC/MeasResultServMO.c
new file mode 100644 (file)
index 0000000..8b7c79e
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultServMO.h"
+
+#include "MeasResultNR.h"
+asn_TYPE_member_t asn_MBR_MeasResultServMO_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultServMO, servCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResultServMO, measResultServingCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultServingCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResultServMO, measResultBestNeighCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultBestNeighCell"
+               },
+};
+static const int asn_MAP_MeasResultServMO_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MeasResultServMO_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResultServMO_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measResultServingCell */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measResultBestNeighCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResultServMO_specs_1 = {
+       sizeof(struct MeasResultServMO),
+       offsetof(struct MeasResultServMO, _asn_ctx),
+       asn_MAP_MeasResultServMO_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasResultServMO_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultServMO = {
+       "MeasResultServMO",
+       "MeasResultServMO",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResultServMO_tags_1,
+       sizeof(asn_DEF_MeasResultServMO_tags_1)
+               /sizeof(asn_DEF_MeasResultServMO_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultServMO_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MeasResultServMO_tags_1)
+               /sizeof(asn_DEF_MeasResultServMO_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResultServMO_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasResultServMO_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultServMO.h b/src/codec_utils/RRC/MeasResultServMO.h
new file mode 100644 (file)
index 0000000..26dc592
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultServMO_H_
+#define        _MeasResultServMO_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include "MeasResultNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasResultNR;
+
+/* MeasResultServMO */
+typedef struct MeasResultServMO {
+       ServCellIndex_t  servCellId;
+       MeasResultNR_t   measResultServingCell;
+       struct MeasResultNR     *measResultBestNeighCell;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultServMO_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultServMO;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResultServMO_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultServMO_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultServMO_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResultServMOList.c b/src/codec_utils/RRC/MeasResultServMOList.c
new file mode 100644 (file)
index 0000000..974fd31
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResultServMOList.h"
+
+#include "MeasResultServMO.h"
+static asn_oer_constraints_t asn_OER_type_MeasResultServMOList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_MeasResultServMOList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasResultServMOList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasResultServMO,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasResultServMOList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasResultServMOList_specs_1 = {
+       sizeof(struct MeasResultServMOList),
+       offsetof(struct MeasResultServMOList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResultServMOList = {
+       "MeasResultServMOList",
+       "MeasResultServMOList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasResultServMOList_tags_1,
+       sizeof(asn_DEF_MeasResultServMOList_tags_1)
+               /sizeof(asn_DEF_MeasResultServMOList_tags_1[0]), /* 1 */
+       asn_DEF_MeasResultServMOList_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MeasResultServMOList_tags_1)
+               /sizeof(asn_DEF_MeasResultServMOList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasResultServMOList_constr_1, &asn_PER_type_MeasResultServMOList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasResultServMOList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasResultServMOList_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResultServMOList.h b/src/codec_utils/RRC/MeasResultServMOList.h
new file mode 100644 (file)
index 0000000..44ba4c5
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResultServMOList_H_
+#define        _MeasResultServMOList_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 MeasResultServMO;
+
+/* MeasResultServMOList */
+typedef struct MeasResultServMOList {
+       A_SEQUENCE_OF(struct MeasResultServMO) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResultServMOList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResultServMOList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasResultServMOList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResultServMOList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasResultServMOList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResultServMOList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasResults.c b/src/codec_utils/RRC/MeasResults.c
new file mode 100644 (file)
index 0000000..c4b4dcc
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasResults.h"
+
+#include "MeasResultListNR.h"
+#include "MeasResultListEUTRA.h"
+static asn_oer_constraints_t asn_OER_type_measResultNeighCells_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_measResultNeighCells_constr_4 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_measResultNeighCells_4[] = {
+       { ATF_POINTER, 0, offsetof(struct MeasResults__measResultNeighCells, choice.measResultListNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultListNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultListNR"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasResults__measResultNeighCells, choice.measResultListEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultListEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultListEUTRA"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_measResultNeighCells_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measResultListNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measResultListEUTRA */
+};
+static asn_CHOICE_specifics_t asn_SPC_measResultNeighCells_specs_4 = {
+       sizeof(struct MeasResults__measResultNeighCells),
+       offsetof(struct MeasResults__measResultNeighCells, _asn_ctx),
+       offsetof(struct MeasResults__measResultNeighCells, present),
+       sizeof(((struct MeasResults__measResultNeighCells *)0)->present),
+       asn_MAP_measResultNeighCells_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_measResultNeighCells_4 = {
+       "measResultNeighCells",
+       "measResultNeighCells",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_measResultNeighCells_constr_4, &asn_PER_type_measResultNeighCells_constr_4, CHOICE_constraint },
+       asn_MBR_measResultNeighCells_4,
+       2,      /* Elements count */
+       &asn_SPC_measResultNeighCells_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasResults_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResults, measId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasResults, measResultServingMOList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultServMOList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultServingMOList"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasResults, measResultNeighCells),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_measResultNeighCells_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResultNeighCells"
+               },
+};
+static const int asn_MAP_MeasResults_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_MeasResults_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasResults_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measResultServingMOList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measResultNeighCells */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasResults_specs_1 = {
+       sizeof(struct MeasResults),
+       offsetof(struct MeasResults, _asn_ctx),
+       asn_MAP_MeasResults_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasResults_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasResults = {
+       "MeasResults",
+       "MeasResults",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasResults_tags_1,
+       sizeof(asn_DEF_MeasResults_tags_1)
+               /sizeof(asn_DEF_MeasResults_tags_1[0]), /* 1 */
+       asn_DEF_MeasResults_tags_1,     /* Same as above */
+       sizeof(asn_DEF_MeasResults_tags_1)
+               /sizeof(asn_DEF_MeasResults_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasResults_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasResults_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasResults.h b/src/codec_utils/RRC/MeasResults.h
new file mode 100644 (file)
index 0000000..ccbb796
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasResults_H_
+#define        _MeasResults_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasId.h"
+#include "MeasResultServMOList.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasResults__measResultNeighCells_PR {
+       MeasResults__measResultNeighCells_PR_NOTHING,   /* No components present */
+       MeasResults__measResultNeighCells_PR_measResultListNR,
+       /* Extensions may appear below */
+       MeasResults__measResultNeighCells_PR_measResultListEUTRA
+} MeasResults__measResultNeighCells_PR;
+
+/* Forward declarations */
+struct MeasResultListNR;
+struct MeasResultListEUTRA;
+
+/* MeasResults */
+typedef struct MeasResults {
+       MeasId_t         measId;
+       MeasResultServMOList_t   measResultServingMOList;
+       struct MeasResults__measResultNeighCells {
+               MeasResults__measResultNeighCells_PR present;
+               union MeasResults__measResultNeighCells_u {
+                       struct MeasResultListNR *measResultListNR;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct MeasResultListEUTRA      *measResultListEUTRA;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *measResultNeighCells;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasResults_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasResults;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasResults_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasResults_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasResults_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasTiming.c b/src/codec_utils/RRC/MeasTiming.c
new file mode 100644 (file)
index 0000000..9a1c099
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasTiming.h"
+
+#include "SS-RSSI-Measurement.h"
+static asn_TYPE_member_t asn_MBR_frequencyAndTiming_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTiming__frequencyAndTiming, carrierFreq),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTiming__frequencyAndTiming, ssbSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbSubcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTiming__frequencyAndTiming, ssb_MeasurementTimingConfiguration),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-MeasurementTimingConfiguration"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasTiming__frequencyAndTiming, ss_RSSI_Measurement),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SS_RSSI_Measurement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ss-RSSI-Measurement"
+               },
+};
+static const int asn_MAP_frequencyAndTiming_oms_2[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_frequencyAndTiming_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_frequencyAndTiming_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreq */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ssbSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-MeasurementTimingConfiguration */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ss-RSSI-Measurement */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_frequencyAndTiming_specs_2 = {
+       sizeof(struct MeasTiming__frequencyAndTiming),
+       offsetof(struct MeasTiming__frequencyAndTiming, _asn_ctx),
+       asn_MAP_frequencyAndTiming_tag2el_2,
+       4,      /* Count of tags in the map */
+       asn_MAP_frequencyAndTiming_oms_2,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyAndTiming_2 = {
+       "frequencyAndTiming",
+       "frequencyAndTiming",
+       &asn_OP_SEQUENCE,
+       asn_DEF_frequencyAndTiming_tags_2,
+       sizeof(asn_DEF_frequencyAndTiming_tags_2)
+               /sizeof(asn_DEF_frequencyAndTiming_tags_2[0]) - 1, /* 1 */
+       asn_DEF_frequencyAndTiming_tags_2,      /* Same as above */
+       sizeof(asn_DEF_frequencyAndTiming_tags_2)
+               /sizeof(asn_DEF_frequencyAndTiming_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_frequencyAndTiming_2,
+       4,      /* Elements count */
+       &asn_SPC_frequencyAndTiming_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasTiming_1[] = {
+       { ATF_POINTER, 1, offsetof(struct MeasTiming, frequencyAndTiming),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_frequencyAndTiming_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyAndTiming"
+               },
+};
+static const int asn_MAP_MeasTiming_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_MeasTiming_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasTiming_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* frequencyAndTiming */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasTiming_specs_1 = {
+       sizeof(struct MeasTiming),
+       offsetof(struct MeasTiming, _asn_ctx),
+       asn_MAP_MeasTiming_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_MeasTiming_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasTiming = {
+       "MeasTiming",
+       "MeasTiming",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasTiming_tags_1,
+       sizeof(asn_DEF_MeasTiming_tags_1)
+               /sizeof(asn_DEF_MeasTiming_tags_1[0]), /* 1 */
+       asn_DEF_MeasTiming_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasTiming_tags_1)
+               /sizeof(asn_DEF_MeasTiming_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasTiming_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasTiming_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasTiming.h b/src/codec_utils/RRC/MeasTiming.h
new file mode 100644 (file)
index 0000000..6465f59
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasTiming_H_
+#define        _MeasTiming_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include "SubcarrierSpacing.h"
+#include "SSB-MTC.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SS_RSSI_Measurement;
+
+/* MeasTiming */
+typedef struct MeasTiming {
+       struct MeasTiming__frequencyAndTiming {
+               ARFCN_ValueNR_t  carrierFreq;
+               SubcarrierSpacing_t      ssbSubcarrierSpacing;
+               SSB_MTC_t        ssb_MeasurementTimingConfiguration;
+               struct SS_RSSI_Measurement      *ss_RSSI_Measurement;   /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *frequencyAndTiming;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasTiming_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasTiming;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasTiming_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasTiming_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasTiming_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasTimingList.c b/src/codec_utils/RRC/MeasTimingList.c
new file mode 100644 (file)
index 0000000..c8e9ac5
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasTimingList.h"
+
+#include "MeasTiming.h"
+static asn_oer_constraints_t asn_OER_type_MeasTimingList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_MeasTimingList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasTimingList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_MeasTiming,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasTimingList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MeasTimingList_specs_1 = {
+       sizeof(struct MeasTimingList),
+       offsetof(struct MeasTimingList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasTimingList = {
+       "MeasTimingList",
+       "MeasTimingList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MeasTimingList_tags_1,
+       sizeof(asn_DEF_MeasTimingList_tags_1)
+               /sizeof(asn_DEF_MeasTimingList_tags_1[0]), /* 1 */
+       asn_DEF_MeasTimingList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasTimingList_tags_1)
+               /sizeof(asn_DEF_MeasTimingList_tags_1[0]), /* 1 */
+       { &asn_OER_type_MeasTimingList_constr_1, &asn_PER_type_MeasTimingList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MeasTimingList_1,
+       1,      /* Single element */
+       &asn_SPC_MeasTimingList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasTimingList.h b/src/codec_utils/RRC/MeasTimingList.h
new file mode 100644 (file)
index 0000000..c18c618
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasTimingList_H_
+#define        _MeasTimingList_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 MeasTiming;
+
+/* MeasTimingList */
+typedef struct MeasTimingList {
+       A_SEQUENCE_OF(struct MeasTiming) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasTimingList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasTimingList;
+extern asn_SET_OF_specifics_t asn_SPC_MeasTimingList_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasTimingList_1[1];
+extern asn_per_constraints_t asn_PER_type_MeasTimingList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasTimingList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasTriggerQuantity.c b/src/codec_utils/RRC/MeasTriggerQuantity.c
new file mode 100644 (file)
index 0000000..7e19ec7
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasTriggerQuantity.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasTriggerQuantity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasTriggerQuantity_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasTriggerQuantity_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantity, choice.rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantity, choice.rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRQ_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantity, choice.sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SINR_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasTriggerQuantity_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantity_specs_1 = {
+       sizeof(struct MeasTriggerQuantity),
+       offsetof(struct MeasTriggerQuantity, _asn_ctx),
+       offsetof(struct MeasTriggerQuantity, present),
+       sizeof(((struct MeasTriggerQuantity *)0)->present),
+       asn_MAP_MeasTriggerQuantity_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantity = {
+       "MeasTriggerQuantity",
+       "MeasTriggerQuantity",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MeasTriggerQuantity_constr_1, &asn_PER_type_MeasTriggerQuantity_constr_1, CHOICE_constraint },
+       asn_MBR_MeasTriggerQuantity_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasTriggerQuantity_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasTriggerQuantity.h b/src/codec_utils/RRC/MeasTriggerQuantity.h
new file mode 100644 (file)
index 0000000..a6ca7de
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasTriggerQuantity_H_
+#define        _MeasTriggerQuantity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include "RSRQ-Range.h"
+#include "SINR-Range.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasTriggerQuantity_PR {
+       MeasTriggerQuantity_PR_NOTHING, /* No components present */
+       MeasTriggerQuantity_PR_rsrp,
+       MeasTriggerQuantity_PR_rsrq,
+       MeasTriggerQuantity_PR_sinr
+} MeasTriggerQuantity_PR;
+
+/* MeasTriggerQuantity */
+typedef struct MeasTriggerQuantity {
+       MeasTriggerQuantity_PR present;
+       union MeasTriggerQuantity_u {
+               RSRP_Range_t     rsrp;
+               RSRQ_Range_t     rsrq;
+               SINR_Range_t     sinr;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasTriggerQuantity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantity;
+extern asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantity_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasTriggerQuantity_1[3];
+extern asn_per_constraints_t asn_PER_type_MeasTriggerQuantity_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasTriggerQuantity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasTriggerQuantityEUTRA.c b/src/codec_utils/RRC/MeasTriggerQuantityEUTRA.c
new file mode 100644 (file)
index 0000000..c1b76b8
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasTriggerQuantityEUTRA.h"
+
+static asn_oer_constraints_t asn_OER_type_MeasTriggerQuantityEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasTriggerQuantityEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasTriggerQuantityEUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityEUTRA, choice.rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityEUTRA, choice.rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRQ_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityEUTRA, choice.sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SINR_RangeEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasTriggerQuantityEUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantityEUTRA_specs_1 = {
+       sizeof(struct MeasTriggerQuantityEUTRA),
+       offsetof(struct MeasTriggerQuantityEUTRA, _asn_ctx),
+       offsetof(struct MeasTriggerQuantityEUTRA, present),
+       sizeof(((struct MeasTriggerQuantityEUTRA *)0)->present),
+       asn_MAP_MeasTriggerQuantityEUTRA_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantityEUTRA = {
+       "MeasTriggerQuantityEUTRA",
+       "MeasTriggerQuantityEUTRA",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MeasTriggerQuantityEUTRA_constr_1, &asn_PER_type_MeasTriggerQuantityEUTRA_constr_1, CHOICE_constraint },
+       asn_MBR_MeasTriggerQuantityEUTRA_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasTriggerQuantityEUTRA_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasTriggerQuantityEUTRA.h b/src/codec_utils/RRC/MeasTriggerQuantityEUTRA.h
new file mode 100644 (file)
index 0000000..6b23eec
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasTriggerQuantityEUTRA_H_
+#define        _MeasTriggerQuantityEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-RangeEUTRA.h"
+#include "RSRQ-RangeEUTRA.h"
+#include "SINR-RangeEUTRA.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasTriggerQuantityEUTRA_PR {
+       MeasTriggerQuantityEUTRA_PR_NOTHING,    /* No components present */
+       MeasTriggerQuantityEUTRA_PR_rsrp,
+       MeasTriggerQuantityEUTRA_PR_rsrq,
+       MeasTriggerQuantityEUTRA_PR_sinr
+} MeasTriggerQuantityEUTRA_PR;
+
+/* MeasTriggerQuantityEUTRA */
+typedef struct MeasTriggerQuantityEUTRA {
+       MeasTriggerQuantityEUTRA_PR present;
+       union MeasTriggerQuantityEUTRA_u {
+               RSRP_RangeEUTRA_t        rsrp;
+               RSRQ_RangeEUTRA_t        rsrq;
+               SINR_RangeEUTRA_t        sinr;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasTriggerQuantityEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantityEUTRA;
+extern asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantityEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasTriggerQuantityEUTRA_1[3];
+extern asn_per_constraints_t asn_PER_type_MeasTriggerQuantityEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasTriggerQuantityEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasTriggerQuantityOffset.c b/src/codec_utils/RRC/MeasTriggerQuantityOffset.c
new file mode 100644 (file)
index 0000000..5cdac26
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasTriggerQuantityOffset.h"
+
+static int
+memb_rsrp_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 >= -30 && value <= 30)) {
+               /* 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_rsrq_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 >= -30 && value <= 30)) {
+               /* 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_sinr_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 >= -30 && value <= 30)) {
+               /* 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_rsrp_constr_2 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..30) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_rsrp_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  30 }      /* (-30..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rsrq_constr_3 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..30) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_rsrq_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  30 }      /* (-30..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sinr_constr_4 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..30) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sinr_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  30 }      /* (-30..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_MeasTriggerQuantityOffset_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_MeasTriggerQuantityOffset_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MeasTriggerQuantityOffset_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityOffset, choice.rsrp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_rsrp_constr_2, &asn_PER_memb_rsrp_constr_2,  memb_rsrp_constraint_1 },
+               0, 0, /* No default value */
+               "rsrp"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityOffset, choice.rsrq),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_rsrq_constr_3, &asn_PER_memb_rsrq_constr_3,  memb_rsrq_constraint_1 },
+               0, 0, /* No default value */
+               "rsrq"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasTriggerQuantityOffset, choice.sinr),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sinr_constr_4, &asn_PER_memb_sinr_constr_4,  memb_sinr_constraint_1 },
+               0, 0, /* No default value */
+               "sinr"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasTriggerQuantityOffset_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrp */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrq */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sinr */
+};
+asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantityOffset_specs_1 = {
+       sizeof(struct MeasTriggerQuantityOffset),
+       offsetof(struct MeasTriggerQuantityOffset, _asn_ctx),
+       offsetof(struct MeasTriggerQuantityOffset, present),
+       sizeof(((struct MeasTriggerQuantityOffset *)0)->present),
+       asn_MAP_MeasTriggerQuantityOffset_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantityOffset = {
+       "MeasTriggerQuantityOffset",
+       "MeasTriggerQuantityOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_MeasTriggerQuantityOffset_constr_1, &asn_PER_type_MeasTriggerQuantityOffset_constr_1, CHOICE_constraint },
+       asn_MBR_MeasTriggerQuantityOffset_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasTriggerQuantityOffset_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasTriggerQuantityOffset.h b/src/codec_utils/RRC/MeasTriggerQuantityOffset.h
new file mode 100644 (file)
index 0000000..01daf70
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasTriggerQuantityOffset_H_
+#define        _MeasTriggerQuantityOffset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasTriggerQuantityOffset_PR {
+       MeasTriggerQuantityOffset_PR_NOTHING,   /* No components present */
+       MeasTriggerQuantityOffset_PR_rsrp,
+       MeasTriggerQuantityOffset_PR_rsrq,
+       MeasTriggerQuantityOffset_PR_sinr
+} MeasTriggerQuantityOffset_PR;
+
+/* MeasTriggerQuantityOffset */
+typedef struct MeasTriggerQuantityOffset {
+       MeasTriggerQuantityOffset_PR present;
+       union MeasTriggerQuantityOffset_u {
+               long     rsrp;
+               long     rsrq;
+               long     sinr;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasTriggerQuantityOffset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasTriggerQuantityOffset;
+extern asn_CHOICE_specifics_t asn_SPC_MeasTriggerQuantityOffset_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasTriggerQuantityOffset_1[3];
+extern asn_per_constraints_t asn_PER_type_MeasTriggerQuantityOffset_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasTriggerQuantityOffset_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasurementReport-IEs.c b/src/codec_utils/RRC/MeasurementReport-IEs.c
new file mode 100644 (file)
index 0000000..d89393f
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementReport-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct MeasurementReport_IEs__nonCriticalExtension),
+       offsetof(struct MeasurementReport_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementReport_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementReport_IEs, measResults),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResults,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measResults"
+               },
+       { ATF_POINTER, 2, offsetof(struct MeasurementReport_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementReport_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_MeasurementReport_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_MeasurementReport_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementReport_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measResults */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementReport_IEs_specs_1 = {
+       sizeof(struct MeasurementReport_IEs),
+       offsetof(struct MeasurementReport_IEs, _asn_ctx),
+       asn_MAP_MeasurementReport_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_MeasurementReport_IEs_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementReport_IEs = {
+       "MeasurementReport-IEs",
+       "MeasurementReport-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementReport_IEs_tags_1,
+       sizeof(asn_DEF_MeasurementReport_IEs_tags_1)
+               /sizeof(asn_DEF_MeasurementReport_IEs_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementReport_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MeasurementReport_IEs_tags_1)
+               /sizeof(asn_DEF_MeasurementReport_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementReport_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_MeasurementReport_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasurementReport-IEs.h b/src/codec_utils/RRC/MeasurementReport-IEs.h
new file mode 100644 (file)
index 0000000..aa101cd
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementReport_IEs_H_
+#define        _MeasurementReport_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasResults.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MeasurementReport-IEs */
+typedef struct MeasurementReport_IEs {
+       MeasResults_t    measResults;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct MeasurementReport_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementReport_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementReport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementReport_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementReport_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementReport_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasurementReport.c b/src/codec_utils/RRC/MeasurementReport.c
new file mode 100644 (file)
index 0000000..be2e75d
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementReport.h"
+
+#include "MeasurementReport-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct MeasurementReport__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct MeasurementReport__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct MeasurementReport__criticalExtensions, choice.measurementReport),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementReport_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measurementReport"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasurementReport__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementReport */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct MeasurementReport__criticalExtensions),
+       offsetof(struct MeasurementReport__criticalExtensions, _asn_ctx),
+       offsetof(struct MeasurementReport__criticalExtensions, present),
+       sizeof(((struct MeasurementReport__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementReport_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementReport, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementReport_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementReport_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementReport_specs_1 = {
+       sizeof(struct MeasurementReport),
+       offsetof(struct MeasurementReport, _asn_ctx),
+       asn_MAP_MeasurementReport_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_MeasurementReport = {
+       "MeasurementReport",
+       "MeasurementReport",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementReport_tags_1,
+       sizeof(asn_DEF_MeasurementReport_tags_1)
+               /sizeof(asn_DEF_MeasurementReport_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementReport_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MeasurementReport_tags_1)
+               /sizeof(asn_DEF_MeasurementReport_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementReport_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasurementReport_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasurementReport.h b/src/codec_utils/RRC/MeasurementReport.h
new file mode 100644 (file)
index 0000000..ef04a13
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementReport_H_
+#define        _MeasurementReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementReport__criticalExtensions_PR {
+       MeasurementReport__criticalExtensions_PR_NOTHING,       /* No components present */
+       MeasurementReport__criticalExtensions_PR_measurementReport,
+       MeasurementReport__criticalExtensions_PR_criticalExtensionsFuture
+} MeasurementReport__criticalExtensions_PR;
+
+/* Forward declarations */
+struct MeasurementReport_IEs;
+
+/* MeasurementReport */
+typedef struct MeasurementReport {
+       struct MeasurementReport__criticalExtensions {
+               MeasurementReport__criticalExtensions_PR present;
+               union MeasurementReport__criticalExtensions_u {
+                       struct MeasurementReport_IEs    *measurementReport;
+                       struct MeasurementReport__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementReport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementReport;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementReport_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementReport_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementReport_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.c b/src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.c
new file mode 100644 (file)
index 0000000..e0fec04
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTimingConfiguration-IEs.h"
+
+#include "MeasTimingList.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct MeasurementTimingConfiguration_IEs__nonCriticalExtension),
+       offsetof(struct MeasurementTimingConfiguration_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MeasurementTimingConfiguration_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct MeasurementTimingConfiguration_IEs, measTiming),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasTimingList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measTiming"
+               },
+       { ATF_POINTER, 1, offsetof(struct MeasurementTimingConfiguration_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_MeasurementTimingConfiguration_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_MeasurementTimingConfiguration_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementTimingConfiguration_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measTiming */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MeasurementTimingConfiguration_IEs_specs_1 = {
+       sizeof(struct MeasurementTimingConfiguration_IEs),
+       offsetof(struct MeasurementTimingConfiguration_IEs, _asn_ctx),
+       asn_MAP_MeasurementTimingConfiguration_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_MeasurementTimingConfiguration_IEs_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MeasurementTimingConfiguration_IEs = {
+       "MeasurementTimingConfiguration-IEs",
+       "MeasurementTimingConfiguration-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementTimingConfiguration_IEs_tags_1,
+       sizeof(asn_DEF_MeasurementTimingConfiguration_IEs_tags_1)
+               /sizeof(asn_DEF_MeasurementTimingConfiguration_IEs_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementTimingConfiguration_IEs_tags_1,      /* Same as above */
+       sizeof(asn_DEF_MeasurementTimingConfiguration_IEs_tags_1)
+               /sizeof(asn_DEF_MeasurementTimingConfiguration_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementTimingConfiguration_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_MeasurementTimingConfiguration_IEs_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.h b/src/codec_utils/RRC/MeasurementTimingConfiguration-IEs.h
new file mode 100644 (file)
index 0000000..78b51fd
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementTimingConfiguration_IEs_H_
+#define        _MeasurementTimingConfiguration_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasTimingList;
+
+/* MeasurementTimingConfiguration-IEs */
+typedef struct MeasurementTimingConfiguration_IEs {
+       struct MeasTimingList   *measTiming;    /* OPTIONAL */
+       struct MeasurementTimingConfiguration_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementTimingConfiguration_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTimingConfiguration_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementTimingConfiguration_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_MeasurementTimingConfiguration_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTimingConfiguration_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MeasurementTimingConfiguration.c b/src/codec_utils/RRC/MeasurementTimingConfiguration.c
new file mode 100644 (file)
index 0000000..3a098bf
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MeasurementTimingConfiguration.h"
+
+#include "MeasurementTimingConfiguration-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, choice.measTimingConf),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementTimingConfiguration_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measTimingConf"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measTimingConf */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct MeasurementTimingConfiguration__criticalExtensions__c1),
+       offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct MeasurementTimingConfiguration__criticalExtensions__c1, present),
+       sizeof(((struct MeasurementTimingConfiguration__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_8 = {
+       sizeof(struct MeasurementTimingConfiguration__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct MeasurementTimingConfiguration__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_8 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_8,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_8,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_8)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct MeasurementTimingConfiguration__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct MeasurementTimingConfiguration__criticalExtensions),
+       offsetof(struct MeasurementTimingConfiguration__criticalExtensions, _asn_ctx),
+       offsetof(struct MeasurementTimingConfiguration__criticalExtensions, present),
+       sizeof(((struct MeasurementTimingConfiguration__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_MeasurementTimingConfiguration_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MeasurementTimingConfiguration, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MeasurementTimingConfiguration_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MeasurementTimingConfiguration_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_MeasurementTimingConfiguration_specs_1 = {
+       sizeof(struct MeasurementTimingConfiguration),
+       offsetof(struct MeasurementTimingConfiguration, _asn_ctx),
+       asn_MAP_MeasurementTimingConfiguration_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_MeasurementTimingConfiguration = {
+       "MeasurementTimingConfiguration",
+       "MeasurementTimingConfiguration",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MeasurementTimingConfiguration_tags_1,
+       sizeof(asn_DEF_MeasurementTimingConfiguration_tags_1)
+               /sizeof(asn_DEF_MeasurementTimingConfiguration_tags_1[0]), /* 1 */
+       asn_DEF_MeasurementTimingConfiguration_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MeasurementTimingConfiguration_tags_1)
+               /sizeof(asn_DEF_MeasurementTimingConfiguration_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MeasurementTimingConfiguration_1,
+       1,      /* Elements count */
+       &asn_SPC_MeasurementTimingConfiguration_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MeasurementTimingConfiguration.h b/src/codec_utils/RRC/MeasurementTimingConfiguration.h
new file mode 100644 (file)
index 0000000..f043584
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MeasurementTimingConfiguration_H_
+#define        _MeasurementTimingConfiguration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MeasurementTimingConfiguration__criticalExtensions_PR {
+       MeasurementTimingConfiguration__criticalExtensions_PR_NOTHING,  /* No components present */
+       MeasurementTimingConfiguration__criticalExtensions_PR_c1,
+       MeasurementTimingConfiguration__criticalExtensions_PR_criticalExtensionsFuture
+} MeasurementTimingConfiguration__criticalExtensions_PR;
+typedef enum MeasurementTimingConfiguration__criticalExtensions__c1_PR {
+       MeasurementTimingConfiguration__criticalExtensions__c1_PR_NOTHING,      /* No components present */
+       MeasurementTimingConfiguration__criticalExtensions__c1_PR_measTimingConf,
+       MeasurementTimingConfiguration__criticalExtensions__c1_PR_spare3,
+       MeasurementTimingConfiguration__criticalExtensions__c1_PR_spare2,
+       MeasurementTimingConfiguration__criticalExtensions__c1_PR_spare1
+} MeasurementTimingConfiguration__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct MeasurementTimingConfiguration_IEs;
+
+/* MeasurementTimingConfiguration */
+typedef struct MeasurementTimingConfiguration {
+       struct MeasurementTimingConfiguration__criticalExtensions {
+               MeasurementTimingConfiguration__criticalExtensions_PR present;
+               union MeasurementTimingConfiguration__criticalExtensions_u {
+                       struct MeasurementTimingConfiguration__criticalExtensions__c1 {
+                               MeasurementTimingConfiguration__criticalExtensions__c1_PR present;
+                               union MeasurementTimingConfiguration__criticalExtensions__c1_u {
+                                       struct MeasurementTimingConfiguration_IEs       *measTimingConf;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct MeasurementTimingConfiguration__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MeasurementTimingConfiguration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MeasurementTimingConfiguration;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MeasurementTimingConfiguration_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MobilityFromNRCommand-IEs.c b/src/codec_utils/RRC/MobilityFromNRCommand-IEs.c
new file mode 100644 (file)
index 0000000..ad462fc
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MobilityFromNRCommand-IEs.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_targetRAT_Type_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_targetRAT_Type_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }    /* (0..3,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_targetRAT_Type_value2enum_2[] = {
+       { 0,    5,      "eutra" },
+       { 1,    6,      "spare3" },
+       { 2,    6,      "spare2" },
+       { 3,    6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_targetRAT_Type_enum2value_2[] = {
+       0,      /* eutra(0) */
+       3,      /* spare1(3) */
+       2,      /* spare2(2) */
+       1       /* spare3(1) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_targetRAT_Type_specs_2 = {
+       asn_MAP_targetRAT_Type_value2enum_2,    /* "tag" => N; sorted by tag */
+       asn_MAP_targetRAT_Type_enum2value_2,    /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       5,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_targetRAT_Type_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_targetRAT_Type_2 = {
+       "targetRAT-Type",
+       "targetRAT-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_targetRAT_Type_tags_2,
+       sizeof(asn_DEF_targetRAT_Type_tags_2)
+               /sizeof(asn_DEF_targetRAT_Type_tags_2[0]) - 1, /* 1 */
+       asn_DEF_targetRAT_Type_tags_2,  /* Same as above */
+       sizeof(asn_DEF_targetRAT_Type_tags_2)
+               /sizeof(asn_DEF_targetRAT_Type_tags_2[0]), /* 2 */
+       { &asn_OER_type_targetRAT_Type_constr_2, &asn_PER_type_targetRAT_Type_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_targetRAT_Type_specs_2 /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_11 = {
+       sizeof(struct MobilityFromNRCommand_IEs__nonCriticalExtension),
+       offsetof(struct MobilityFromNRCommand_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_11 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_11,
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_11,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MobilityFromNRCommand_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityFromNRCommand_IEs, targetRAT_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_targetRAT_Type_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetRAT-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityFromNRCommand_IEs, targetRAT_MessageContainer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetRAT-MessageContainer"
+               },
+       { ATF_POINTER, 3, offsetof(struct MobilityFromNRCommand_IEs, nas_SecurityParamFromNR),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nas-SecurityParamFromNR"
+               },
+       { ATF_POINTER, 2, offsetof(struct MobilityFromNRCommand_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct MobilityFromNRCommand_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_MobilityFromNRCommand_IEs_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_MobilityFromNRCommand_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MobilityFromNRCommand_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* targetRAT-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetRAT-MessageContainer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nas-SecurityParamFromNR */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MobilityFromNRCommand_IEs_specs_1 = {
+       sizeof(struct MobilityFromNRCommand_IEs),
+       offsetof(struct MobilityFromNRCommand_IEs, _asn_ctx),
+       asn_MAP_MobilityFromNRCommand_IEs_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_MobilityFromNRCommand_IEs_oms_1,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MobilityFromNRCommand_IEs = {
+       "MobilityFromNRCommand-IEs",
+       "MobilityFromNRCommand-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MobilityFromNRCommand_IEs_tags_1,
+       sizeof(asn_DEF_MobilityFromNRCommand_IEs_tags_1)
+               /sizeof(asn_DEF_MobilityFromNRCommand_IEs_tags_1[0]), /* 1 */
+       asn_DEF_MobilityFromNRCommand_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_MobilityFromNRCommand_IEs_tags_1)
+               /sizeof(asn_DEF_MobilityFromNRCommand_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MobilityFromNRCommand_IEs_1,
+       5,      /* Elements count */
+       &asn_SPC_MobilityFromNRCommand_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MobilityFromNRCommand-IEs.h b/src/codec_utils/RRC/MobilityFromNRCommand-IEs.h
new file mode 100644 (file)
index 0000000..982f326
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MobilityFromNRCommand_IEs_H_
+#define        _MobilityFromNRCommand_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MobilityFromNRCommand_IEs__targetRAT_Type {
+       MobilityFromNRCommand_IEs__targetRAT_Type_eutra = 0,
+       MobilityFromNRCommand_IEs__targetRAT_Type_spare3        = 1,
+       MobilityFromNRCommand_IEs__targetRAT_Type_spare2        = 2,
+       MobilityFromNRCommand_IEs__targetRAT_Type_spare1        = 3
+       /*
+        * Enumeration is extensible
+        */
+} e_MobilityFromNRCommand_IEs__targetRAT_Type;
+
+/* MobilityFromNRCommand-IEs */
+typedef struct MobilityFromNRCommand_IEs {
+       long     targetRAT_Type;
+       OCTET_STRING_t   targetRAT_MessageContainer;
+       OCTET_STRING_t  *nas_SecurityParamFromNR;       /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct MobilityFromNRCommand_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MobilityFromNRCommand_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_targetRAT_Type_2;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MobilityFromNRCommand_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MobilityFromNRCommand_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_MobilityFromNRCommand_IEs_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MobilityFromNRCommand_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MobilityFromNRCommand.c b/src/codec_utils/RRC/MobilityFromNRCommand.c
new file mode 100644 (file)
index 0000000..75cc909
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MobilityFromNRCommand.h"
+
+#include "MobilityFromNRCommand-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct MobilityFromNRCommand__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct MobilityFromNRCommand__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct MobilityFromNRCommand__criticalExtensions, choice.mobilityFromNRCommand),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MobilityFromNRCommand_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mobilityFromNRCommand"
+               },
+       { ATF_POINTER, 0, offsetof(struct MobilityFromNRCommand__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mobilityFromNRCommand */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct MobilityFromNRCommand__criticalExtensions),
+       offsetof(struct MobilityFromNRCommand__criticalExtensions, _asn_ctx),
+       offsetof(struct MobilityFromNRCommand__criticalExtensions, present),
+       sizeof(((struct MobilityFromNRCommand__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MobilityFromNRCommand_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityFromNRCommand, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityFromNRCommand, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MobilityFromNRCommand_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MobilityFromNRCommand_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MobilityFromNRCommand_specs_1 = {
+       sizeof(struct MobilityFromNRCommand),
+       offsetof(struct MobilityFromNRCommand, _asn_ctx),
+       asn_MAP_MobilityFromNRCommand_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MobilityFromNRCommand = {
+       "MobilityFromNRCommand",
+       "MobilityFromNRCommand",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MobilityFromNRCommand_tags_1,
+       sizeof(asn_DEF_MobilityFromNRCommand_tags_1)
+               /sizeof(asn_DEF_MobilityFromNRCommand_tags_1[0]), /* 1 */
+       asn_DEF_MobilityFromNRCommand_tags_1,   /* Same as above */
+       sizeof(asn_DEF_MobilityFromNRCommand_tags_1)
+               /sizeof(asn_DEF_MobilityFromNRCommand_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MobilityFromNRCommand_1,
+       2,      /* Elements count */
+       &asn_SPC_MobilityFromNRCommand_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MobilityFromNRCommand.h b/src/codec_utils/RRC/MobilityFromNRCommand.h
new file mode 100644 (file)
index 0000000..ccf7a8f
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MobilityFromNRCommand_H_
+#define        _MobilityFromNRCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MobilityFromNRCommand__criticalExtensions_PR {
+       MobilityFromNRCommand__criticalExtensions_PR_NOTHING,   /* No components present */
+       MobilityFromNRCommand__criticalExtensions_PR_mobilityFromNRCommand,
+       MobilityFromNRCommand__criticalExtensions_PR_criticalExtensionsFuture
+} MobilityFromNRCommand__criticalExtensions_PR;
+
+/* Forward declarations */
+struct MobilityFromNRCommand_IEs;
+
+/* MobilityFromNRCommand */
+typedef struct MobilityFromNRCommand {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct MobilityFromNRCommand__criticalExtensions {
+               MobilityFromNRCommand__criticalExtensions_PR present;
+               union MobilityFromNRCommand__criticalExtensions_u {
+                       struct MobilityFromNRCommand_IEs        *mobilityFromNRCommand;
+                       struct MobilityFromNRCommand__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MobilityFromNRCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MobilityFromNRCommand;
+extern asn_SEQUENCE_specifics_t asn_SPC_MobilityFromNRCommand_specs_1;
+extern asn_TYPE_member_t asn_MBR_MobilityFromNRCommand_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MobilityFromNRCommand_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MobilityStateParameters.c b/src/codec_utils/RRC/MobilityStateParameters.c
new file mode 100644 (file)
index 0000000..53a9224
--- /dev/null
@@ -0,0 +1,268 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MobilityStateParameters.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.
+ */
+static int
+memb_n_CellChangeMedium_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 <= 16)) {
+               /* 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_n_CellChangeHigh_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 <= 16)) {
+               /* 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_t_Evaluation_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t_Evaluation_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t_HystNormal_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t_HystNormal_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n_CellChangeMedium_constr_20 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_n_CellChangeMedium_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n_CellChangeHigh_constr_21 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_n_CellChangeHigh_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_t_Evaluation_value2enum_2[] = {
+       { 0,    3,      "s30" },
+       { 1,    3,      "s60" },
+       { 2,    4,      "s120" },
+       { 3,    4,      "s180" },
+       { 4,    4,      "s240" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_t_Evaluation_enum2value_2[] = {
+       2,      /* s120(2) */
+       3,      /* s180(3) */
+       4,      /* s240(4) */
+       0,      /* s30(0) */
+       1,      /* s60(1) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5       /* spare3(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t_Evaluation_specs_2 = {
+       asn_MAP_t_Evaluation_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_t_Evaluation_enum2value_2,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t_Evaluation_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_t_Evaluation_2 = {
+       "t-Evaluation",
+       "t-Evaluation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t_Evaluation_tags_2,
+       sizeof(asn_DEF_t_Evaluation_tags_2)
+               /sizeof(asn_DEF_t_Evaluation_tags_2[0]) - 1, /* 1 */
+       asn_DEF_t_Evaluation_tags_2,    /* Same as above */
+       sizeof(asn_DEF_t_Evaluation_tags_2)
+               /sizeof(asn_DEF_t_Evaluation_tags_2[0]), /* 2 */
+       { &asn_OER_type_t_Evaluation_constr_2, &asn_PER_type_t_Evaluation_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t_Evaluation_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t_HystNormal_value2enum_11[] = {
+       { 0,    3,      "s30" },
+       { 1,    3,      "s60" },
+       { 2,    4,      "s120" },
+       { 3,    4,      "s180" },
+       { 4,    4,      "s240" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_t_HystNormal_enum2value_11[] = {
+       2,      /* s120(2) */
+       3,      /* s180(3) */
+       4,      /* s240(4) */
+       0,      /* s30(0) */
+       1,      /* s60(1) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5       /* spare3(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t_HystNormal_specs_11 = {
+       asn_MAP_t_HystNormal_value2enum_11,     /* "tag" => N; sorted by tag */
+       asn_MAP_t_HystNormal_enum2value_11,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t_HystNormal_tags_11[] = {
+       (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_t_HystNormal_11 = {
+       "t-HystNormal",
+       "t-HystNormal",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t_HystNormal_tags_11,
+       sizeof(asn_DEF_t_HystNormal_tags_11)
+               /sizeof(asn_DEF_t_HystNormal_tags_11[0]) - 1, /* 1 */
+       asn_DEF_t_HystNormal_tags_11,   /* Same as above */
+       sizeof(asn_DEF_t_HystNormal_tags_11)
+               /sizeof(asn_DEF_t_HystNormal_tags_11[0]), /* 2 */
+       { &asn_OER_type_t_HystNormal_constr_11, &asn_PER_type_t_HystNormal_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t_HystNormal_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_MobilityStateParameters_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityStateParameters, t_Evaluation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t_Evaluation_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-Evaluation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityStateParameters, t_HystNormal),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t_HystNormal_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-HystNormal"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityStateParameters, n_CellChangeMedium),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_n_CellChangeMedium_constr_20, &asn_PER_memb_n_CellChangeMedium_constr_20,  memb_n_CellChangeMedium_constraint_1 },
+               0, 0, /* No default value */
+               "n-CellChangeMedium"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct MobilityStateParameters, n_CellChangeHigh),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_n_CellChangeHigh_constr_21, &asn_PER_memb_n_CellChangeHigh_constr_21,  memb_n_CellChangeHigh_constraint_1 },
+               0, 0, /* No default value */
+               "n-CellChangeHigh"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MobilityStateParameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_MobilityStateParameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* t-Evaluation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t-HystNormal */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* n-CellChangeMedium */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* n-CellChangeHigh */
+};
+asn_SEQUENCE_specifics_t asn_SPC_MobilityStateParameters_specs_1 = {
+       sizeof(struct MobilityStateParameters),
+       offsetof(struct MobilityStateParameters, _asn_ctx),
+       asn_MAP_MobilityStateParameters_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_MobilityStateParameters = {
+       "MobilityStateParameters",
+       "MobilityStateParameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_MobilityStateParameters_tags_1,
+       sizeof(asn_DEF_MobilityStateParameters_tags_1)
+               /sizeof(asn_DEF_MobilityStateParameters_tags_1[0]), /* 1 */
+       asn_DEF_MobilityStateParameters_tags_1, /* Same as above */
+       sizeof(asn_DEF_MobilityStateParameters_tags_1)
+               /sizeof(asn_DEF_MobilityStateParameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_MobilityStateParameters_1,
+       4,      /* Elements count */
+       &asn_SPC_MobilityStateParameters_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MobilityStateParameters.h b/src/codec_utils/RRC/MobilityStateParameters.h
new file mode 100644 (file)
index 0000000..0764ebb
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MobilityStateParameters_H_
+#define        _MobilityStateParameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum MobilityStateParameters__t_Evaluation {
+       MobilityStateParameters__t_Evaluation_s30       = 0,
+       MobilityStateParameters__t_Evaluation_s60       = 1,
+       MobilityStateParameters__t_Evaluation_s120      = 2,
+       MobilityStateParameters__t_Evaluation_s180      = 3,
+       MobilityStateParameters__t_Evaluation_s240      = 4,
+       MobilityStateParameters__t_Evaluation_spare3    = 5,
+       MobilityStateParameters__t_Evaluation_spare2    = 6,
+       MobilityStateParameters__t_Evaluation_spare1    = 7
+} e_MobilityStateParameters__t_Evaluation;
+typedef enum MobilityStateParameters__t_HystNormal {
+       MobilityStateParameters__t_HystNormal_s30       = 0,
+       MobilityStateParameters__t_HystNormal_s60       = 1,
+       MobilityStateParameters__t_HystNormal_s120      = 2,
+       MobilityStateParameters__t_HystNormal_s180      = 3,
+       MobilityStateParameters__t_HystNormal_s240      = 4,
+       MobilityStateParameters__t_HystNormal_spare3    = 5,
+       MobilityStateParameters__t_HystNormal_spare2    = 6,
+       MobilityStateParameters__t_HystNormal_spare1    = 7
+} e_MobilityStateParameters__t_HystNormal;
+
+/* MobilityStateParameters */
+typedef struct MobilityStateParameters {
+       long     t_Evaluation;
+       long     t_HystNormal;
+       long     n_CellChangeMedium;
+       long     n_CellChangeHigh;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MobilityStateParameters_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_t_Evaluation_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t_HystNormal_11;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_MobilityStateParameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_MobilityStateParameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_MobilityStateParameters_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MobilityStateParameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ModulationOrder.c b/src/codec_utils/RRC/ModulationOrder.c
new file mode 100644 (file)
index 0000000..2ddad16
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ModulationOrder.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ModulationOrder_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ModulationOrder_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ModulationOrder_value2enum_1[] = {
+       { 0,    11,     "bpsk-halfpi" },
+       { 1,    4,      "bpsk" },
+       { 2,    4,      "qpsk" },
+       { 3,    5,      "qam16" },
+       { 4,    5,      "qam64" },
+       { 5,    6,      "qam256" }
+};
+static const unsigned int asn_MAP_ModulationOrder_enum2value_1[] = {
+       1,      /* bpsk(1) */
+       0,      /* bpsk-halfpi(0) */
+       3,      /* qam16(3) */
+       5,      /* qam256(5) */
+       4,      /* qam64(4) */
+       2       /* qpsk(2) */
+};
+const asn_INTEGER_specifics_t asn_SPC_ModulationOrder_specs_1 = {
+       asn_MAP_ModulationOrder_value2enum_1,   /* "tag" => N; sorted by tag */
+       asn_MAP_ModulationOrder_enum2value_1,   /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ModulationOrder_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ModulationOrder = {
+       "ModulationOrder",
+       "ModulationOrder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ModulationOrder_tags_1,
+       sizeof(asn_DEF_ModulationOrder_tags_1)
+               /sizeof(asn_DEF_ModulationOrder_tags_1[0]), /* 1 */
+       asn_DEF_ModulationOrder_tags_1, /* Same as above */
+       sizeof(asn_DEF_ModulationOrder_tags_1)
+               /sizeof(asn_DEF_ModulationOrder_tags_1[0]), /* 1 */
+       { &asn_OER_type_ModulationOrder_constr_1, &asn_PER_type_ModulationOrder_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ModulationOrder_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ModulationOrder.h b/src/codec_utils/RRC/ModulationOrder.h
new file mode 100644 (file)
index 0000000..c3dc5d3
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ModulationOrder_H_
+#define        _ModulationOrder_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ModulationOrder {
+       ModulationOrder_bpsk_halfpi     = 0,
+       ModulationOrder_bpsk    = 1,
+       ModulationOrder_qpsk    = 2,
+       ModulationOrder_qam16   = 3,
+       ModulationOrder_qam64   = 4,
+       ModulationOrder_qam256  = 5
+} e_ModulationOrder;
+
+/* ModulationOrder */
+typedef long    ModulationOrder_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ModulationOrder_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ModulationOrder;
+extern const asn_INTEGER_specifics_t asn_SPC_ModulationOrder_specs_1;
+asn_struct_free_f ModulationOrder_free;
+asn_struct_print_f ModulationOrder_print;
+asn_constr_check_f ModulationOrder_constraint;
+ber_type_decoder_f ModulationOrder_decode_ber;
+der_type_encoder_f ModulationOrder_encode_der;
+xer_type_decoder_f ModulationOrder_decode_xer;
+xer_type_encoder_f ModulationOrder_encode_xer;
+oer_type_decoder_f ModulationOrder_decode_oer;
+oer_type_encoder_f ModulationOrder_encode_oer;
+per_type_decoder_f ModulationOrder_decode_uper;
+per_type_encoder_f ModulationOrder_encode_uper;
+per_type_decoder_f ModulationOrder_decode_aper;
+per_type_encoder_f ModulationOrder_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ModulationOrder_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MultiBandInfoListEUTRA.c b/src/codec_utils/RRC/MultiBandInfoListEUTRA.c
new file mode 100644 (file)
index 0000000..53afe6c
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MultiBandInfoListEUTRA.h"
+
+static asn_oer_constraints_t asn_OER_type_MultiBandInfoListEUTRA_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MultiBandInfoListEUTRA_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MultiBandInfoListEUTRA_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FreqBandIndicatorEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MultiBandInfoListEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MultiBandInfoListEUTRA_specs_1 = {
+       sizeof(struct MultiBandInfoListEUTRA),
+       offsetof(struct MultiBandInfoListEUTRA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MultiBandInfoListEUTRA = {
+       "MultiBandInfoListEUTRA",
+       "MultiBandInfoListEUTRA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MultiBandInfoListEUTRA_tags_1,
+       sizeof(asn_DEF_MultiBandInfoListEUTRA_tags_1)
+               /sizeof(asn_DEF_MultiBandInfoListEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_MultiBandInfoListEUTRA_tags_1,  /* Same as above */
+       sizeof(asn_DEF_MultiBandInfoListEUTRA_tags_1)
+               /sizeof(asn_DEF_MultiBandInfoListEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_MultiBandInfoListEUTRA_constr_1, &asn_PER_type_MultiBandInfoListEUTRA_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MultiBandInfoListEUTRA_1,
+       1,      /* Single element */
+       &asn_SPC_MultiBandInfoListEUTRA_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MultiBandInfoListEUTRA.h b/src/codec_utils/RRC/MultiBandInfoListEUTRA.h
new file mode 100644 (file)
index 0000000..ecf5db3
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MultiBandInfoListEUTRA_H_
+#define        _MultiBandInfoListEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorEUTRA.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MultiBandInfoListEUTRA */
+typedef struct MultiBandInfoListEUTRA {
+       A_SEQUENCE_OF(FreqBandIndicatorEUTRA_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MultiBandInfoListEUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MultiBandInfoListEUTRA;
+extern asn_SET_OF_specifics_t asn_SPC_MultiBandInfoListEUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_MultiBandInfoListEUTRA_1[1];
+extern asn_per_constraints_t asn_PER_type_MultiBandInfoListEUTRA_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MultiBandInfoListEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.c b/src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.c
new file mode 100644 (file)
index 0000000..0f4c562
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MultiFrequencyBandListNR-SIB.h"
+
+#include "NR-MultiBandInfo.h"
+static asn_oer_constraints_t asn_OER_type_MultiFrequencyBandListNR_SIB_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_SIB_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NR_MultiBandInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_SIB_specs_1 = {
+       sizeof(struct MultiFrequencyBandListNR_SIB),
+       offsetof(struct MultiFrequencyBandListNR_SIB, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR_SIB = {
+       "MultiFrequencyBandListNR-SIB",
+       "MultiFrequencyBandListNR-SIB",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MultiFrequencyBandListNR_SIB_tags_1,
+       sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1)
+               /sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[0]), /* 1 */
+       asn_DEF_MultiFrequencyBandListNR_SIB_tags_1,    /* Same as above */
+       sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1)
+               /sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[0]), /* 1 */
+       { &asn_OER_type_MultiFrequencyBandListNR_SIB_constr_1, &asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MultiFrequencyBandListNR_SIB_1,
+       1,      /* Single element */
+       &asn_SPC_MultiFrequencyBandListNR_SIB_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.h b/src/codec_utils/RRC/MultiFrequencyBandListNR-SIB.h
new file mode 100644 (file)
index 0000000..1d10bcb
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MultiFrequencyBandListNR_SIB_H_
+#define        _MultiFrequencyBandListNR_SIB_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 NR_MultiBandInfo;
+
+/* MultiFrequencyBandListNR-SIB */
+typedef struct MultiFrequencyBandListNR_SIB {
+       A_SEQUENCE_OF(struct NR_MultiBandInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MultiFrequencyBandListNR_SIB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR_SIB;
+extern asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_SIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_SIB_1[1];
+extern asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MultiFrequencyBandListNR_SIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/MultiFrequencyBandListNR.c b/src/codec_utils/RRC/MultiFrequencyBandListNR.c
new file mode 100644 (file)
index 0000000..fbf0296
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "MultiFrequencyBandListNR.h"
+
+static asn_oer_constraints_t asn_OER_type_MultiFrequencyBandListNR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_MultiFrequencyBandListNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_specs_1 = {
+       sizeof(struct MultiFrequencyBandListNR),
+       offsetof(struct MultiFrequencyBandListNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR = {
+       "MultiFrequencyBandListNR",
+       "MultiFrequencyBandListNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_MultiFrequencyBandListNR_tags_1,
+       sizeof(asn_DEF_MultiFrequencyBandListNR_tags_1)
+               /sizeof(asn_DEF_MultiFrequencyBandListNR_tags_1[0]), /* 1 */
+       asn_DEF_MultiFrequencyBandListNR_tags_1,        /* Same as above */
+       sizeof(asn_DEF_MultiFrequencyBandListNR_tags_1)
+               /sizeof(asn_DEF_MultiFrequencyBandListNR_tags_1[0]), /* 1 */
+       { &asn_OER_type_MultiFrequencyBandListNR_constr_1, &asn_PER_type_MultiFrequencyBandListNR_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_MultiFrequencyBandListNR_1,
+       1,      /* Single element */
+       &asn_SPC_MultiFrequencyBandListNR_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/MultiFrequencyBandListNR.h b/src/codec_utils/RRC/MultiFrequencyBandListNR.h
new file mode 100644 (file)
index 0000000..b77cb1e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _MultiFrequencyBandListNR_H_
+#define        _MultiFrequencyBandListNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorNR.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* MultiFrequencyBandListNR */
+typedef struct MultiFrequencyBandListNR {
+       A_SEQUENCE_OF(FreqBandIndicatorNR_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} MultiFrequencyBandListNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR;
+extern asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_1[1];
+extern asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _MultiFrequencyBandListNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NAICS-Capability-Entry.c b/src/codec_utils/RRC/NAICS-Capability-Entry.c
new file mode 100644 (file)
index 0000000..9bc9daf
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NAICS-Capability-Entry.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_numberOfNAICS_CapableCC_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 <= 5)) {
+               /* 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_numberOfAggregatedPRB_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_numberOfAggregatedPRB_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_numberOfNAICS_CapableCC_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..5) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_numberOfNAICS_CapableCC_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (1..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_numberOfAggregatedPRB_value2enum_3[] = {
+       { 0,    3,      "n50" },
+       { 1,    3,      "n75" },
+       { 2,    4,      "n100" },
+       { 3,    4,      "n125" },
+       { 4,    4,      "n150" },
+       { 5,    4,      "n175" },
+       { 6,    4,      "n200" },
+       { 7,    4,      "n225" },
+       { 8,    4,      "n250" },
+       { 9,    4,      "n275" },
+       { 10,   4,      "n300" },
+       { 11,   4,      "n350" },
+       { 12,   4,      "n400" },
+       { 13,   4,      "n450" },
+       { 14,   4,      "n500" },
+       { 15,   5,      "spare" }
+};
+static const unsigned int asn_MAP_numberOfAggregatedPRB_enum2value_3[] = {
+       2,      /* n100(2) */
+       3,      /* n125(3) */
+       4,      /* n150(4) */
+       5,      /* n175(5) */
+       6,      /* n200(6) */
+       7,      /* n225(7) */
+       8,      /* n250(8) */
+       9,      /* n275(9) */
+       10,     /* n300(10) */
+       11,     /* n350(11) */
+       12,     /* n400(12) */
+       13,     /* n450(13) */
+       0,      /* n50(0) */
+       14,     /* n500(14) */
+       1,      /* n75(1) */
+       15      /* spare(15) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_numberOfAggregatedPRB_specs_3 = {
+       asn_MAP_numberOfAggregatedPRB_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_numberOfAggregatedPRB_enum2value_3,     /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_numberOfAggregatedPRB_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_numberOfAggregatedPRB_3 = {
+       "numberOfAggregatedPRB",
+       "numberOfAggregatedPRB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_numberOfAggregatedPRB_tags_3,
+       sizeof(asn_DEF_numberOfAggregatedPRB_tags_3)
+               /sizeof(asn_DEF_numberOfAggregatedPRB_tags_3[0]) - 1, /* 1 */
+       asn_DEF_numberOfAggregatedPRB_tags_3,   /* Same as above */
+       sizeof(asn_DEF_numberOfAggregatedPRB_tags_3)
+               /sizeof(asn_DEF_numberOfAggregatedPRB_tags_3[0]), /* 2 */
+       { &asn_OER_type_numberOfAggregatedPRB_constr_3, &asn_PER_type_numberOfAggregatedPRB_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_numberOfAggregatedPRB_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_NAICS_Capability_Entry_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct NAICS_Capability_Entry, numberOfNAICS_CapableCC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_numberOfNAICS_CapableCC_constr_2, &asn_PER_memb_numberOfNAICS_CapableCC_constr_2,  memb_numberOfNAICS_CapableCC_constraint_1 },
+               0, 0, /* No default value */
+               "numberOfNAICS-CapableCC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NAICS_Capability_Entry, numberOfAggregatedPRB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_numberOfAggregatedPRB_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "numberOfAggregatedPRB"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_NAICS_Capability_Entry_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NAICS_Capability_Entry_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* numberOfNAICS-CapableCC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* numberOfAggregatedPRB */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NAICS_Capability_Entry_specs_1 = {
+       sizeof(struct NAICS_Capability_Entry),
+       offsetof(struct NAICS_Capability_Entry, _asn_ctx),
+       asn_MAP_NAICS_Capability_Entry_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_NAICS_Capability_Entry = {
+       "NAICS-Capability-Entry",
+       "NAICS-Capability-Entry",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NAICS_Capability_Entry_tags_1,
+       sizeof(asn_DEF_NAICS_Capability_Entry_tags_1)
+               /sizeof(asn_DEF_NAICS_Capability_Entry_tags_1[0]), /* 1 */
+       asn_DEF_NAICS_Capability_Entry_tags_1,  /* Same as above */
+       sizeof(asn_DEF_NAICS_Capability_Entry_tags_1)
+               /sizeof(asn_DEF_NAICS_Capability_Entry_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NAICS_Capability_Entry_1,
+       2,      /* Elements count */
+       &asn_SPC_NAICS_Capability_Entry_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NAICS-Capability-Entry.h b/src/codec_utils/RRC/NAICS-Capability-Entry.h
new file mode 100644 (file)
index 0000000..a744d0b
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NAICS_Capability_Entry_H_
+#define        _NAICS_Capability_Entry_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NAICS_Capability_Entry__numberOfAggregatedPRB {
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n50       = 0,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n75       = 1,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n100      = 2,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n125      = 3,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n150      = 4,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n175      = 5,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n200      = 6,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n225      = 7,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n250      = 8,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n275      = 9,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n300      = 10,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n350      = 11,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n400      = 12,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n450      = 13,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_n500      = 14,
+       NAICS_Capability_Entry__numberOfAggregatedPRB_spare     = 15
+} e_NAICS_Capability_Entry__numberOfAggregatedPRB;
+
+/* NAICS-Capability-Entry */
+typedef struct NAICS_Capability_Entry {
+       long     numberOfNAICS_CapableCC;
+       long     numberOfAggregatedPRB;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NAICS_Capability_Entry_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_numberOfAggregatedPRB_3;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_NAICS_Capability_Entry;
+extern asn_SEQUENCE_specifics_t asn_SPC_NAICS_Capability_Entry_specs_1;
+extern asn_TYPE_member_t asn_MBR_NAICS_Capability_Entry_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NAICS_Capability_Entry_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NG-5G-S-TMSI.c b/src/codec_utils/RRC/NG-5G-S-TMSI.c
new file mode 100644 (file)
index 0000000..bd8e875
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NG-5G-S-TMSI.h"
+
+int
+NG_5G_S_TMSI_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 == 48)) {
+               /* 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_NG_5G_S_TMSI_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       48      /* (SIZE(48..48)) */};
+asn_per_constraints_t asn_PER_type_NG_5G_S_TMSI_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  48,  48 }      /* (SIZE(48..48)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NG_5G_S_TMSI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NG_5G_S_TMSI = {
+       "NG-5G-S-TMSI",
+       "NG-5G-S-TMSI",
+       &asn_OP_BIT_STRING,
+       asn_DEF_NG_5G_S_TMSI_tags_1,
+       sizeof(asn_DEF_NG_5G_S_TMSI_tags_1)
+               /sizeof(asn_DEF_NG_5G_S_TMSI_tags_1[0]), /* 1 */
+       asn_DEF_NG_5G_S_TMSI_tags_1,    /* Same as above */
+       sizeof(asn_DEF_NG_5G_S_TMSI_tags_1)
+               /sizeof(asn_DEF_NG_5G_S_TMSI_tags_1[0]), /* 1 */
+       { &asn_OER_type_NG_5G_S_TMSI_constr_1, &asn_PER_type_NG_5G_S_TMSI_constr_1, NG_5G_S_TMSI_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NG-5G-S-TMSI.h b/src/codec_utils/RRC/NG-5G-S-TMSI.h
new file mode 100644 (file)
index 0000000..b98d612
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NG_5G_S_TMSI_H_
+#define        _NG_5G_S_TMSI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NG-5G-S-TMSI */
+typedef BIT_STRING_t    NG_5G_S_TMSI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NG_5G_S_TMSI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NG_5G_S_TMSI;
+asn_struct_free_f NG_5G_S_TMSI_free;
+asn_struct_print_f NG_5G_S_TMSI_print;
+asn_constr_check_f NG_5G_S_TMSI_constraint;
+ber_type_decoder_f NG_5G_S_TMSI_decode_ber;
+der_type_encoder_f NG_5G_S_TMSI_encode_der;
+xer_type_decoder_f NG_5G_S_TMSI_decode_xer;
+xer_type_encoder_f NG_5G_S_TMSI_encode_xer;
+oer_type_decoder_f NG_5G_S_TMSI_decode_oer;
+oer_type_encoder_f NG_5G_S_TMSI_encode_oer;
+per_type_decoder_f NG_5G_S_TMSI_decode_uper;
+per_type_encoder_f NG_5G_S_TMSI_encode_uper;
+per_type_decoder_f NG_5G_S_TMSI_decode_aper;
+per_type_encoder_f NG_5G_S_TMSI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NG_5G_S_TMSI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NR-FreqInfo.c b/src/codec_utils/RRC/NR-FreqInfo.c
new file mode 100644 (file)
index 0000000..8c6066a
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-FreqInfo.h"
+
+asn_TYPE_member_t asn_MBR_NR_FreqInfo_1[] = {
+       { ATF_POINTER, 1, offsetof(struct NR_FreqInfo, measuredFrequency),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measuredFrequency"
+               },
+};
+static const int asn_MAP_NR_FreqInfo_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_NR_FreqInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_FreqInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measuredFrequency */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_FreqInfo_specs_1 = {
+       sizeof(struct NR_FreqInfo),
+       offsetof(struct NR_FreqInfo, _asn_ctx),
+       asn_MAP_NR_FreqInfo_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_NR_FreqInfo_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_FreqInfo = {
+       "NR-FreqInfo",
+       "NR-FreqInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NR_FreqInfo_tags_1,
+       sizeof(asn_DEF_NR_FreqInfo_tags_1)
+               /sizeof(asn_DEF_NR_FreqInfo_tags_1[0]), /* 1 */
+       asn_DEF_NR_FreqInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_NR_FreqInfo_tags_1)
+               /sizeof(asn_DEF_NR_FreqInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NR_FreqInfo_1,
+       1,      /* Elements count */
+       &asn_SPC_NR_FreqInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NR-FreqInfo.h b/src/codec_utils/RRC/NR-FreqInfo.h
new file mode 100644 (file)
index 0000000..213baba
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_FreqInfo_H_
+#define        _NR_FreqInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NR-FreqInfo */
+typedef struct NR_FreqInfo {
+       ARFCN_ValueNR_t *measuredFrequency;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NR_FreqInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_FreqInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_NR_FreqInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_FreqInfo_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_FreqInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NR-MultiBandInfo.c b/src/codec_utils/RRC/NR-MultiBandInfo.c
new file mode 100644 (file)
index 0000000..b675f01
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-MultiBandInfo.h"
+
+#include "NR-NS-PmaxList.h"
+asn_TYPE_member_t asn_MBR_NR_MultiBandInfo_1[] = {
+       { ATF_POINTER, 2, offsetof(struct NR_MultiBandInfo, freqBandIndicatorNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqBandIndicatorNR"
+               },
+       { ATF_POINTER, 1, offsetof(struct NR_MultiBandInfo, nr_NS_PmaxList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NR_NS_PmaxList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nr-NS-PmaxList"
+               },
+};
+static const int asn_MAP_NR_MultiBandInfo_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_NR_MultiBandInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_MultiBandInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nr-NS-PmaxList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_MultiBandInfo_specs_1 = {
+       sizeof(struct NR_MultiBandInfo),
+       offsetof(struct NR_MultiBandInfo, _asn_ctx),
+       asn_MAP_NR_MultiBandInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_NR_MultiBandInfo_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_MultiBandInfo = {
+       "NR-MultiBandInfo",
+       "NR-MultiBandInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NR_MultiBandInfo_tags_1,
+       sizeof(asn_DEF_NR_MultiBandInfo_tags_1)
+               /sizeof(asn_DEF_NR_MultiBandInfo_tags_1[0]), /* 1 */
+       asn_DEF_NR_MultiBandInfo_tags_1,        /* Same as above */
+       sizeof(asn_DEF_NR_MultiBandInfo_tags_1)
+               /sizeof(asn_DEF_NR_MultiBandInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NR_MultiBandInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_NR_MultiBandInfo_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NR-MultiBandInfo.h b/src/codec_utils/RRC/NR-MultiBandInfo.h
new file mode 100644 (file)
index 0000000..9ed92f2
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_MultiBandInfo_H_
+#define        _NR_MultiBandInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorNR.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct NR_NS_PmaxList;
+
+/* NR-MultiBandInfo */
+typedef struct NR_MultiBandInfo {
+       FreqBandIndicatorNR_t   *freqBandIndicatorNR;   /* OPTIONAL */
+       struct NR_NS_PmaxList   *nr_NS_PmaxList;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NR_MultiBandInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_MultiBandInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_NR_MultiBandInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_MultiBandInfo_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_MultiBandInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NR-NS-PmaxList.c b/src/codec_utils/RRC/NR-NS-PmaxList.c
new file mode 100644 (file)
index 0000000..1d109f7
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-NS-PmaxList.h"
+
+#include "NR-NS-PmaxValue.h"
+static asn_oer_constraints_t asn_OER_type_NR_NS_PmaxList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_NR_NS_PmaxList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_NR_NS_PmaxList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NR_NS_PmaxValue,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_NR_NS_PmaxList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_NR_NS_PmaxList_specs_1 = {
+       sizeof(struct NR_NS_PmaxList),
+       offsetof(struct NR_NS_PmaxList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxList = {
+       "NR-NS-PmaxList",
+       "NR-NS-PmaxList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_NR_NS_PmaxList_tags_1,
+       sizeof(asn_DEF_NR_NS_PmaxList_tags_1)
+               /sizeof(asn_DEF_NR_NS_PmaxList_tags_1[0]), /* 1 */
+       asn_DEF_NR_NS_PmaxList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_NR_NS_PmaxList_tags_1)
+               /sizeof(asn_DEF_NR_NS_PmaxList_tags_1[0]), /* 1 */
+       { &asn_OER_type_NR_NS_PmaxList_constr_1, &asn_PER_type_NR_NS_PmaxList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_NR_NS_PmaxList_1,
+       1,      /* Single element */
+       &asn_SPC_NR_NS_PmaxList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NR-NS-PmaxList.h b/src/codec_utils/RRC/NR-NS-PmaxList.h
new file mode 100644 (file)
index 0000000..aa9f7d8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_NS_PmaxList_H_
+#define        _NR_NS_PmaxList_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 NR_NS_PmaxValue;
+
+/* NR-NS-PmaxList */
+typedef struct NR_NS_PmaxList {
+       A_SEQUENCE_OF(struct NR_NS_PmaxValue) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NR_NS_PmaxList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxList;
+extern asn_SET_OF_specifics_t asn_SPC_NR_NS_PmaxList_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_NS_PmaxList_1[1];
+extern asn_per_constraints_t asn_PER_type_NR_NS_PmaxList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_NS_PmaxList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NR-NS-PmaxValue.c b/src/codec_utils/RRC/NR-NS-PmaxValue.c
new file mode 100644 (file)
index 0000000..317aabe
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-NS-PmaxValue.h"
+
+asn_TYPE_member_t asn_MBR_NR_NS_PmaxValue_1[] = {
+       { ATF_POINTER, 1, offsetof(struct NR_NS_PmaxValue, additionalPmax),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalPmax"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NR_NS_PmaxValue, additionalSpectrumEmission),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AdditionalSpectrumEmission,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalSpectrumEmission"
+               },
+};
+static const int asn_MAP_NR_NS_PmaxValue_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_NR_NS_PmaxValue_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NR_NS_PmaxValue_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalPmax */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* additionalSpectrumEmission */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NR_NS_PmaxValue_specs_1 = {
+       sizeof(struct NR_NS_PmaxValue),
+       offsetof(struct NR_NS_PmaxValue, _asn_ctx),
+       asn_MAP_NR_NS_PmaxValue_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_NR_NS_PmaxValue_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxValue = {
+       "NR-NS-PmaxValue",
+       "NR-NS-PmaxValue",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NR_NS_PmaxValue_tags_1,
+       sizeof(asn_DEF_NR_NS_PmaxValue_tags_1)
+               /sizeof(asn_DEF_NR_NS_PmaxValue_tags_1[0]), /* 1 */
+       asn_DEF_NR_NS_PmaxValue_tags_1, /* Same as above */
+       sizeof(asn_DEF_NR_NS_PmaxValue_tags_1)
+               /sizeof(asn_DEF_NR_NS_PmaxValue_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NR_NS_PmaxValue_1,
+       2,      /* Elements count */
+       &asn_SPC_NR_NS_PmaxValue_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NR-NS-PmaxValue.h b/src/codec_utils/RRC/NR-NS-PmaxValue.h
new file mode 100644 (file)
index 0000000..123e4e3
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_NS_PmaxValue_H_
+#define        _NR_NS_PmaxValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "P-Max.h"
+#include "AdditionalSpectrumEmission.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NR-NS-PmaxValue */
+typedef struct NR_NS_PmaxValue {
+       P_Max_t *additionalPmax;        /* OPTIONAL */
+       AdditionalSpectrumEmission_t     additionalSpectrumEmission;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NR_NS_PmaxValue_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxValue;
+extern asn_SEQUENCE_specifics_t asn_SPC_NR_NS_PmaxValue_specs_1;
+extern asn_TYPE_member_t asn_MBR_NR_NS_PmaxValue_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_NS_PmaxValue_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NR-RS-Type.c b/src/codec_utils/RRC/NR-RS-Type.c
new file mode 100644 (file)
index 0000000..48af8b6
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NR-RS-Type.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_NR_RS_Type_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_NR_RS_Type_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_NR_RS_Type_value2enum_1[] = {
+       { 0,    3,      "ssb" },
+       { 1,    6,      "csi-rs" }
+};
+static const unsigned int asn_MAP_NR_RS_Type_enum2value_1[] = {
+       1,      /* csi-rs(1) */
+       0       /* ssb(0) */
+};
+const asn_INTEGER_specifics_t asn_SPC_NR_RS_Type_specs_1 = {
+       asn_MAP_NR_RS_Type_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_NR_RS_Type_enum2value_1,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_NR_RS_Type_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NR_RS_Type = {
+       "NR-RS-Type",
+       "NR-RS-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_NR_RS_Type_tags_1,
+       sizeof(asn_DEF_NR_RS_Type_tags_1)
+               /sizeof(asn_DEF_NR_RS_Type_tags_1[0]), /* 1 */
+       asn_DEF_NR_RS_Type_tags_1,      /* Same as above */
+       sizeof(asn_DEF_NR_RS_Type_tags_1)
+               /sizeof(asn_DEF_NR_RS_Type_tags_1[0]), /* 1 */
+       { &asn_OER_type_NR_RS_Type_constr_1, &asn_PER_type_NR_RS_Type_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_NR_RS_Type_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NR-RS-Type.h b/src/codec_utils/RRC/NR-RS-Type.h
new file mode 100644 (file)
index 0000000..5e05f5e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NR_RS_Type_H_
+#define        _NR_RS_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NR_RS_Type {
+       NR_RS_Type_ssb  = 0,
+       NR_RS_Type_csi_rs       = 1
+} e_NR_RS_Type;
+
+/* NR-RS-Type */
+typedef long    NR_RS_Type_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NR_RS_Type_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NR_RS_Type;
+extern const asn_INTEGER_specifics_t asn_SPC_NR_RS_Type_specs_1;
+asn_struct_free_f NR_RS_Type_free;
+asn_struct_print_f NR_RS_Type_print;
+asn_constr_check_f NR_RS_Type_constraint;
+ber_type_decoder_f NR_RS_Type_decode_ber;
+der_type_encoder_f NR_RS_Type_encode_der;
+xer_type_decoder_f NR_RS_Type_decode_xer;
+xer_type_encoder_f NR_RS_Type_encode_xer;
+oer_type_decoder_f NR_RS_Type_decode_oer;
+oer_type_encoder_f NR_RS_Type_encode_oer;
+per_type_decoder_f NR_RS_Type_decode_uper;
+per_type_encoder_f NR_RS_Type_encode_uper;
+per_type_decoder_f NR_RS_Type_decode_aper;
+per_type_encoder_f NR_RS_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NR_RS_Type_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-Resource.c b/src/codec_utils/RRC/NZP-CSI-RS-Resource.c
new file mode 100644 (file)
index 0000000..4111c21
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NZP-CSI-RS-Resource.h"
+
+#include "CSI-ResourcePeriodicityAndOffset.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_powerControlOffset_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 >= -8 && 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 asn_oer_constraints_t asn_OER_type_powerControlOffsetSS_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_powerControlOffsetSS_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_powerControlOffset_constr_4 CC_NOTUSED = {
+       { 1, 0 }        /* (-8..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_powerControlOffset_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -8,  15 }       /* (-8..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_powerControlOffsetSS_value2enum_5[] = {
+       { 0,    4,      "db-3" },
+       { 1,    3,      "db0" },
+       { 2,    3,      "db3" },
+       { 3,    3,      "db6" }
+};
+static const unsigned int asn_MAP_powerControlOffsetSS_enum2value_5[] = {
+       0,      /* db-3(0) */
+       1,      /* db0(1) */
+       2,      /* db3(2) */
+       3       /* db6(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_powerControlOffsetSS_specs_5 = {
+       asn_MAP_powerControlOffsetSS_value2enum_5,      /* "tag" => N; sorted by tag */
+       asn_MAP_powerControlOffsetSS_enum2value_5,      /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_powerControlOffsetSS_tags_5[] = {
+       (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_powerControlOffsetSS_5 = {
+       "powerControlOffsetSS",
+       "powerControlOffsetSS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_powerControlOffsetSS_tags_5,
+       sizeof(asn_DEF_powerControlOffsetSS_tags_5)
+               /sizeof(asn_DEF_powerControlOffsetSS_tags_5[0]) - 1, /* 1 */
+       asn_DEF_powerControlOffsetSS_tags_5,    /* Same as above */
+       sizeof(asn_DEF_powerControlOffsetSS_tags_5)
+               /sizeof(asn_DEF_powerControlOffsetSS_tags_5[0]), /* 2 */
+       { &asn_OER_type_powerControlOffsetSS_constr_5, &asn_PER_type_powerControlOffsetSS_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_powerControlOffsetSS_specs_5   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_NZP_CSI_RS_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_Resource, nzp_CSI_RS_ResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-ResourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_Resource, resourceMapping),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_ResourceMapping,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceMapping"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_Resource, powerControlOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_powerControlOffset_constr_4, &asn_PER_memb_powerControlOffset_constr_4,  memb_powerControlOffset_constraint_1 },
+               0, 0, /* No default value */
+               "powerControlOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct NZP_CSI_RS_Resource, powerControlOffsetSS),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_powerControlOffsetSS_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerControlOffsetSS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_Resource, scramblingID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ScramblingId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scramblingID"
+               },
+       { ATF_POINTER, 2, offsetof(struct NZP_CSI_RS_Resource, periodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CSI_ResourcePeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct NZP_CSI_RS_Resource, qcl_InfoPeriodicCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qcl-InfoPeriodicCSI-RS"
+               },
+};
+static const int asn_MAP_NZP_CSI_RS_Resource_oms_1[] = { 3, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_NZP_CSI_RS_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NZP_CSI_RS_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-RS-ResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resourceMapping */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* powerControlOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* powerControlOffsetSS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* scramblingID */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* periodicityAndOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* qcl-InfoPeriodicCSI-RS */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NZP_CSI_RS_Resource_specs_1 = {
+       sizeof(struct NZP_CSI_RS_Resource),
+       offsetof(struct NZP_CSI_RS_Resource, _asn_ctx),
+       asn_MAP_NZP_CSI_RS_Resource_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_NZP_CSI_RS_Resource_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_Resource = {
+       "NZP-CSI-RS-Resource",
+       "NZP-CSI-RS-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NZP_CSI_RS_Resource_tags_1,
+       sizeof(asn_DEF_NZP_CSI_RS_Resource_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_Resource_tags_1[0]), /* 1 */
+       asn_DEF_NZP_CSI_RS_Resource_tags_1,     /* Same as above */
+       sizeof(asn_DEF_NZP_CSI_RS_Resource_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NZP_CSI_RS_Resource_1,
+       7,      /* Elements count */
+       &asn_SPC_NZP_CSI_RS_Resource_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-Resource.h b/src/codec_utils/RRC/NZP-CSI-RS-Resource.h
new file mode 100644 (file)
index 0000000..79ebf55
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NZP_CSI_RS_Resource_H_
+#define        _NZP_CSI_RS_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NZP-CSI-RS-ResourceId.h"
+#include "CSI-RS-ResourceMapping.h"
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include "ScramblingId.h"
+#include "TCI-StateId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NZP_CSI_RS_Resource__powerControlOffsetSS {
+       NZP_CSI_RS_Resource__powerControlOffsetSS_db_3  = 0,
+       NZP_CSI_RS_Resource__powerControlOffsetSS_db0   = 1,
+       NZP_CSI_RS_Resource__powerControlOffsetSS_db3   = 2,
+       NZP_CSI_RS_Resource__powerControlOffsetSS_db6   = 3
+} e_NZP_CSI_RS_Resource__powerControlOffsetSS;
+
+/* Forward declarations */
+struct CSI_ResourcePeriodicityAndOffset;
+
+/* NZP-CSI-RS-Resource */
+typedef struct NZP_CSI_RS_Resource {
+       NZP_CSI_RS_ResourceId_t  nzp_CSI_RS_ResourceId;
+       CSI_RS_ResourceMapping_t         resourceMapping;
+       long     powerControlOffset;
+       long    *powerControlOffsetSS;  /* OPTIONAL */
+       ScramblingId_t   scramblingID;
+       struct CSI_ResourcePeriodicityAndOffset *periodicityAndOffset;  /* OPTIONAL */
+       TCI_StateId_t   *qcl_InfoPeriodicCSI_RS;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NZP_CSI_RS_Resource_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_powerControlOffsetSS_5;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_NZP_CSI_RS_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_NZP_CSI_RS_Resource_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NZP_CSI_RS_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceId.c b/src/codec_utils/RRC/NZP-CSI-RS-ResourceId.c
new file mode 100644 (file)
index 0000000..488238a
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NZP-CSI-RS-ResourceId.h"
+
+int
+NZP_CSI_RS_ResourceId_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 <= 191)) {
+               /* 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_NZP_CSI_RS_ResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..191) */,
+       -1};
+asn_per_constraints_t asn_PER_type_NZP_CSI_RS_ResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  191 }      /* (0..191) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NZP_CSI_RS_ResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceId = {
+       "NZP-CSI-RS-ResourceId",
+       "NZP-CSI-RS-ResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_NZP_CSI_RS_ResourceId_tags_1,
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceId_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceId_tags_1[0]), /* 1 */
+       asn_DEF_NZP_CSI_RS_ResourceId_tags_1,   /* Same as above */
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceId_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_NZP_CSI_RS_ResourceId_constr_1, &asn_PER_type_NZP_CSI_RS_ResourceId_constr_1, NZP_CSI_RS_ResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceId.h b/src/codec_utils/RRC/NZP-CSI-RS-ResourceId.h
new file mode 100644 (file)
index 0000000..47d5458
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NZP_CSI_RS_ResourceId_H_
+#define        _NZP_CSI_RS_ResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NZP-CSI-RS-ResourceId */
+typedef long    NZP_CSI_RS_ResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NZP_CSI_RS_ResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceId;
+asn_struct_free_f NZP_CSI_RS_ResourceId_free;
+asn_struct_print_f NZP_CSI_RS_ResourceId_print;
+asn_constr_check_f NZP_CSI_RS_ResourceId_constraint;
+ber_type_decoder_f NZP_CSI_RS_ResourceId_decode_ber;
+der_type_encoder_f NZP_CSI_RS_ResourceId_encode_der;
+xer_type_decoder_f NZP_CSI_RS_ResourceId_decode_xer;
+xer_type_encoder_f NZP_CSI_RS_ResourceId_encode_xer;
+oer_type_decoder_f NZP_CSI_RS_ResourceId_decode_oer;
+oer_type_encoder_f NZP_CSI_RS_ResourceId_encode_oer;
+per_type_decoder_f NZP_CSI_RS_ResourceId_decode_uper;
+per_type_encoder_f NZP_CSI_RS_ResourceId_encode_uper;
+per_type_decoder_f NZP_CSI_RS_ResourceId_decode_aper;
+per_type_encoder_f NZP_CSI_RS_ResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NZP_CSI_RS_ResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.c b/src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.c
new file mode 100644 (file)
index 0000000..d9827df
--- /dev/null
@@ -0,0 +1,300 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NZP-CSI-RS-ResourceSet.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.
+ */
+static int
+memb_nzp_CSI_RS_Resources_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 <= 64)) {
+               /* 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_aperiodicTriggeringOffset_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 >= 0 && value <= 6)) {
+               /* 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_nzp_CSI_RS_Resources_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_Resources_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_repetition_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_repetition_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_trs_Info_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_trs_Info_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nzp_CSI_RS_Resources_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_nzp_CSI_RS_Resources_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aperiodicTriggeringOffset_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_aperiodicTriggeringOffset_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_nzp_CSI_RS_Resources_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_Resources_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_nzp_CSI_RS_Resources_specs_3 = {
+       sizeof(struct NZP_CSI_RS_ResourceSet__nzp_CSI_RS_Resources),
+       offsetof(struct NZP_CSI_RS_ResourceSet__nzp_CSI_RS_Resources, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_Resources_3 = {
+       "nzp-CSI-RS-Resources",
+       "nzp-CSI-RS-Resources",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_nzp_CSI_RS_Resources_tags_3,
+       sizeof(asn_DEF_nzp_CSI_RS_Resources_tags_3)
+               /sizeof(asn_DEF_nzp_CSI_RS_Resources_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_Resources_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_Resources_tags_3)
+               /sizeof(asn_DEF_nzp_CSI_RS_Resources_tags_3[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_Resources_constr_3, &asn_PER_type_nzp_CSI_RS_Resources_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_nzp_CSI_RS_Resources_3,
+       1,      /* Single element */
+       &asn_SPC_nzp_CSI_RS_Resources_specs_3   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_repetition_value2enum_5[] = {
+       { 0,    2,      "on" },
+       { 1,    3,      "off" }
+};
+static const unsigned int asn_MAP_repetition_enum2value_5[] = {
+       1,      /* off(1) */
+       0       /* on(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_repetition_specs_5 = {
+       asn_MAP_repetition_value2enum_5,        /* "tag" => N; sorted by tag */
+       asn_MAP_repetition_enum2value_5,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_repetition_tags_5[] = {
+       (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_repetition_5 = {
+       "repetition",
+       "repetition",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_repetition_tags_5,
+       sizeof(asn_DEF_repetition_tags_5)
+               /sizeof(asn_DEF_repetition_tags_5[0]) - 1, /* 1 */
+       asn_DEF_repetition_tags_5,      /* Same as above */
+       sizeof(asn_DEF_repetition_tags_5)
+               /sizeof(asn_DEF_repetition_tags_5[0]), /* 2 */
+       { &asn_OER_type_repetition_constr_5, &asn_PER_type_repetition_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_repetition_specs_5     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_trs_Info_value2enum_9[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_trs_Info_enum2value_9[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_trs_Info_specs_9 = {
+       asn_MAP_trs_Info_value2enum_9,  /* "tag" => N; sorted by tag */
+       asn_MAP_trs_Info_enum2value_9,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_trs_Info_tags_9[] = {
+       (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_trs_Info_9 = {
+       "trs-Info",
+       "trs-Info",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_trs_Info_tags_9,
+       sizeof(asn_DEF_trs_Info_tags_9)
+               /sizeof(asn_DEF_trs_Info_tags_9[0]) - 1, /* 1 */
+       asn_DEF_trs_Info_tags_9,        /* Same as above */
+       sizeof(asn_DEF_trs_Info_tags_9)
+               /sizeof(asn_DEF_trs_Info_tags_9[0]), /* 2 */
+       { &asn_OER_type_trs_Info_constr_9, &asn_PER_type_trs_Info_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_trs_Info_specs_9       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_NZP_CSI_RS_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_ResourceSet, nzp_CSI_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-ResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct NZP_CSI_RS_ResourceSet, nzp_CSI_RS_Resources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nzp_CSI_RS_Resources_3,
+               0,
+               { &asn_OER_memb_nzp_CSI_RS_Resources_constr_3, &asn_PER_memb_nzp_CSI_RS_Resources_constr_3,  memb_nzp_CSI_RS_Resources_constraint_1 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-Resources"
+               },
+       { ATF_POINTER, 3, offsetof(struct NZP_CSI_RS_ResourceSet, repetition),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_repetition_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "repetition"
+               },
+       { ATF_POINTER, 2, offsetof(struct NZP_CSI_RS_ResourceSet, aperiodicTriggeringOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_aperiodicTriggeringOffset_constr_8, &asn_PER_memb_aperiodicTriggeringOffset_constr_8,  memb_aperiodicTriggeringOffset_constraint_1 },
+               0, 0, /* No default value */
+               "aperiodicTriggeringOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct NZP_CSI_RS_ResourceSet, trs_Info),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_trs_Info_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "trs-Info"
+               },
+};
+static const int asn_MAP_NZP_CSI_RS_ResourceSet_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_NZP_CSI_RS_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_NZP_CSI_RS_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nzp-CSI-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nzp-CSI-RS-Resources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* repetition */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* aperiodicTriggeringOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* trs-Info */
+};
+asn_SEQUENCE_specifics_t asn_SPC_NZP_CSI_RS_ResourceSet_specs_1 = {
+       sizeof(struct NZP_CSI_RS_ResourceSet),
+       offsetof(struct NZP_CSI_RS_ResourceSet, _asn_ctx),
+       asn_MAP_NZP_CSI_RS_ResourceSet_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_NZP_CSI_RS_ResourceSet_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceSet = {
+       "NZP-CSI-RS-ResourceSet",
+       "NZP-CSI-RS-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_NZP_CSI_RS_ResourceSet_tags_1,
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_NZP_CSI_RS_ResourceSet_tags_1,  /* Same as above */
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_NZP_CSI_RS_ResourceSet_1,
+       5,      /* Elements count */
+       &asn_SPC_NZP_CSI_RS_ResourceSet_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.h b/src/codec_utils/RRC/NZP-CSI-RS-ResourceSet.h
new file mode 100644 (file)
index 0000000..8449a5d
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NZP_CSI_RS_ResourceSet_H_
+#define        _NZP_CSI_RS_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NZP-CSI-RS-ResourceSetId.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include "NZP-CSI-RS-ResourceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum NZP_CSI_RS_ResourceSet__repetition {
+       NZP_CSI_RS_ResourceSet__repetition_on   = 0,
+       NZP_CSI_RS_ResourceSet__repetition_off  = 1
+} e_NZP_CSI_RS_ResourceSet__repetition;
+typedef enum NZP_CSI_RS_ResourceSet__trs_Info {
+       NZP_CSI_RS_ResourceSet__trs_Info_true   = 0
+} e_NZP_CSI_RS_ResourceSet__trs_Info;
+
+/* NZP-CSI-RS-ResourceSet */
+typedef struct NZP_CSI_RS_ResourceSet {
+       NZP_CSI_RS_ResourceSetId_t       nzp_CSI_ResourceSetId;
+       struct NZP_CSI_RS_ResourceSet__nzp_CSI_RS_Resources {
+               A_SEQUENCE_OF(NZP_CSI_RS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } nzp_CSI_RS_Resources;
+       long    *repetition;    /* OPTIONAL */
+       long    *aperiodicTriggeringOffset;     /* OPTIONAL */
+       long    *trs_Info;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} NZP_CSI_RS_ResourceSet_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_repetition_5;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_trs_Info_9;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_NZP_CSI_RS_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_NZP_CSI_RS_ResourceSet_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NZP_CSI_RS_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.c b/src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.c
new file mode 100644 (file)
index 0000000..5a1ec04
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NZP-CSI-RS-ResourceSetId.h"
+
+int
+NZP_CSI_RS_ResourceSetId_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_NZP_CSI_RS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_NZP_CSI_RS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_NZP_CSI_RS_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceSetId = {
+       "NZP-CSI-RS-ResourceSetId",
+       "NZP-CSI-RS-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1,
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1,        /* Same as above */
+       sizeof(asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_NZP_CSI_RS_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_NZP_CSI_RS_ResourceSetId_constr_1, &asn_PER_type_NZP_CSI_RS_ResourceSetId_constr_1, NZP_CSI_RS_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.h b/src/codec_utils/RRC/NZP-CSI-RS-ResourceSetId.h
new file mode 100644 (file)
index 0000000..3e79dd7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NZP_CSI_RS_ResourceSetId_H_
+#define        _NZP_CSI_RS_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NZP-CSI-RS-ResourceSetId */
+typedef long    NZP_CSI_RS_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NZP_CSI_RS_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NZP_CSI_RS_ResourceSetId;
+asn_struct_free_f NZP_CSI_RS_ResourceSetId_free;
+asn_struct_print_f NZP_CSI_RS_ResourceSetId_print;
+asn_constr_check_f NZP_CSI_RS_ResourceSetId_constraint;
+ber_type_decoder_f NZP_CSI_RS_ResourceSetId_decode_ber;
+der_type_encoder_f NZP_CSI_RS_ResourceSetId_encode_der;
+xer_type_decoder_f NZP_CSI_RS_ResourceSetId_decode_xer;
+xer_type_encoder_f NZP_CSI_RS_ResourceSetId_encode_xer;
+oer_type_decoder_f NZP_CSI_RS_ResourceSetId_decode_oer;
+oer_type_encoder_f NZP_CSI_RS_ResourceSetId_encode_oer;
+per_type_decoder_f NZP_CSI_RS_ResourceSetId_decode_uper;
+per_type_encoder_f NZP_CSI_RS_ResourceSetId_encode_uper;
+per_type_decoder_f NZP_CSI_RS_ResourceSetId_decode_aper;
+per_type_encoder_f NZP_CSI_RS_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NZP_CSI_RS_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/NextHopChainingCount.c b/src/codec_utils/RRC/NextHopChainingCount.c
new file mode 100644 (file)
index 0000000..184cbff
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "NextHopChainingCount.h"
+
+int
+NextHopChainingCount_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 <= 7)) {
+               /* 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_NextHopChainingCount_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_NextHopChainingCount_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount = {
+       "NextHopChainingCount",
+       "NextHopChainingCount",
+       &asn_OP_NativeInteger,
+       asn_DEF_NextHopChainingCount_tags_1,
+       sizeof(asn_DEF_NextHopChainingCount_tags_1)
+               /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */
+       asn_DEF_NextHopChainingCount_tags_1,    /* Same as above */
+       sizeof(asn_DEF_NextHopChainingCount_tags_1)
+               /sizeof(asn_DEF_NextHopChainingCount_tags_1[0]), /* 1 */
+       { &asn_OER_type_NextHopChainingCount_constr_1, &asn_PER_type_NextHopChainingCount_constr_1, NextHopChainingCount_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/NextHopChainingCount.h b/src/codec_utils/RRC/NextHopChainingCount.h
new file mode 100644 (file)
index 0000000..2846b64
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _NextHopChainingCount_H_
+#define        _NextHopChainingCount_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* NextHopChainingCount */
+typedef long    NextHopChainingCount_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_NextHopChainingCount_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_NextHopChainingCount;
+asn_struct_free_f NextHopChainingCount_free;
+asn_struct_print_f NextHopChainingCount_print;
+asn_constr_check_f NextHopChainingCount_constraint;
+ber_type_decoder_f NextHopChainingCount_decode_ber;
+der_type_encoder_f NextHopChainingCount_encode_der;
+xer_type_decoder_f NextHopChainingCount_decode_xer;
+xer_type_encoder_f NextHopChainingCount_encode_xer;
+oer_type_decoder_f NextHopChainingCount_decode_oer;
+oer_type_encoder_f NextHopChainingCount_encode_oer;
+per_type_decoder_f NextHopChainingCount_decode_uper;
+per_type_encoder_f NextHopChainingCount_encode_uper;
+per_type_decoder_f NextHopChainingCount_decode_aper;
+per_type_encoder_f NextHopChainingCount_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _NextHopChainingCount_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/OtherConfig.c b/src/codec_utils/RRC/OtherConfig.c
new file mode 100644 (file)
index 0000000..c0ab8bf
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "OtherConfig.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_delayBudgetReportingProhibitTimer_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_delayBudgetReportingProhibitTimer_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_delayBudgetReportingConfig_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_delayBudgetReportingConfig_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_delayBudgetReportingProhibitTimer_value2enum_5[] = {
+       { 0,    2,      "s0" },
+       { 1,    6,      "s0dot4" },
+       { 2,    6,      "s0dot8" },
+       { 3,    6,      "s1dot6" },
+       { 4,    2,      "s3" },
+       { 5,    2,      "s6" },
+       { 6,    3,      "s12" },
+       { 7,    3,      "s30" }
+};
+static const unsigned int asn_MAP_delayBudgetReportingProhibitTimer_enum2value_5[] = {
+       0,      /* s0(0) */
+       1,      /* s0dot4(1) */
+       2,      /* s0dot8(2) */
+       6,      /* s12(6) */
+       3,      /* s1dot6(3) */
+       4,      /* s3(4) */
+       7,      /* s30(7) */
+       5       /* s6(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_delayBudgetReportingProhibitTimer_specs_5 = {
+       asn_MAP_delayBudgetReportingProhibitTimer_value2enum_5, /* "tag" => N; sorted by tag */
+       asn_MAP_delayBudgetReportingProhibitTimer_enum2value_5, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_delayBudgetReportingProhibitTimer_tags_5[] = {
+       (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_delayBudgetReportingProhibitTimer_5 = {
+       "delayBudgetReportingProhibitTimer",
+       "delayBudgetReportingProhibitTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_delayBudgetReportingProhibitTimer_tags_5,
+       sizeof(asn_DEF_delayBudgetReportingProhibitTimer_tags_5)
+               /sizeof(asn_DEF_delayBudgetReportingProhibitTimer_tags_5[0]) - 1, /* 1 */
+       asn_DEF_delayBudgetReportingProhibitTimer_tags_5,       /* Same as above */
+       sizeof(asn_DEF_delayBudgetReportingProhibitTimer_tags_5)
+               /sizeof(asn_DEF_delayBudgetReportingProhibitTimer_tags_5[0]), /* 2 */
+       { &asn_OER_type_delayBudgetReportingProhibitTimer_constr_5, &asn_PER_type_delayBudgetReportingProhibitTimer_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_delayBudgetReportingProhibitTimer_specs_5      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_setup_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OtherConfig__delayBudgetReportingConfig__setup, delayBudgetReportingProhibitTimer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_delayBudgetReportingProhibitTimer_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "delayBudgetReportingProhibitTimer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_setup_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_setup_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* delayBudgetReportingProhibitTimer */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_setup_specs_4 = {
+       sizeof(struct OtherConfig__delayBudgetReportingConfig__setup),
+       offsetof(struct OtherConfig__delayBudgetReportingConfig__setup, _asn_ctx),
+       asn_MAP_setup_tag2el_4,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_setup_4 = {
+       "setup",
+       "setup",
+       &asn_OP_SEQUENCE,
+       asn_DEF_setup_tags_4,
+       sizeof(asn_DEF_setup_tags_4)
+               /sizeof(asn_DEF_setup_tags_4[0]) - 1, /* 1 */
+       asn_DEF_setup_tags_4,   /* Same as above */
+       sizeof(asn_DEF_setup_tags_4)
+               /sizeof(asn_DEF_setup_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_setup_4,
+       1,      /* Elements count */
+       &asn_SPC_setup_specs_4  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_delayBudgetReportingConfig_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OtherConfig__delayBudgetReportingConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct OtherConfig__delayBudgetReportingConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_setup_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_delayBudgetReportingConfig_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_delayBudgetReportingConfig_specs_2 = {
+       sizeof(struct OtherConfig__delayBudgetReportingConfig),
+       offsetof(struct OtherConfig__delayBudgetReportingConfig, _asn_ctx),
+       offsetof(struct OtherConfig__delayBudgetReportingConfig, present),
+       sizeof(((struct OtherConfig__delayBudgetReportingConfig *)0)->present),
+       asn_MAP_delayBudgetReportingConfig_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_delayBudgetReportingConfig_2 = {
+       "delayBudgetReportingConfig",
+       "delayBudgetReportingConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_delayBudgetReportingConfig_constr_2, &asn_PER_type_delayBudgetReportingConfig_constr_2, CHOICE_constraint },
+       asn_MBR_delayBudgetReportingConfig_2,
+       2,      /* Elements count */
+       &asn_SPC_delayBudgetReportingConfig_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_OtherConfig_1[] = {
+       { ATF_POINTER, 1, offsetof(struct OtherConfig, delayBudgetReportingConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_delayBudgetReportingConfig_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "delayBudgetReportingConfig"
+               },
+};
+static const int asn_MAP_OtherConfig_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_OtherConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_OtherConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* delayBudgetReportingConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_OtherConfig_specs_1 = {
+       sizeof(struct OtherConfig),
+       offsetof(struct OtherConfig, _asn_ctx),
+       asn_MAP_OtherConfig_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_OtherConfig_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_OtherConfig = {
+       "OtherConfig",
+       "OtherConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_OtherConfig_tags_1,
+       sizeof(asn_DEF_OtherConfig_tags_1)
+               /sizeof(asn_DEF_OtherConfig_tags_1[0]), /* 1 */
+       asn_DEF_OtherConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_OtherConfig_tags_1)
+               /sizeof(asn_DEF_OtherConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_OtherConfig_1,
+       1,      /* Elements count */
+       &asn_SPC_OtherConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/OtherConfig.h b/src/codec_utils/RRC/OtherConfig.h
new file mode 100644 (file)
index 0000000..58813c5
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _OtherConfig_H_
+#define        _OtherConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum OtherConfig__delayBudgetReportingConfig_PR {
+       OtherConfig__delayBudgetReportingConfig_PR_NOTHING,     /* No components present */
+       OtherConfig__delayBudgetReportingConfig_PR_release,
+       OtherConfig__delayBudgetReportingConfig_PR_setup
+} OtherConfig__delayBudgetReportingConfig_PR;
+typedef enum OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer {
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s0    = 0,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s0dot4        = 1,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s0dot8        = 2,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s1dot6        = 3,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s3    = 4,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s6    = 5,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s12   = 6,
+       OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer_s30   = 7
+} e_OtherConfig__delayBudgetReportingConfig__setup__delayBudgetReportingProhibitTimer;
+
+/* OtherConfig */
+typedef struct OtherConfig {
+       struct OtherConfig__delayBudgetReportingConfig {
+               OtherConfig__delayBudgetReportingConfig_PR present;
+               union OtherConfig__delayBudgetReportingConfig_u {
+                       NULL_t   release;
+                       struct OtherConfig__delayBudgetReportingConfig__setup {
+                               long     delayBudgetReportingProhibitTimer;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *delayBudgetReportingConfig;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} OtherConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_delayBudgetReportingProhibitTimer_5;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_OtherConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_OtherConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_OtherConfig_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OtherConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/OverheatingAssistance.c b/src/codec_utils/RRC/OverheatingAssistance.c
new file mode 100644 (file)
index 0000000..911fcc3
--- /dev/null
@@ -0,0 +1,423 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "OverheatingAssistance.h"
+
+static int
+memb_reducedCCsDL_constraint_2(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 <= 31)) {
+               /* 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_reducedCCsUL_constraint_2(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 <= 31)) {
+               /* 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_reducedCCsDL_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_reducedCCsDL_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_reducedCCsUL_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_reducedCCsUL_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_reducedMaxCCs_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxCCs, reducedCCsDL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_reducedCCsDL_constr_3, &asn_PER_memb_reducedCCsDL_constr_3,  memb_reducedCCsDL_constraint_2 },
+               0, 0, /* No default value */
+               "reducedCCsDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxCCs, reducedCCsUL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_reducedCCsUL_constr_4, &asn_PER_memb_reducedCCsUL_constr_4,  memb_reducedCCsUL_constraint_2 },
+               0, 0, /* No default value */
+               "reducedCCsUL"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reducedMaxCCs_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reducedMaxCCs_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedCCsDL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reducedCCsUL */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reducedMaxCCs_specs_2 = {
+       sizeof(struct OverheatingAssistance__reducedMaxCCs),
+       offsetof(struct OverheatingAssistance__reducedMaxCCs, _asn_ctx),
+       asn_MAP_reducedMaxCCs_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reducedMaxCCs_2 = {
+       "reducedMaxCCs",
+       "reducedMaxCCs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reducedMaxCCs_tags_2,
+       sizeof(asn_DEF_reducedMaxCCs_tags_2)
+               /sizeof(asn_DEF_reducedMaxCCs_tags_2[0]) - 1, /* 1 */
+       asn_DEF_reducedMaxCCs_tags_2,   /* Same as above */
+       sizeof(asn_DEF_reducedMaxCCs_tags_2)
+               /sizeof(asn_DEF_reducedMaxCCs_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reducedMaxCCs_2,
+       2,      /* Elements count */
+       &asn_SPC_reducedMaxCCs_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reducedMaxBW_FR1_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxBW_FR1, reducedBW_FR1_DL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReducedAggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedBW-FR1-DL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxBW_FR1, reducedBW_FR1_UL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReducedAggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedBW-FR1-UL"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reducedMaxBW_FR1_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reducedMaxBW_FR1_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedBW-FR1-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reducedBW-FR1-UL */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reducedMaxBW_FR1_specs_5 = {
+       sizeof(struct OverheatingAssistance__reducedMaxBW_FR1),
+       offsetof(struct OverheatingAssistance__reducedMaxBW_FR1, _asn_ctx),
+       asn_MAP_reducedMaxBW_FR1_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reducedMaxBW_FR1_5 = {
+       "reducedMaxBW-FR1",
+       "reducedMaxBW-FR1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reducedMaxBW_FR1_tags_5,
+       sizeof(asn_DEF_reducedMaxBW_FR1_tags_5)
+               /sizeof(asn_DEF_reducedMaxBW_FR1_tags_5[0]) - 1, /* 1 */
+       asn_DEF_reducedMaxBW_FR1_tags_5,        /* Same as above */
+       sizeof(asn_DEF_reducedMaxBW_FR1_tags_5)
+               /sizeof(asn_DEF_reducedMaxBW_FR1_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reducedMaxBW_FR1_5,
+       2,      /* Elements count */
+       &asn_SPC_reducedMaxBW_FR1_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reducedMaxBW_FR2_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxBW_FR2, reducedBW_FR2_DL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReducedAggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedBW-FR2-DL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxBW_FR2, reducedBW_FR2_UL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReducedAggregatedBandwidth,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedBW-FR2-UL"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reducedMaxBW_FR2_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reducedMaxBW_FR2_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedBW-FR2-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reducedBW-FR2-UL */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reducedMaxBW_FR2_specs_8 = {
+       sizeof(struct OverheatingAssistance__reducedMaxBW_FR2),
+       offsetof(struct OverheatingAssistance__reducedMaxBW_FR2, _asn_ctx),
+       asn_MAP_reducedMaxBW_FR2_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reducedMaxBW_FR2_8 = {
+       "reducedMaxBW-FR2",
+       "reducedMaxBW-FR2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reducedMaxBW_FR2_tags_8,
+       sizeof(asn_DEF_reducedMaxBW_FR2_tags_8)
+               /sizeof(asn_DEF_reducedMaxBW_FR2_tags_8[0]) - 1, /* 1 */
+       asn_DEF_reducedMaxBW_FR2_tags_8,        /* Same as above */
+       sizeof(asn_DEF_reducedMaxBW_FR2_tags_8)
+               /sizeof(asn_DEF_reducedMaxBW_FR2_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reducedMaxBW_FR2_8,
+       2,      /* Elements count */
+       &asn_SPC_reducedMaxBW_FR2_specs_8       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reducedMaxMIMO_LayersFR1_11[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR1, reducedMIMO_LayersFR1_DL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMIMO-LayersFR1-DL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR1, reducedMIMO_LayersFR1_UL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMIMO-LayersFR1-UL"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reducedMaxMIMO_LayersFR1_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reducedMaxMIMO_LayersFR1_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedMIMO-LayersFR1-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reducedMIMO-LayersFR1-UL */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reducedMaxMIMO_LayersFR1_specs_11 = {
+       sizeof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR1),
+       offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR1, _asn_ctx),
+       asn_MAP_reducedMaxMIMO_LayersFR1_tag2el_11,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reducedMaxMIMO_LayersFR1_11 = {
+       "reducedMaxMIMO-LayersFR1",
+       "reducedMaxMIMO-LayersFR1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reducedMaxMIMO_LayersFR1_tags_11,
+       sizeof(asn_DEF_reducedMaxMIMO_LayersFR1_tags_11)
+               /sizeof(asn_DEF_reducedMaxMIMO_LayersFR1_tags_11[0]) - 1, /* 1 */
+       asn_DEF_reducedMaxMIMO_LayersFR1_tags_11,       /* Same as above */
+       sizeof(asn_DEF_reducedMaxMIMO_LayersFR1_tags_11)
+               /sizeof(asn_DEF_reducedMaxMIMO_LayersFR1_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reducedMaxMIMO_LayersFR1_11,
+       2,      /* Elements count */
+       &asn_SPC_reducedMaxMIMO_LayersFR1_specs_11      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_reducedMaxMIMO_LayersFR2_14[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR2, reducedMIMO_LayersFR2_DL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersDL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMIMO-LayersFR2-DL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR2, reducedMIMO_LayersFR2_UL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MIMO_LayersUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMIMO-LayersFR2-UL"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_reducedMaxMIMO_LayersFR2_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_reducedMaxMIMO_LayersFR2_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedMIMO-LayersFR2-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reducedMIMO-LayersFR2-UL */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_reducedMaxMIMO_LayersFR2_specs_14 = {
+       sizeof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR2),
+       offsetof(struct OverheatingAssistance__reducedMaxMIMO_LayersFR2, _asn_ctx),
+       asn_MAP_reducedMaxMIMO_LayersFR2_tag2el_14,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reducedMaxMIMO_LayersFR2_14 = {
+       "reducedMaxMIMO-LayersFR2",
+       "reducedMaxMIMO-LayersFR2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_reducedMaxMIMO_LayersFR2_tags_14,
+       sizeof(asn_DEF_reducedMaxMIMO_LayersFR2_tags_14)
+               /sizeof(asn_DEF_reducedMaxMIMO_LayersFR2_tags_14[0]) - 1, /* 1 */
+       asn_DEF_reducedMaxMIMO_LayersFR2_tags_14,       /* Same as above */
+       sizeof(asn_DEF_reducedMaxMIMO_LayersFR2_tags_14)
+               /sizeof(asn_DEF_reducedMaxMIMO_LayersFR2_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_reducedMaxMIMO_LayersFR2_14,
+       2,      /* Elements count */
+       &asn_SPC_reducedMaxMIMO_LayersFR2_specs_14      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_OverheatingAssistance_1[] = {
+       { ATF_POINTER, 5, offsetof(struct OverheatingAssistance, reducedMaxCCs),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_reducedMaxCCs_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMaxCCs"
+               },
+       { ATF_POINTER, 4, offsetof(struct OverheatingAssistance, reducedMaxBW_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_reducedMaxBW_FR1_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMaxBW-FR1"
+               },
+       { ATF_POINTER, 3, offsetof(struct OverheatingAssistance, reducedMaxBW_FR2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_reducedMaxBW_FR2_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMaxBW-FR2"
+               },
+       { ATF_POINTER, 2, offsetof(struct OverheatingAssistance, reducedMaxMIMO_LayersFR1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_reducedMaxMIMO_LayersFR1_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMaxMIMO-LayersFR1"
+               },
+       { ATF_POINTER, 1, offsetof(struct OverheatingAssistance, reducedMaxMIMO_LayersFR2),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_reducedMaxMIMO_LayersFR2_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reducedMaxMIMO-LayersFR2"
+               },
+};
+static const int asn_MAP_OverheatingAssistance_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_OverheatingAssistance_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_OverheatingAssistance_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reducedMaxCCs */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reducedMaxBW-FR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reducedMaxBW-FR2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reducedMaxMIMO-LayersFR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* reducedMaxMIMO-LayersFR2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_OverheatingAssistance_specs_1 = {
+       sizeof(struct OverheatingAssistance),
+       offsetof(struct OverheatingAssistance, _asn_ctx),
+       asn_MAP_OverheatingAssistance_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_OverheatingAssistance_oms_1,    /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_OverheatingAssistance = {
+       "OverheatingAssistance",
+       "OverheatingAssistance",
+       &asn_OP_SEQUENCE,
+       asn_DEF_OverheatingAssistance_tags_1,
+       sizeof(asn_DEF_OverheatingAssistance_tags_1)
+               /sizeof(asn_DEF_OverheatingAssistance_tags_1[0]), /* 1 */
+       asn_DEF_OverheatingAssistance_tags_1,   /* Same as above */
+       sizeof(asn_DEF_OverheatingAssistance_tags_1)
+               /sizeof(asn_DEF_OverheatingAssistance_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_OverheatingAssistance_1,
+       5,      /* Elements count */
+       &asn_SPC_OverheatingAssistance_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/OverheatingAssistance.h b/src/codec_utils/RRC/OverheatingAssistance.h
new file mode 100644 (file)
index 0000000..32fa8b7
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _OverheatingAssistance_H_
+#define        _OverheatingAssistance_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+#include "ReducedAggregatedBandwidth.h"
+#include "MIMO-LayersDL.h"
+#include "MIMO-LayersUL.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* OverheatingAssistance */
+typedef struct OverheatingAssistance {
+       struct OverheatingAssistance__reducedMaxCCs {
+               long     reducedCCsDL;
+               long     reducedCCsUL;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reducedMaxCCs;
+       struct OverheatingAssistance__reducedMaxBW_FR1 {
+               ReducedAggregatedBandwidth_t     reducedBW_FR1_DL;
+               ReducedAggregatedBandwidth_t     reducedBW_FR1_UL;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reducedMaxBW_FR1;
+       struct OverheatingAssistance__reducedMaxBW_FR2 {
+               ReducedAggregatedBandwidth_t     reducedBW_FR2_DL;
+               ReducedAggregatedBandwidth_t     reducedBW_FR2_UL;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reducedMaxBW_FR2;
+       struct OverheatingAssistance__reducedMaxMIMO_LayersFR1 {
+               MIMO_LayersDL_t  reducedMIMO_LayersFR1_DL;
+               MIMO_LayersUL_t  reducedMIMO_LayersFR1_UL;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reducedMaxMIMO_LayersFR1;
+       struct OverheatingAssistance__reducedMaxMIMO_LayersFR2 {
+               MIMO_LayersDL_t  reducedMIMO_LayersFR2_DL;
+               MIMO_LayersUL_t  reducedMIMO_LayersFR2_UL;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *reducedMaxMIMO_LayersFR2;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} OverheatingAssistance_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_OverheatingAssistance;
+extern asn_SEQUENCE_specifics_t asn_SPC_OverheatingAssistance_specs_1;
+extern asn_TYPE_member_t asn_MBR_OverheatingAssistance_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OverheatingAssistance_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/P-Max.c b/src/codec_utils/RRC/P-Max.c
new file mode 100644 (file)
index 0000000..930668b
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "P-Max.h"
+
+int
+P_Max_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 >= -30 && value <= 33)) {
+               /* 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_P_Max_constr_1 CC_NOTUSED = {
+       { 1, 0 }        /* (-30..33) */,
+       -1};
+asn_per_constraints_t asn_PER_type_P_Max_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -30,  33 }      /* (-30..33) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_P_Max_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_P_Max = {
+       "P-Max",
+       "P-Max",
+       &asn_OP_NativeInteger,
+       asn_DEF_P_Max_tags_1,
+       sizeof(asn_DEF_P_Max_tags_1)
+               /sizeof(asn_DEF_P_Max_tags_1[0]), /* 1 */
+       asn_DEF_P_Max_tags_1,   /* Same as above */
+       sizeof(asn_DEF_P_Max_tags_1)
+               /sizeof(asn_DEF_P_Max_tags_1[0]), /* 1 */
+       { &asn_OER_type_P_Max_constr_1, &asn_PER_type_P_Max_constr_1, P_Max_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/P-Max.h b/src/codec_utils/RRC/P-Max.h
new file mode 100644 (file)
index 0000000..f119679
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _P_Max_H_
+#define        _P_Max_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* P-Max */
+typedef long    P_Max_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_P_Max_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_P_Max;
+asn_struct_free_f P_Max_free;
+asn_struct_print_f P_Max_print;
+asn_constr_check_f P_Max_constraint;
+ber_type_decoder_f P_Max_decode_ber;
+der_type_encoder_f P_Max_encode_der;
+xer_type_decoder_f P_Max_decode_xer;
+xer_type_encoder_f P_Max_encode_xer;
+oer_type_decoder_f P_Max_decode_oer;
+oer_type_encoder_f P_Max_encode_oer;
+per_type_decoder_f P_Max_decode_uper;
+per_type_encoder_f P_Max_encode_uper;
+per_type_decoder_f P_Max_decode_aper;
+per_type_encoder_f P_Max_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _P_Max_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/P0-PUCCH-Id.c b/src/codec_utils/RRC/P0-PUCCH-Id.c
new file mode 100644 (file)
index 0000000..1e0008c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "P0-PUCCH-Id.h"
+
+int
+P0_PUCCH_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 >= 1 && value <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_P0_PUCCH_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+asn_per_constraints_t asn_PER_type_P0_PUCCH_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_P0_PUCCH_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_P0_PUCCH_Id = {
+       "P0-PUCCH-Id",
+       "P0-PUCCH-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_P0_PUCCH_Id_tags_1,
+       sizeof(asn_DEF_P0_PUCCH_Id_tags_1)
+               /sizeof(asn_DEF_P0_PUCCH_Id_tags_1[0]), /* 1 */
+       asn_DEF_P0_PUCCH_Id_tags_1,     /* Same as above */
+       sizeof(asn_DEF_P0_PUCCH_Id_tags_1)
+               /sizeof(asn_DEF_P0_PUCCH_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_P0_PUCCH_Id_constr_1, &asn_PER_type_P0_PUCCH_Id_constr_1, P0_PUCCH_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/P0-PUCCH-Id.h b/src/codec_utils/RRC/P0-PUCCH-Id.h
new file mode 100644 (file)
index 0000000..c811f29
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _P0_PUCCH_Id_H_
+#define        _P0_PUCCH_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* P0-PUCCH-Id */
+typedef long    P0_PUCCH_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_P0_PUCCH_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_P0_PUCCH_Id;
+asn_struct_free_f P0_PUCCH_Id_free;
+asn_struct_print_f P0_PUCCH_Id_print;
+asn_constr_check_f P0_PUCCH_Id_constraint;
+ber_type_decoder_f P0_PUCCH_Id_decode_ber;
+der_type_encoder_f P0_PUCCH_Id_encode_der;
+xer_type_decoder_f P0_PUCCH_Id_decode_xer;
+xer_type_encoder_f P0_PUCCH_Id_encode_xer;
+oer_type_decoder_f P0_PUCCH_Id_decode_oer;
+oer_type_encoder_f P0_PUCCH_Id_encode_oer;
+per_type_decoder_f P0_PUCCH_Id_decode_uper;
+per_type_encoder_f P0_PUCCH_Id_encode_uper;
+per_type_decoder_f P0_PUCCH_Id_decode_aper;
+per_type_encoder_f P0_PUCCH_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _P0_PUCCH_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/P0-PUCCH.c b/src/codec_utils/RRC/P0-PUCCH.c
new file mode 100644 (file)
index 0000000..b37befc
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "P0-PUCCH.h"
+
+static int
+memb_p0_PUCCH_Value_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 >= -16 && 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 asn_oer_constraints_t asn_OER_memb_p0_PUCCH_Value_constr_3 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_PUCCH_Value_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_P0_PUCCH_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct P0_PUCCH, p0_PUCCH_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUCCH_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p0-PUCCH-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct P0_PUCCH, p0_PUCCH_Value),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_PUCCH_Value_constr_3, &asn_PER_memb_p0_PUCCH_Value_constr_3,  memb_p0_PUCCH_Value_constraint_1 },
+               0, 0, /* No default value */
+               "p0-PUCCH-Value"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_P0_PUCCH_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_P0_PUCCH_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* p0-PUCCH-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* p0-PUCCH-Value */
+};
+asn_SEQUENCE_specifics_t asn_SPC_P0_PUCCH_specs_1 = {
+       sizeof(struct P0_PUCCH),
+       offsetof(struct P0_PUCCH, _asn_ctx),
+       asn_MAP_P0_PUCCH_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_P0_PUCCH = {
+       "P0-PUCCH",
+       "P0-PUCCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_P0_PUCCH_tags_1,
+       sizeof(asn_DEF_P0_PUCCH_tags_1)
+               /sizeof(asn_DEF_P0_PUCCH_tags_1[0]), /* 1 */
+       asn_DEF_P0_PUCCH_tags_1,        /* Same as above */
+       sizeof(asn_DEF_P0_PUCCH_tags_1)
+               /sizeof(asn_DEF_P0_PUCCH_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_P0_PUCCH_1,
+       2,      /* Elements count */
+       &asn_SPC_P0_PUCCH_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/P0-PUCCH.h b/src/codec_utils/RRC/P0-PUCCH.h
new file mode 100644 (file)
index 0000000..38faf38
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _P0_PUCCH_H_
+#define        _P0_PUCCH_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "P0-PUCCH-Id.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* P0-PUCCH */
+typedef struct P0_PUCCH {
+       P0_PUCCH_Id_t    p0_PUCCH_Id;
+       long     p0_PUCCH_Value;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} P0_PUCCH_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_P0_PUCCH;
+extern asn_SEQUENCE_specifics_t asn_SPC_P0_PUCCH_specs_1;
+extern asn_TYPE_member_t asn_MBR_P0_PUCCH_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _P0_PUCCH_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/P0-PUSCH-AlphaSet.c b/src/codec_utils/RRC/P0-PUSCH-AlphaSet.c
new file mode 100644 (file)
index 0000000..8ac019d
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "P0-PUSCH-AlphaSet.h"
+
+static int
+memb_p0_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 >= -16 && 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 asn_oer_constraints_t asn_OER_memb_p0_constr_3 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_P0_PUSCH_AlphaSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct P0_PUSCH_AlphaSet, p0_PUSCH_AlphaSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUSCH_AlphaSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p0-PUSCH-AlphaSetId"
+               },
+       { ATF_POINTER, 2, offsetof(struct P0_PUSCH_AlphaSet, p0),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_constr_3, &asn_PER_memb_p0_constr_3,  memb_p0_constraint_1 },
+               0, 0, /* No default value */
+               "p0"
+               },
+       { ATF_POINTER, 1, offsetof(struct P0_PUSCH_AlphaSet, alpha),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Alpha,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "alpha"
+               },
+};
+static const int asn_MAP_P0_PUSCH_AlphaSet_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_P0_PUSCH_AlphaSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_P0_PUSCH_AlphaSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* p0-PUSCH-AlphaSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* p0 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* alpha */
+};
+asn_SEQUENCE_specifics_t asn_SPC_P0_PUSCH_AlphaSet_specs_1 = {
+       sizeof(struct P0_PUSCH_AlphaSet),
+       offsetof(struct P0_PUSCH_AlphaSet, _asn_ctx),
+       asn_MAP_P0_PUSCH_AlphaSet_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_P0_PUSCH_AlphaSet_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_P0_PUSCH_AlphaSet = {
+       "P0-PUSCH-AlphaSet",
+       "P0-PUSCH-AlphaSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_P0_PUSCH_AlphaSet_tags_1,
+       sizeof(asn_DEF_P0_PUSCH_AlphaSet_tags_1)
+               /sizeof(asn_DEF_P0_PUSCH_AlphaSet_tags_1[0]), /* 1 */
+       asn_DEF_P0_PUSCH_AlphaSet_tags_1,       /* Same as above */
+       sizeof(asn_DEF_P0_PUSCH_AlphaSet_tags_1)
+               /sizeof(asn_DEF_P0_PUSCH_AlphaSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_P0_PUSCH_AlphaSet_1,
+       3,      /* Elements count */
+       &asn_SPC_P0_PUSCH_AlphaSet_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/P0-PUSCH-AlphaSet.h b/src/codec_utils/RRC/P0-PUSCH-AlphaSet.h
new file mode 100644 (file)
index 0000000..c81b832
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _P0_PUSCH_AlphaSet_H_
+#define        _P0_PUSCH_AlphaSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "P0-PUSCH-AlphaSetId.h"
+#include <NativeInteger.h>
+#include "Alpha.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* P0-PUSCH-AlphaSet */
+typedef struct P0_PUSCH_AlphaSet {
+       P0_PUSCH_AlphaSetId_t    p0_PUSCH_AlphaSetId;
+       long    *p0;    /* OPTIONAL */
+       Alpha_t *alpha; /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} P0_PUSCH_AlphaSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_P0_PUSCH_AlphaSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_P0_PUSCH_AlphaSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_P0_PUSCH_AlphaSet_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _P0_PUSCH_AlphaSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/P0-PUSCH-AlphaSetId.c b/src/codec_utils/RRC/P0-PUSCH-AlphaSetId.c
new file mode 100644 (file)
index 0000000..151a9d8
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "P0-PUSCH-AlphaSetId.h"
+
+int
+P0_PUSCH_AlphaSetId_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 <= 29)) {
+               /* 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_P0_PUSCH_AlphaSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+asn_per_constraints_t asn_PER_type_P0_PUSCH_AlphaSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_P0_PUSCH_AlphaSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_P0_PUSCH_AlphaSetId = {
+       "P0-PUSCH-AlphaSetId",
+       "P0-PUSCH-AlphaSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_P0_PUSCH_AlphaSetId_tags_1,
+       sizeof(asn_DEF_P0_PUSCH_AlphaSetId_tags_1)
+               /sizeof(asn_DEF_P0_PUSCH_AlphaSetId_tags_1[0]), /* 1 */
+       asn_DEF_P0_PUSCH_AlphaSetId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_P0_PUSCH_AlphaSetId_tags_1)
+               /sizeof(asn_DEF_P0_PUSCH_AlphaSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_P0_PUSCH_AlphaSetId_constr_1, &asn_PER_type_P0_PUSCH_AlphaSetId_constr_1, P0_PUSCH_AlphaSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/P0-PUSCH-AlphaSetId.h b/src/codec_utils/RRC/P0-PUSCH-AlphaSetId.h
new file mode 100644 (file)
index 0000000..dfcd816
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _P0_PUSCH_AlphaSetId_H_
+#define        _P0_PUSCH_AlphaSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* P0-PUSCH-AlphaSetId */
+typedef long    P0_PUSCH_AlphaSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_P0_PUSCH_AlphaSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_P0_PUSCH_AlphaSetId;
+asn_struct_free_f P0_PUSCH_AlphaSetId_free;
+asn_struct_print_f P0_PUSCH_AlphaSetId_print;
+asn_constr_check_f P0_PUSCH_AlphaSetId_constraint;
+ber_type_decoder_f P0_PUSCH_AlphaSetId_decode_ber;
+der_type_encoder_f P0_PUSCH_AlphaSetId_encode_der;
+xer_type_decoder_f P0_PUSCH_AlphaSetId_decode_xer;
+xer_type_encoder_f P0_PUSCH_AlphaSetId_encode_xer;
+oer_type_decoder_f P0_PUSCH_AlphaSetId_decode_oer;
+oer_type_encoder_f P0_PUSCH_AlphaSetId_encode_oer;
+per_type_decoder_f P0_PUSCH_AlphaSetId_decode_uper;
+per_type_encoder_f P0_PUSCH_AlphaSetId_encode_uper;
+per_type_decoder_f P0_PUSCH_AlphaSetId_decode_aper;
+per_type_encoder_f P0_PUSCH_AlphaSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _P0_PUSCH_AlphaSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCCH-Config.c b/src/codec_utils/RRC/PCCH-Config.c
new file mode 100644 (file)
index 0000000..dbd68ba
--- /dev/null
@@ -0,0 +1,1365 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCCH-Config.h"
+
+static int
+memb_halfT_constraint_3(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 <= 1)) {
+               /* 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_quarterT_constraint_3(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 <= 3)) {
+               /* 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_oneEighthT_constraint_3(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 <= 7)) {
+               /* 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_oneSixteenthT_constraint_3(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 <= 15)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_NativeInteger_constraint_14(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 <= 139)) {
+               /* 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_NativeInteger_constraint_16(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 <= 279)) {
+               /* 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_NativeInteger_constraint_18(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 <= 559)) {
+               /* 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_NativeInteger_constraint_20(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 <= 1119)) {
+               /* 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_NativeInteger_constraint_22(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 <= 2239)) {
+               /* 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_NativeInteger_constraint_24(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 <= 4479)) {
+               /* 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_NativeInteger_constraint_26(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 <= 8959)) {
+               /* 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_NativeInteger_constraint_28(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 <= 17919)) {
+               /* 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_sCS15KHZoneT_constraint_13(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 <= 4)) {
+               /* 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_sCS30KHZoneT_SCS15KHZhalfT_constraint_13(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 <= 4)) {
+               /* 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_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13(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 <= 4)) {
+               /* 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_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13(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 <= 4)) {
+               /* 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_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13(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 <= 4)) {
+               /* 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_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13(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 <= 4)) {
+               /* 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_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13(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 <= 4)) {
+               /* 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_sCS120KHZoneSixteenthT_constraint_13(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 <= 4)) {
+               /* 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_memb_halfT_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_halfT_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_quarterT_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_quarterT_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_oneEighthT_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_oneEighthT_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_oneSixteenthT_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_oneSixteenthT_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nAndPagingFrameOffset_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nAndPagingFrameOffset_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ns_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ns_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (0..139) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  139 }      /* (0..139) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_17 CC_NOTUSED = {
+       { 2, 1 }        /* (0..279) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  279 }      /* (0..279) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_19 CC_NOTUSED = {
+       { 2, 1 }        /* (0..559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  559 }    /* (0..559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_21 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1119) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1119 }   /* (0..1119) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_23 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2239) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2239 }   /* (0..2239) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_25 CC_NOTUSED = {
+       { 2, 1 }        /* (0..4479) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       13,  13,  0,  4479 }   /* (0..4479) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_27 CC_NOTUSED = {
+       { 2, 1 }        /* (0..8959) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  0,  8959 }   /* (0..8959) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_29 CC_NOTUSED = {
+       { 2, 1 }        /* (0..17919) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       15,  15,  0,  17919 }  /* (0..17919) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_nAndPagingFrameOffset_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneT),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "oneT"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.halfT),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_halfT_constr_5, &asn_PER_memb_halfT_constr_5,  memb_halfT_constraint_3 },
+               0, 0, /* No default value */
+               "halfT"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.quarterT),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_quarterT_constr_6, &asn_PER_memb_quarterT_constr_6,  memb_quarterT_constraint_3 },
+               0, 0, /* No default value */
+               "quarterT"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneEighthT),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_oneEighthT_constr_7, &asn_PER_memb_oneEighthT_constr_7,  memb_oneEighthT_constraint_3 },
+               0, 0, /* No default value */
+               "oneEighthT"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneSixteenthT),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_oneSixteenthT_constr_8, &asn_PER_memb_oneSixteenthT_constr_8,  memb_oneSixteenthT_constraint_3 },
+               0, 0, /* No default value */
+               "oneSixteenthT"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_nAndPagingFrameOffset_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneT */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* halfT */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* quarterT */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* oneEighthT */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* oneSixteenthT */
+};
+static asn_CHOICE_specifics_t asn_SPC_nAndPagingFrameOffset_specs_3 = {
+       sizeof(struct PCCH_Config__nAndPagingFrameOffset),
+       offsetof(struct PCCH_Config__nAndPagingFrameOffset, _asn_ctx),
+       offsetof(struct PCCH_Config__nAndPagingFrameOffset, present),
+       sizeof(((struct PCCH_Config__nAndPagingFrameOffset *)0)->present),
+       asn_MAP_nAndPagingFrameOffset_tag2el_3,
+       5,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nAndPagingFrameOffset_3 = {
+       "nAndPagingFrameOffset",
+       "nAndPagingFrameOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_nAndPagingFrameOffset_constr_3, &asn_PER_type_nAndPagingFrameOffset_constr_3, CHOICE_constraint },
+       asn_MBR_nAndPagingFrameOffset_3,
+       5,      /* Elements count */
+       &asn_SPC_nAndPagingFrameOffset_specs_3  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ns_value2enum_9[] = {
+       { 0,    4,      "four" },
+       { 1,    3,      "two" },
+       { 2,    3,      "one" }
+};
+static const unsigned int asn_MAP_ns_enum2value_9[] = {
+       0,      /* four(0) */
+       2,      /* one(2) */
+       1       /* two(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ns_specs_9 = {
+       asn_MAP_ns_value2enum_9,        /* "tag" => N; sorted by tag */
+       asn_MAP_ns_enum2value_9,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ns_tags_9[] = {
+       (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_ns_9 = {
+       "ns",
+       "ns",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ns_tags_9,
+       sizeof(asn_DEF_ns_tags_9)
+               /sizeof(asn_DEF_ns_tags_9[0]) - 1, /* 1 */
+       asn_DEF_ns_tags_9,      /* Same as above */
+       sizeof(asn_DEF_ns_tags_9)
+               /sizeof(asn_DEF_ns_tags_9[0]), /* 2 */
+       { &asn_OER_type_ns_constr_9, &asn_PER_type_ns_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ns_specs_9     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS15KHZoneT_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_15, &asn_PER_memb_Member_constr_15,  memb_NativeInteger_constraint_14 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS15KHZoneT_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS15KHZoneT_specs_14 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS15KHZoneT_14 = {
+       "sCS15KHZoneT",
+       "sCS15KHZoneT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS15KHZoneT_tags_14,
+       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
+               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]) - 1, /* 1 */
+       asn_DEF_sCS15KHZoneT_tags_14,   /* Same as above */
+       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
+               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]), /* 2 */
+       { &asn_OER_type_sCS15KHZoneT_constr_14, &asn_PER_type_sCS15KHZoneT_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_sCS15KHZoneT_14,
+       1,      /* Single element */
+       &asn_SPC_sCS15KHZoneT_specs_14  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_17, &asn_PER_memb_Member_constr_17,  memb_NativeInteger_constraint_16 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16 = {
+       "sCS30KHZoneT-SCS15KHZhalfT",
+       "sCS30KHZoneT-SCS15KHZhalfT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,
+       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
+               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]) - 1, /* 1 */
+       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,     /* Same as above */
+       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
+               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]), /* 2 */
+       { &asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, SEQUENCE_OF_constraint },
+       asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16,
+       1,      /* Single element */
+       &asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_19, &asn_PER_memb_Member_constr_19,  memb_NativeInteger_constraint_18 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18 = {
+       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
+       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,
+       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
+               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]) - 1, /* 1 */
+       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,    /* Same as above */
+       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
+               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]), /* 2 */
+       { &asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, SEQUENCE_OF_constraint },
+       asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
+       1,      /* Single element */
+       &asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_21, &asn_PER_memb_Member_constr_21,  memb_NativeInteger_constraint_20 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20 = {
+       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
+       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,
+       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
+               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]) - 1, /* 1 */
+       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,        /* Same as above */
+       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
+               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]), /* 2 */
+       { &asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
+       1,      /* Single element */
+       &asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_23, &asn_PER_memb_Member_constr_23,  memb_NativeInteger_constraint_22 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22 = {
+       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
+       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,
+       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
+               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]) - 1, /* 1 */
+       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,       /* Same as above */
+       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
+               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]), /* 2 */
+       { &asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
+       1,      /* Single element */
+       &asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_25, &asn_PER_memb_Member_constr_25,  memb_NativeInteger_constraint_24 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24 = {
+       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
+       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,
+       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
+               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]) - 1, /* 1 */
+       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,     /* Same as above */
+       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
+               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]), /* 2 */
+       { &asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, SEQUENCE_OF_constraint },
+       asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
+       1,      /* Single element */
+       &asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_27, &asn_PER_memb_Member_constr_27,  memb_NativeInteger_constraint_26 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26 = {
+       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
+       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,
+       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
+               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]) - 1, /* 1 */
+       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,      /* Same as above */
+       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
+               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]), /* 2 */
+       { &asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, SEQUENCE_OF_constraint },
+       asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
+       1,      /* Single element */
+       &asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sCS120KHZoneSixteenthT_28[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_29, &asn_PER_memb_Member_constr_29,  memb_NativeInteger_constraint_28 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sCS120KHZoneSixteenthT_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneSixteenthT_specs_28 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneSixteenthT_28 = {
+       "sCS120KHZoneSixteenthT",
+       "sCS120KHZoneSixteenthT",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sCS120KHZoneSixteenthT_tags_28,
+       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
+               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]) - 1, /* 1 */
+       asn_DEF_sCS120KHZoneSixteenthT_tags_28, /* Same as above */
+       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
+               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]), /* 2 */
+       { &asn_OER_type_sCS120KHZoneSixteenthT_constr_28, &asn_PER_type_sCS120KHZoneSixteenthT_constr_28, SEQUENCE_OF_constraint },
+       asn_MBR_sCS120KHZoneSixteenthT_28,
+       1,      /* Single element */
+       &asn_SPC_sCS120KHZoneSixteenthT_specs_28        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13[] = {
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS15KHZoneT),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_sCS15KHZoneT_14,
+               0,
+               { &asn_OER_memb_sCS15KHZoneT_constr_14, &asn_PER_memb_sCS15KHZoneT_constr_14,  memb_sCS15KHZoneT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS15KHZoneT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS30KHZoneT_SCS15KHZhalfT),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16,
+               0,
+               { &asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16,  memb_sCS30KHZoneT_SCS15KHZhalfT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS30KHZoneT-SCS15KHZhalfT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
+               0,
+               { &asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18,  memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
+               0,
+               { &asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20,  memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
+               0,
+               { &asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22,  memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
+               0,
+               { &asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24,  memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
+               0,
+               { &asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26,  memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneSixteenthT),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_sCS120KHZoneSixteenthT_28,
+               0,
+               { &asn_OER_memb_sCS120KHZoneSixteenthT_constr_28, &asn_PER_memb_sCS120KHZoneSixteenthT_constr_28,  memb_sCS120KHZoneSixteenthT_constraint_13 },
+               0, 0, /* No default value */
+               "sCS120KHZoneSixteenthT"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCS15KHZoneT */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sCS30KHZoneT-SCS15KHZhalfT */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sCS120KHZoneEighthT-SCS60KHZoneSixteenthT */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sCS120KHZoneSixteenthT */
+};
+static asn_CHOICE_specifics_t asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13 = {
+       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, _asn_ctx),
+       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, present),
+       sizeof(((struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO *)0)->present),
+       asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13 = {
+       "firstPDCCH-MonitoringOccasionOfPO",
+       "firstPDCCH-MonitoringOccasionOfPO",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, &asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, CHOICE_constraint },
+       asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13,
+       8,      /* Elements count */
+       &asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PCCH_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, defaultPagingCycle),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PagingCycle,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "defaultPagingCycle"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, nAndPagingFrameOffset),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_nAndPagingFrameOffset_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nAndPagingFrameOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, ns),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ns_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ns"
+               },
+       { ATF_POINTER, 1, offsetof(struct PCCH_Config, firstPDCCH_MonitoringOccasionOfPO),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "firstPDCCH-MonitoringOccasionOfPO"
+               },
+};
+static const int asn_MAP_PCCH_Config_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_PCCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PCCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* defaultPagingCycle */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nAndPagingFrameOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ns */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* firstPDCCH-MonitoringOccasionOfPO */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PCCH_Config_specs_1 = {
+       sizeof(struct PCCH_Config),
+       offsetof(struct PCCH_Config, _asn_ctx),
+       asn_MAP_PCCH_Config_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PCCH_Config_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PCCH_Config = {
+       "PCCH-Config",
+       "PCCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PCCH_Config_tags_1,
+       sizeof(asn_DEF_PCCH_Config_tags_1)
+               /sizeof(asn_DEF_PCCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_PCCH_Config_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PCCH_Config_tags_1)
+               /sizeof(asn_DEF_PCCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PCCH_Config_1,
+       4,      /* Elements count */
+       &asn_SPC_PCCH_Config_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCCH-Config.h b/src/codec_utils/RRC/PCCH-Config.h
new file mode 100644 (file)
index 0000000..cc4d4ee
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCCH_Config_H_
+#define        _PCCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PagingCycle.h"
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PCCH_Config__nAndPagingFrameOffset_PR {
+       PCCH_Config__nAndPagingFrameOffset_PR_NOTHING,  /* No components present */
+       PCCH_Config__nAndPagingFrameOffset_PR_oneT,
+       PCCH_Config__nAndPagingFrameOffset_PR_halfT,
+       PCCH_Config__nAndPagingFrameOffset_PR_quarterT,
+       PCCH_Config__nAndPagingFrameOffset_PR_oneEighthT,
+       PCCH_Config__nAndPagingFrameOffset_PR_oneSixteenthT
+} PCCH_Config__nAndPagingFrameOffset_PR;
+typedef enum PCCH_Config__ns {
+       PCCH_Config__ns_four    = 0,
+       PCCH_Config__ns_two     = 1,
+       PCCH_Config__ns_one     = 2
+} e_PCCH_Config__ns;
+typedef enum PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR {
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_NOTHING,      /* No components present */
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS15KHZoneT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS30KHZoneT_SCS15KHZhalfT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT,
+       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneSixteenthT
+} PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR;
+
+/* PCCH-Config */
+typedef struct PCCH_Config {
+       PagingCycle_t    defaultPagingCycle;
+       struct PCCH_Config__nAndPagingFrameOffset {
+               PCCH_Config__nAndPagingFrameOffset_PR present;
+               union PCCH_Config__nAndPagingFrameOffset_u {
+                       NULL_t   oneT;
+                       long     halfT;
+                       long     quarterT;
+                       long     oneEighthT;
+                       long     oneSixteenthT;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } nAndPagingFrameOffset;
+       long     ns;
+       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO {
+               PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR present;
+               union PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_u {
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS15KHZoneT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS30KHZoneT_SCS15KHZhalfT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS120KHZoneEighthT_SCS60KHZoneSixteenthT;
+                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT {
+                               A_SEQUENCE_OF(long) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *sCS120KHZoneSixteenthT;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *firstPDCCH_MonitoringOccasionOfPO;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCCH_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ns_9;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PCCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PCCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCCH_Config_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCCH-Message.c b/src/codec_utils/RRC/PCCH-Message.c
new file mode 100644 (file)
index 0000000..f607202
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_PCCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_PCCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PCCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PCCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_PCCH_Message_specs_1 = {
+       sizeof(struct PCCH_Message),
+       offsetof(struct PCCH_Message, _asn_ctx),
+       asn_MAP_PCCH_Message_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_PCCH_Message = {
+       "PCCH-Message",
+       "PCCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PCCH_Message_tags_1,
+       sizeof(asn_DEF_PCCH_Message_tags_1)
+               /sizeof(asn_DEF_PCCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_PCCH_Message_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PCCH_Message_tags_1)
+               /sizeof(asn_DEF_PCCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PCCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_PCCH_Message_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCCH-Message.h b/src/codec_utils/RRC/PCCH-Message.h
new file mode 100644 (file)
index 0000000..b4a03b8
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCCH_Message_H_
+#define        _PCCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PCCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PCCH-Message */
+typedef struct PCCH_Message {
+       PCCH_MessageType_t       message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PCCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCCH-MessageType.c b/src/codec_utils/RRC/PCCH-MessageType.c
new file mode 100644 (file)
index 0000000..1bbf607
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCCH-MessageType.h"
+
+#include "Paging.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_PCCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PCCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct PCCH_MessageType__c1, choice.paging),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Paging,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "paging"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCCH_MessageType__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* paging */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct PCCH_MessageType__c1),
+       offsetof(struct PCCH_MessageType__c1, _asn_ctx),
+       offsetof(struct PCCH_MessageType__c1, present),
+       sizeof(((struct PCCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       2,      /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_5 = {
+       sizeof(struct PCCH_MessageType__messageClassExtension),
+       offsetof(struct PCCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_5 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_5,
+       sizeof(asn_DEF_messageClassExtension_tags_5)
+               /sizeof(asn_DEF_messageClassExtension_tags_5[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_5,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_5)
+               /sizeof(asn_DEF_messageClassExtension_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_5  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PCCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct PCCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct PCCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PCCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_PCCH_MessageType_specs_1 = {
+       sizeof(struct PCCH_MessageType),
+       offsetof(struct PCCH_MessageType, _asn_ctx),
+       offsetof(struct PCCH_MessageType, present),
+       sizeof(((struct PCCH_MessageType *)0)->present),
+       asn_MAP_PCCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PCCH_MessageType = {
+       "PCCH-MessageType",
+       "PCCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_PCCH_MessageType_constr_1, &asn_PER_type_PCCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_PCCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_PCCH_MessageType_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCCH-MessageType.h b/src/codec_utils/RRC/PCCH-MessageType.h
new file mode 100644 (file)
index 0000000..fe64403
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCCH_MessageType_H_
+#define        _PCCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PCCH_MessageType_PR {
+       PCCH_MessageType_PR_NOTHING,    /* No components present */
+       PCCH_MessageType_PR_c1,
+       PCCH_MessageType_PR_messageClassExtension
+} PCCH_MessageType_PR;
+typedef enum PCCH_MessageType__c1_PR {
+       PCCH_MessageType__c1_PR_NOTHING,        /* No components present */
+       PCCH_MessageType__c1_PR_paging,
+       PCCH_MessageType__c1_PR_spare1
+} PCCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct Paging;
+
+/* PCCH-MessageType */
+typedef struct PCCH_MessageType {
+       PCCH_MessageType_PR present;
+       union PCCH_MessageType_u {
+               struct PCCH_MessageType__c1 {
+                       PCCH_MessageType__c1_PR present;
+                       union PCCH_MessageType__c1_u {
+                               struct Paging   *paging;
+                               NULL_t   spare1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct PCCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PCCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_PCCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_PCCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCI-List.c b/src/codec_utils/RRC/PCI-List.c
new file mode 100644 (file)
index 0000000..1172236
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCI-List.h"
+
+static asn_oer_constraints_t asn_OER_type_PCI_List_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_PCI_List_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PCI_List_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PCI_List_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PCI_List_specs_1 = {
+       sizeof(struct PCI_List),
+       offsetof(struct PCI_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PCI_List = {
+       "PCI-List",
+       "PCI-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PCI_List_tags_1,
+       sizeof(asn_DEF_PCI_List_tags_1)
+               /sizeof(asn_DEF_PCI_List_tags_1[0]), /* 1 */
+       asn_DEF_PCI_List_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PCI_List_tags_1)
+               /sizeof(asn_DEF_PCI_List_tags_1[0]), /* 1 */
+       { &asn_OER_type_PCI_List_constr_1, &asn_PER_type_PCI_List_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PCI_List_1,
+       1,      /* Single element */
+       &asn_SPC_PCI_List_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCI-List.h b/src/codec_utils/RRC/PCI-List.h
new file mode 100644 (file)
index 0000000..f28aa6a
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCI_List_H_
+#define        _PCI_List_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PCI-List */
+typedef struct PCI_List {
+       A_SEQUENCE_OF(PhysCellId_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCI_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PCI_List;
+extern asn_SET_OF_specifics_t asn_SPC_PCI_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCI_List_1[1];
+extern asn_per_constraints_t asn_PER_type_PCI_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCI_List_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCI-Range.c b/src/codec_utils/RRC/PCI-Range.c
new file mode 100644 (file)
index 0000000..13bb821
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCI-Range.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_range_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_range_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_range_value2enum_3[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n24" },
+       { 5,    3,      "n32" },
+       { 6,    3,      "n48" },
+       { 7,    3,      "n64" },
+       { 8,    3,      "n84" },
+       { 9,    3,      "n96" },
+       { 10,   4,      "n128" },
+       { 11,   4,      "n168" },
+       { 12,   4,      "n252" },
+       { 13,   4,      "n504" },
+       { 14,   5,      "n1008" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_range_enum2value_3[] = {
+       14,     /* n1008(14) */
+       2,      /* n12(2) */
+       10,     /* n128(10) */
+       3,      /* n16(3) */
+       11,     /* n168(11) */
+       4,      /* n24(4) */
+       12,     /* n252(12) */
+       5,      /* n32(5) */
+       0,      /* n4(0) */
+       6,      /* n48(6) */
+       13,     /* n504(13) */
+       7,      /* n64(7) */
+       1,      /* n8(1) */
+       8,      /* n84(8) */
+       9,      /* n96(9) */
+       15      /* spare1(15) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_range_specs_3 = {
+       asn_MAP_range_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_range_enum2value_3,     /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_range_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_range_3 = {
+       "range",
+       "range",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_range_tags_3,
+       sizeof(asn_DEF_range_tags_3)
+               /sizeof(asn_DEF_range_tags_3[0]) - 1, /* 1 */
+       asn_DEF_range_tags_3,   /* Same as above */
+       sizeof(asn_DEF_range_tags_3)
+               /sizeof(asn_DEF_range_tags_3[0]), /* 2 */
+       { &asn_OER_type_range_constr_3, &asn_PER_type_range_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_range_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PCI_Range_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PCI_Range, start),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "start"
+               },
+       { ATF_POINTER, 1, offsetof(struct PCI_Range, range),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_range_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "range"
+               },
+};
+static const int asn_MAP_PCI_Range_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_PCI_Range_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PCI_Range_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* start */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* range */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PCI_Range_specs_1 = {
+       sizeof(struct PCI_Range),
+       offsetof(struct PCI_Range, _asn_ctx),
+       asn_MAP_PCI_Range_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PCI_Range_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PCI_Range = {
+       "PCI-Range",
+       "PCI-Range",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PCI_Range_tags_1,
+       sizeof(asn_DEF_PCI_Range_tags_1)
+               /sizeof(asn_DEF_PCI_Range_tags_1[0]), /* 1 */
+       asn_DEF_PCI_Range_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PCI_Range_tags_1)
+               /sizeof(asn_DEF_PCI_Range_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PCI_Range_1,
+       2,      /* Elements count */
+       &asn_SPC_PCI_Range_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCI-Range.h b/src/codec_utils/RRC/PCI-Range.h
new file mode 100644 (file)
index 0000000..aa21c2d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCI_Range_H_
+#define        _PCI_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PCI_Range__range {
+       PCI_Range__range_n4     = 0,
+       PCI_Range__range_n8     = 1,
+       PCI_Range__range_n12    = 2,
+       PCI_Range__range_n16    = 3,
+       PCI_Range__range_n24    = 4,
+       PCI_Range__range_n32    = 5,
+       PCI_Range__range_n48    = 6,
+       PCI_Range__range_n64    = 7,
+       PCI_Range__range_n84    = 8,
+       PCI_Range__range_n96    = 9,
+       PCI_Range__range_n128   = 10,
+       PCI_Range__range_n168   = 11,
+       PCI_Range__range_n252   = 12,
+       PCI_Range__range_n504   = 13,
+       PCI_Range__range_n1008  = 14,
+       PCI_Range__range_spare1 = 15
+} e_PCI_Range__range;
+
+/* PCI-Range */
+typedef struct PCI_Range {
+       PhysCellId_t     start;
+       long    *range; /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCI_Range_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_range_3;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PCI_Range;
+extern asn_SEQUENCE_specifics_t asn_SPC_PCI_Range_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCI_Range_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCI_Range_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCI-RangeElement.c b/src/codec_utils/RRC/PCI-RangeElement.c
new file mode 100644 (file)
index 0000000..244a77b
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCI-RangeElement.h"
+
+asn_TYPE_member_t asn_MBR_PCI_RangeElement_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PCI_RangeElement, pci_RangeIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCI_RangeIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pci-RangeIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PCI_RangeElement, pci_Range),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PCI_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pci-Range"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PCI_RangeElement_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PCI_RangeElement_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pci-RangeIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pci-Range */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PCI_RangeElement_specs_1 = {
+       sizeof(struct PCI_RangeElement),
+       offsetof(struct PCI_RangeElement, _asn_ctx),
+       asn_MAP_PCI_RangeElement_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PCI_RangeElement = {
+       "PCI-RangeElement",
+       "PCI-RangeElement",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PCI_RangeElement_tags_1,
+       sizeof(asn_DEF_PCI_RangeElement_tags_1)
+               /sizeof(asn_DEF_PCI_RangeElement_tags_1[0]), /* 1 */
+       asn_DEF_PCI_RangeElement_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PCI_RangeElement_tags_1)
+               /sizeof(asn_DEF_PCI_RangeElement_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PCI_RangeElement_1,
+       2,      /* Elements count */
+       &asn_SPC_PCI_RangeElement_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCI-RangeElement.h b/src/codec_utils/RRC/PCI-RangeElement.h
new file mode 100644 (file)
index 0000000..7bddb34
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCI_RangeElement_H_
+#define        _PCI_RangeElement_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PCI-RangeIndex.h"
+#include "PCI-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PCI-RangeElement */
+typedef struct PCI_RangeElement {
+       PCI_RangeIndex_t         pci_RangeIndex;
+       PCI_Range_t      pci_Range;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCI_RangeElement_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PCI_RangeElement;
+extern asn_SEQUENCE_specifics_t asn_SPC_PCI_RangeElement_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCI_RangeElement_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCI_RangeElement_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCI-RangeIndex.c b/src/codec_utils/RRC/PCI-RangeIndex.c
new file mode 100644 (file)
index 0000000..f2e5cd4
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCI-RangeIndex.h"
+
+int
+PCI_RangeIndex_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PCI_RangeIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PCI_RangeIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PCI_RangeIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PCI_RangeIndex = {
+       "PCI-RangeIndex",
+       "PCI-RangeIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_PCI_RangeIndex_tags_1,
+       sizeof(asn_DEF_PCI_RangeIndex_tags_1)
+               /sizeof(asn_DEF_PCI_RangeIndex_tags_1[0]), /* 1 */
+       asn_DEF_PCI_RangeIndex_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PCI_RangeIndex_tags_1)
+               /sizeof(asn_DEF_PCI_RangeIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_PCI_RangeIndex_constr_1, &asn_PER_type_PCI_RangeIndex_constr_1, PCI_RangeIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PCI-RangeIndex.h b/src/codec_utils/RRC/PCI-RangeIndex.h
new file mode 100644 (file)
index 0000000..a95276f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCI_RangeIndex_H_
+#define        _PCI_RangeIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PCI-RangeIndex */
+typedef long    PCI_RangeIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PCI_RangeIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PCI_RangeIndex;
+asn_struct_free_f PCI_RangeIndex_free;
+asn_struct_print_f PCI_RangeIndex_print;
+asn_constr_check_f PCI_RangeIndex_constraint;
+ber_type_decoder_f PCI_RangeIndex_decode_ber;
+der_type_encoder_f PCI_RangeIndex_encode_der;
+xer_type_decoder_f PCI_RangeIndex_decode_xer;
+xer_type_encoder_f PCI_RangeIndex_encode_xer;
+oer_type_decoder_f PCI_RangeIndex_decode_oer;
+oer_type_encoder_f PCI_RangeIndex_encode_oer;
+per_type_decoder_f PCI_RangeIndex_decode_uper;
+per_type_encoder_f PCI_RangeIndex_encode_uper;
+per_type_decoder_f PCI_RangeIndex_decode_aper;
+per_type_encoder_f PCI_RangeIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCI_RangeIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PCI-RangeIndexList.c b/src/codec_utils/RRC/PCI-RangeIndexList.c
new file mode 100644 (file)
index 0000000..fdb634e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PCI-RangeIndexList.h"
+
+static asn_oer_constraints_t asn_OER_type_PCI_RangeIndexList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_PCI_RangeIndexList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PCI_RangeIndexList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PCI_RangeIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PCI_RangeIndexList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PCI_RangeIndexList_specs_1 = {
+       sizeof(struct PCI_RangeIndexList),
+       offsetof(struct PCI_RangeIndexList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PCI_RangeIndexList = {
+       "PCI-RangeIndexList",
+       "PCI-RangeIndexList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PCI_RangeIndexList_tags_1,
+       sizeof(asn_DEF_PCI_RangeIndexList_tags_1)
+               /sizeof(asn_DEF_PCI_RangeIndexList_tags_1[0]), /* 1 */
+       asn_DEF_PCI_RangeIndexList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PCI_RangeIndexList_tags_1)
+               /sizeof(asn_DEF_PCI_RangeIndexList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PCI_RangeIndexList_constr_1, &asn_PER_type_PCI_RangeIndexList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PCI_RangeIndexList_1,
+       1,      /* Single element */
+       &asn_SPC_PCI_RangeIndexList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PCI-RangeIndexList.h b/src/codec_utils/RRC/PCI-RangeIndexList.h
new file mode 100644 (file)
index 0000000..bc43a8e
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PCI_RangeIndexList_H_
+#define        _PCI_RangeIndexList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PCI-RangeIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PCI-RangeIndexList */
+typedef struct PCI_RangeIndexList {
+       A_SEQUENCE_OF(PCI_RangeIndex_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PCI_RangeIndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PCI_RangeIndexList;
+extern asn_SET_OF_specifics_t asn_SPC_PCI_RangeIndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PCI_RangeIndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_PCI_RangeIndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PCI_RangeIndexList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCCH-Config.c b/src/codec_utils/RRC/PDCCH-Config.c
new file mode 100644 (file)
index 0000000..f14fa05
--- /dev/null
@@ -0,0 +1,672 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCCH-Config.h"
+
+#include "ControlResourceSet.h"
+#include "SearchSpace.h"
+#include "DownlinkPreemption.h"
+#include "PUSCH-TPC-CommandConfig.h"
+#include "PUCCH-TPC-CommandConfig.h"
+#include "SRS-TPC-CommandConfig.h"
+static int
+memb_controlResourceSetToAddModList_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 <= 3)) {
+               /* 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_controlResourceSetToReleaseList_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 <= 3)) {
+               /* 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_searchSpacesToAddModList_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 <= 10)) {
+               /* 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_searchSpacesToReleaseList_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 <= 10)) {
+               /* 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_controlResourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+static asn_per_constraints_t asn_PER_type_controlResourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_controlResourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+static asn_per_constraints_t asn_PER_type_controlResourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_searchSpacesToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_type_searchSpacesToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_searchSpacesToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_type_searchSpacesToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_downlinkPreemption_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_downlinkPreemption_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_PUSCH_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_PUSCH_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_PUCCH_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_PUCCH_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_SRS_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_SRS_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_controlResourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+static asn_per_constraints_t asn_PER_memb_controlResourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_controlResourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..3)) */};
+static asn_per_constraints_t asn_PER_memb_controlResourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (SIZE(1..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_searchSpacesToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_memb_searchSpacesToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_searchSpacesToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_memb_searchSpacesToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_controlResourceSetToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ControlResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_controlResourceSetToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_controlResourceSetToAddModList_specs_2 = {
+       sizeof(struct PDCCH_Config__controlResourceSetToAddModList),
+       offsetof(struct PDCCH_Config__controlResourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_controlResourceSetToAddModList_2 = {
+       "controlResourceSetToAddModList",
+       "controlResourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_controlResourceSetToAddModList_tags_2,
+       sizeof(asn_DEF_controlResourceSetToAddModList_tags_2)
+               /sizeof(asn_DEF_controlResourceSetToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_controlResourceSetToAddModList_tags_2,  /* Same as above */
+       sizeof(asn_DEF_controlResourceSetToAddModList_tags_2)
+               /sizeof(asn_DEF_controlResourceSetToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_controlResourceSetToAddModList_constr_2, &asn_PER_type_controlResourceSetToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_controlResourceSetToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_controlResourceSetToAddModList_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_controlResourceSetToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ControlResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_controlResourceSetToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_controlResourceSetToReleaseList_specs_4 = {
+       sizeof(struct PDCCH_Config__controlResourceSetToReleaseList),
+       offsetof(struct PDCCH_Config__controlResourceSetToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_controlResourceSetToReleaseList_4 = {
+       "controlResourceSetToReleaseList",
+       "controlResourceSetToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_controlResourceSetToReleaseList_tags_4,
+       sizeof(asn_DEF_controlResourceSetToReleaseList_tags_4)
+               /sizeof(asn_DEF_controlResourceSetToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_controlResourceSetToReleaseList_tags_4, /* Same as above */
+       sizeof(asn_DEF_controlResourceSetToReleaseList_tags_4)
+               /sizeof(asn_DEF_controlResourceSetToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_controlResourceSetToReleaseList_constr_4, &asn_PER_type_controlResourceSetToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_controlResourceSetToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_controlResourceSetToReleaseList_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_searchSpacesToAddModList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SearchSpace,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_searchSpacesToAddModList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_searchSpacesToAddModList_specs_6 = {
+       sizeof(struct PDCCH_Config__searchSpacesToAddModList),
+       offsetof(struct PDCCH_Config__searchSpacesToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_searchSpacesToAddModList_6 = {
+       "searchSpacesToAddModList",
+       "searchSpacesToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_searchSpacesToAddModList_tags_6,
+       sizeof(asn_DEF_searchSpacesToAddModList_tags_6)
+               /sizeof(asn_DEF_searchSpacesToAddModList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_searchSpacesToAddModList_tags_6,        /* Same as above */
+       sizeof(asn_DEF_searchSpacesToAddModList_tags_6)
+               /sizeof(asn_DEF_searchSpacesToAddModList_tags_6[0]), /* 2 */
+       { &asn_OER_type_searchSpacesToAddModList_constr_6, &asn_PER_type_searchSpacesToAddModList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_searchSpacesToAddModList_6,
+       1,      /* Single element */
+       &asn_SPC_searchSpacesToAddModList_specs_6       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_searchSpacesToReleaseList_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_searchSpacesToReleaseList_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_searchSpacesToReleaseList_specs_8 = {
+       sizeof(struct PDCCH_Config__searchSpacesToReleaseList),
+       offsetof(struct PDCCH_Config__searchSpacesToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_searchSpacesToReleaseList_8 = {
+       "searchSpacesToReleaseList",
+       "searchSpacesToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_searchSpacesToReleaseList_tags_8,
+       sizeof(asn_DEF_searchSpacesToReleaseList_tags_8)
+               /sizeof(asn_DEF_searchSpacesToReleaseList_tags_8[0]) - 1, /* 1 */
+       asn_DEF_searchSpacesToReleaseList_tags_8,       /* Same as above */
+       sizeof(asn_DEF_searchSpacesToReleaseList_tags_8)
+               /sizeof(asn_DEF_searchSpacesToReleaseList_tags_8[0]), /* 2 */
+       { &asn_OER_type_searchSpacesToReleaseList_constr_8, &asn_PER_type_searchSpacesToReleaseList_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_searchSpacesToReleaseList_8,
+       1,      /* Single element */
+       &asn_SPC_searchSpacesToReleaseList_specs_8      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_downlinkPreemption_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_Config__downlinkPreemption, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCCH_Config__downlinkPreemption, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DownlinkPreemption,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_downlinkPreemption_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_downlinkPreemption_specs_10 = {
+       sizeof(struct PDCCH_Config__downlinkPreemption),
+       offsetof(struct PDCCH_Config__downlinkPreemption, _asn_ctx),
+       offsetof(struct PDCCH_Config__downlinkPreemption, present),
+       sizeof(((struct PDCCH_Config__downlinkPreemption *)0)->present),
+       asn_MAP_downlinkPreemption_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_downlinkPreemption_10 = {
+       "downlinkPreemption",
+       "downlinkPreemption",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_downlinkPreemption_constr_10, &asn_PER_type_downlinkPreemption_constr_10, CHOICE_constraint },
+       asn_MBR_downlinkPreemption_10,
+       2,      /* Elements count */
+       &asn_SPC_downlinkPreemption_specs_10    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tpc_PUSCH_13[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_Config__tpc_PUSCH, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCCH_Config__tpc_PUSCH, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_TPC_CommandConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_tpc_PUSCH_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_tpc_PUSCH_specs_13 = {
+       sizeof(struct PDCCH_Config__tpc_PUSCH),
+       offsetof(struct PDCCH_Config__tpc_PUSCH, _asn_ctx),
+       offsetof(struct PDCCH_Config__tpc_PUSCH, present),
+       sizeof(((struct PDCCH_Config__tpc_PUSCH *)0)->present),
+       asn_MAP_tpc_PUSCH_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_PUSCH_13 = {
+       "tpc-PUSCH",
+       "tpc-PUSCH",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_tpc_PUSCH_constr_13, &asn_PER_type_tpc_PUSCH_constr_13, CHOICE_constraint },
+       asn_MBR_tpc_PUSCH_13,
+       2,      /* Elements count */
+       &asn_SPC_tpc_PUSCH_specs_13     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tpc_PUCCH_16[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_Config__tpc_PUCCH, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCCH_Config__tpc_PUCCH, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_TPC_CommandConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_tpc_PUCCH_tag2el_16[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_tpc_PUCCH_specs_16 = {
+       sizeof(struct PDCCH_Config__tpc_PUCCH),
+       offsetof(struct PDCCH_Config__tpc_PUCCH, _asn_ctx),
+       offsetof(struct PDCCH_Config__tpc_PUCCH, present),
+       sizeof(((struct PDCCH_Config__tpc_PUCCH *)0)->present),
+       asn_MAP_tpc_PUCCH_tag2el_16,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_PUCCH_16 = {
+       "tpc-PUCCH",
+       "tpc-PUCCH",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_tpc_PUCCH_constr_16, &asn_PER_type_tpc_PUCCH_constr_16, CHOICE_constraint },
+       asn_MBR_tpc_PUCCH_16,
+       2,      /* Elements count */
+       &asn_SPC_tpc_PUCCH_specs_16     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tpc_SRS_19[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_Config__tpc_SRS, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCCH_Config__tpc_SRS, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_TPC_CommandConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_tpc_SRS_tag2el_19[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_tpc_SRS_specs_19 = {
+       sizeof(struct PDCCH_Config__tpc_SRS),
+       offsetof(struct PDCCH_Config__tpc_SRS, _asn_ctx),
+       offsetof(struct PDCCH_Config__tpc_SRS, present),
+       sizeof(((struct PDCCH_Config__tpc_SRS *)0)->present),
+       asn_MAP_tpc_SRS_tag2el_19,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_SRS_19 = {
+       "tpc-SRS",
+       "tpc-SRS",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_tpc_SRS_constr_19, &asn_PER_type_tpc_SRS_constr_19, CHOICE_constraint },
+       asn_MBR_tpc_SRS_19,
+       2,      /* Elements count */
+       &asn_SPC_tpc_SRS_specs_19       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCCH_Config_1[] = {
+       { ATF_POINTER, 8, offsetof(struct PDCCH_Config, controlResourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_controlResourceSetToAddModList_2,
+               0,
+               { &asn_OER_memb_controlResourceSetToAddModList_constr_2, &asn_PER_memb_controlResourceSetToAddModList_constr_2,  memb_controlResourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "controlResourceSetToAddModList"
+               },
+       { ATF_POINTER, 7, offsetof(struct PDCCH_Config, controlResourceSetToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_controlResourceSetToReleaseList_4,
+               0,
+               { &asn_OER_memb_controlResourceSetToReleaseList_constr_4, &asn_PER_memb_controlResourceSetToReleaseList_constr_4,  memb_controlResourceSetToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "controlResourceSetToReleaseList"
+               },
+       { ATF_POINTER, 6, offsetof(struct PDCCH_Config, searchSpacesToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_searchSpacesToAddModList_6,
+               0,
+               { &asn_OER_memb_searchSpacesToAddModList_constr_6, &asn_PER_memb_searchSpacesToAddModList_constr_6,  memb_searchSpacesToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "searchSpacesToAddModList"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDCCH_Config, searchSpacesToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_searchSpacesToReleaseList_8,
+               0,
+               { &asn_OER_memb_searchSpacesToReleaseList_constr_8, &asn_PER_memb_searchSpacesToReleaseList_constr_8,  memb_searchSpacesToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "searchSpacesToReleaseList"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDCCH_Config, downlinkPreemption),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_downlinkPreemption_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkPreemption"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDCCH_Config, tpc_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_tpc_PUSCH_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUSCH"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCCH_Config, tpc_PUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_tpc_PUCCH_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUCCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCCH_Config, tpc_SRS),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_tpc_SRS_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-SRS"
+               },
+};
+static const int asn_MAP_PDCCH_Config_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_PDCCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* controlResourceSetToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* searchSpacesToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* searchSpacesToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* downlinkPreemption */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* tpc-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tpc-PUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* tpc-SRS */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCCH_Config_specs_1 = {
+       sizeof(struct PDCCH_Config),
+       offsetof(struct PDCCH_Config, _asn_ctx),
+       asn_MAP_PDCCH_Config_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_PDCCH_Config_oms_1,     /* Optional members */
+       8, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCCH_Config = {
+       "PDCCH-Config",
+       "PDCCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCCH_Config_tags_1,
+       sizeof(asn_DEF_PDCCH_Config_tags_1)
+               /sizeof(asn_DEF_PDCCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_PDCCH_Config_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PDCCH_Config_tags_1)
+               /sizeof(asn_DEF_PDCCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCCH_Config_1,
+       8,      /* Elements count */
+       &asn_SPC_PDCCH_Config_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCCH-Config.h b/src/codec_utils/RRC/PDCCH-Config.h
new file mode 100644 (file)
index 0000000..18b0f50
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCCH_Config_H_
+#define        _PDCCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "ControlResourceSetId.h"
+#include "SearchSpaceId.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDCCH_Config__downlinkPreemption_PR {
+       PDCCH_Config__downlinkPreemption_PR_NOTHING,    /* No components present */
+       PDCCH_Config__downlinkPreemption_PR_release,
+       PDCCH_Config__downlinkPreemption_PR_setup
+} PDCCH_Config__downlinkPreemption_PR;
+typedef enum PDCCH_Config__tpc_PUSCH_PR {
+       PDCCH_Config__tpc_PUSCH_PR_NOTHING,     /* No components present */
+       PDCCH_Config__tpc_PUSCH_PR_release,
+       PDCCH_Config__tpc_PUSCH_PR_setup
+} PDCCH_Config__tpc_PUSCH_PR;
+typedef enum PDCCH_Config__tpc_PUCCH_PR {
+       PDCCH_Config__tpc_PUCCH_PR_NOTHING,     /* No components present */
+       PDCCH_Config__tpc_PUCCH_PR_release,
+       PDCCH_Config__tpc_PUCCH_PR_setup
+} PDCCH_Config__tpc_PUCCH_PR;
+typedef enum PDCCH_Config__tpc_SRS_PR {
+       PDCCH_Config__tpc_SRS_PR_NOTHING,       /* No components present */
+       PDCCH_Config__tpc_SRS_PR_release,
+       PDCCH_Config__tpc_SRS_PR_setup
+} PDCCH_Config__tpc_SRS_PR;
+
+/* Forward declarations */
+struct ControlResourceSet;
+struct SearchSpace;
+struct DownlinkPreemption;
+struct PUSCH_TPC_CommandConfig;
+struct PUCCH_TPC_CommandConfig;
+struct SRS_TPC_CommandConfig;
+
+/* PDCCH-Config */
+typedef struct PDCCH_Config {
+       struct PDCCH_Config__controlResourceSetToAddModList {
+               A_SEQUENCE_OF(struct ControlResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *controlResourceSetToAddModList;
+       struct PDCCH_Config__controlResourceSetToReleaseList {
+               A_SEQUENCE_OF(ControlResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *controlResourceSetToReleaseList;
+       struct PDCCH_Config__searchSpacesToAddModList {
+               A_SEQUENCE_OF(struct SearchSpace) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *searchSpacesToAddModList;
+       struct PDCCH_Config__searchSpacesToReleaseList {
+               A_SEQUENCE_OF(SearchSpaceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *searchSpacesToReleaseList;
+       struct PDCCH_Config__downlinkPreemption {
+               PDCCH_Config__downlinkPreemption_PR present;
+               union PDCCH_Config__downlinkPreemption_u {
+                       NULL_t   release;
+                       struct DownlinkPreemption       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *downlinkPreemption;
+       struct PDCCH_Config__tpc_PUSCH {
+               PDCCH_Config__tpc_PUSCH_PR present;
+               union PDCCH_Config__tpc_PUSCH_u {
+                       NULL_t   release;
+                       struct PUSCH_TPC_CommandConfig  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tpc_PUSCH;
+       struct PDCCH_Config__tpc_PUCCH {
+               PDCCH_Config__tpc_PUCCH_PR present;
+               union PDCCH_Config__tpc_PUCCH_u {
+                       NULL_t   release;
+                       struct PUCCH_TPC_CommandConfig  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tpc_PUCCH;
+       struct PDCCH_Config__tpc_SRS {
+               PDCCH_Config__tpc_SRS_PR present;
+               union PDCCH_Config__tpc_SRS_u {
+                       NULL_t   release;
+                       struct SRS_TPC_CommandConfig    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tpc_SRS;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCCH_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDCCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCCH_Config_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCCH-ConfigCommon.c b/src/codec_utils/RRC/PDCCH-ConfigCommon.c
new file mode 100644 (file)
index 0000000..a8e6d47
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCCH-ConfigCommon.h"
+
+#include "ControlResourceSet.h"
+#include "SearchSpace.h"
+static int
+memb_commonSearchSpaceList_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 <= 4)) {
+               /* 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_commonSearchSpaceList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_commonSearchSpaceList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_commonSearchSpaceList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_commonSearchSpaceList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_commonSearchSpaceList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SearchSpace,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_commonSearchSpaceList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_commonSearchSpaceList_specs_5 = {
+       sizeof(struct PDCCH_ConfigCommon__commonSearchSpaceList),
+       offsetof(struct PDCCH_ConfigCommon__commonSearchSpaceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_commonSearchSpaceList_5 = {
+       "commonSearchSpaceList",
+       "commonSearchSpaceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_commonSearchSpaceList_tags_5,
+       sizeof(asn_DEF_commonSearchSpaceList_tags_5)
+               /sizeof(asn_DEF_commonSearchSpaceList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_commonSearchSpaceList_tags_5,   /* Same as above */
+       sizeof(asn_DEF_commonSearchSpaceList_tags_5)
+               /sizeof(asn_DEF_commonSearchSpaceList_tags_5[0]), /* 2 */
+       { &asn_OER_type_commonSearchSpaceList_constr_5, &asn_PER_type_commonSearchSpaceList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_commonSearchSpaceList_5,
+       1,      /* Single element */
+       &asn_SPC_commonSearchSpaceList_specs_5  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCCH_ConfigCommon_1[] = {
+       { ATF_POINTER, 8, offsetof(struct PDCCH_ConfigCommon, controlResourceSetZero),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSetZero,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "controlResourceSetZero"
+               },
+       { ATF_POINTER, 7, offsetof(struct PDCCH_ConfigCommon, commonControlResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "commonControlResourceSet"
+               },
+       { ATF_POINTER, 6, offsetof(struct PDCCH_ConfigCommon, searchSpaceZero),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceZero,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceZero"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDCCH_ConfigCommon, commonSearchSpaceList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_commonSearchSpaceList_5,
+               0,
+               { &asn_OER_memb_commonSearchSpaceList_constr_5, &asn_PER_memb_commonSearchSpaceList_constr_5,  memb_commonSearchSpaceList_constraint_1 },
+               0, 0, /* No default value */
+               "commonSearchSpaceList"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDCCH_ConfigCommon, searchSpaceSIB1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceSIB1"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDCCH_ConfigCommon, searchSpaceOtherSystemInformation),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceOtherSystemInformation"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCCH_ConfigCommon, pagingSearchSpace),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pagingSearchSpace"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCCH_ConfigCommon, ra_SearchSpace),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-SearchSpace"
+               },
+};
+static const int asn_MAP_PDCCH_ConfigCommon_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_PDCCH_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCCH_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetZero */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* commonControlResourceSet */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* searchSpaceZero */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* commonSearchSpaceList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* searchSpaceSIB1 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* searchSpaceOtherSystemInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* pagingSearchSpace */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ra-SearchSpace */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigCommon_specs_1 = {
+       sizeof(struct PDCCH_ConfigCommon),
+       offsetof(struct PDCCH_ConfigCommon, _asn_ctx),
+       asn_MAP_PDCCH_ConfigCommon_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_PDCCH_ConfigCommon_oms_1,       /* Optional members */
+       8, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigCommon = {
+       "PDCCH-ConfigCommon",
+       "PDCCH-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCCH_ConfigCommon_tags_1,
+       sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_PDCCH_ConfigCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCCH_ConfigCommon_1,
+       8,      /* Elements count */
+       &asn_SPC_PDCCH_ConfigCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCCH-ConfigCommon.h b/src/codec_utils/RRC/PDCCH-ConfigCommon.h
new file mode 100644 (file)
index 0000000..c3fd02d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCCH_ConfigCommon_H_
+#define        _PDCCH_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ControlResourceSetZero.h"
+#include "SearchSpaceZero.h"
+#include "SearchSpaceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ControlResourceSet;
+struct SearchSpace;
+
+/* PDCCH-ConfigCommon */
+typedef struct PDCCH_ConfigCommon {
+       ControlResourceSetZero_t        *controlResourceSetZero;        /* OPTIONAL */
+       struct ControlResourceSet       *commonControlResourceSet;      /* OPTIONAL */
+       SearchSpaceZero_t       *searchSpaceZero;       /* OPTIONAL */
+       struct PDCCH_ConfigCommon__commonSearchSpaceList {
+               A_SEQUENCE_OF(struct SearchSpace) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *commonSearchSpaceList;
+       SearchSpaceId_t *searchSpaceSIB1;       /* OPTIONAL */
+       SearchSpaceId_t *searchSpaceOtherSystemInformation;     /* OPTIONAL */
+       SearchSpaceId_t *pagingSearchSpace;     /* OPTIONAL */
+       SearchSpaceId_t *ra_SearchSpace;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCCH_ConfigCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCCH_ConfigCommon_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCCH_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCCH-ConfigSIB1.c b/src/codec_utils/RRC/PDCCH-ConfigSIB1.c
new file mode 100644 (file)
index 0000000..f79f4e5
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCCH-ConfigSIB1.h"
+
+asn_TYPE_member_t asn_MBR_PDCCH_ConfigSIB1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_ConfigSIB1, controlResourceSetZero),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSetZero,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "controlResourceSetZero"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_ConfigSIB1, searchSpaceZero),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceZero,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceZero"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PDCCH_ConfigSIB1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCCH_ConfigSIB1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetZero */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* searchSpaceZero */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigSIB1_specs_1 = {
+       sizeof(struct PDCCH_ConfigSIB1),
+       offsetof(struct PDCCH_ConfigSIB1, _asn_ctx),
+       asn_MAP_PDCCH_ConfigSIB1_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigSIB1 = {
+       "PDCCH-ConfigSIB1",
+       "PDCCH-ConfigSIB1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCCH_ConfigSIB1_tags_1,
+       sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1)
+               /sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1[0]), /* 1 */
+       asn_DEF_PDCCH_ConfigSIB1_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1)
+               /sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCCH_ConfigSIB1_1,
+       2,      /* Elements count */
+       &asn_SPC_PDCCH_ConfigSIB1_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCCH-ConfigSIB1.h b/src/codec_utils/RRC/PDCCH-ConfigSIB1.h
new file mode 100644 (file)
index 0000000..a92c2ee
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCCH_ConfigSIB1_H_
+#define        _PDCCH_ConfigSIB1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ControlResourceSetZero.h"
+#include "SearchSpaceZero.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PDCCH-ConfigSIB1 */
+typedef struct PDCCH_ConfigSIB1 {
+       ControlResourceSetZero_t         controlResourceSetZero;
+       SearchSpaceZero_t        searchSpaceZero;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCCH_ConfigSIB1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigSIB1;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigSIB1_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCCH_ConfigSIB1_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCCH_ConfigSIB1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCCH-ServingCellConfig.c b/src/codec_utils/RRC/PDCCH-ServingCellConfig.c
new file mode 100644 (file)
index 0000000..c04a12f
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCCH-ServingCellConfig.h"
+
+#include "SlotFormatIndicator.h"
+static asn_oer_constraints_t asn_OER_type_slotFormatIndicator_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_slotFormatIndicator_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_slotFormatIndicator_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_ServingCellConfig__slotFormatIndicator, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCCH_ServingCellConfig__slotFormatIndicator, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SlotFormatIndicator,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_slotFormatIndicator_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_slotFormatIndicator_specs_2 = {
+       sizeof(struct PDCCH_ServingCellConfig__slotFormatIndicator),
+       offsetof(struct PDCCH_ServingCellConfig__slotFormatIndicator, _asn_ctx),
+       offsetof(struct PDCCH_ServingCellConfig__slotFormatIndicator, present),
+       sizeof(((struct PDCCH_ServingCellConfig__slotFormatIndicator *)0)->present),
+       asn_MAP_slotFormatIndicator_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotFormatIndicator_2 = {
+       "slotFormatIndicator",
+       "slotFormatIndicator",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_slotFormatIndicator_constr_2, &asn_PER_type_slotFormatIndicator_constr_2, CHOICE_constraint },
+       asn_MBR_slotFormatIndicator_2,
+       2,      /* Elements count */
+       &asn_SPC_slotFormatIndicator_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCCH_ServingCellConfig_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PDCCH_ServingCellConfig, slotFormatIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_slotFormatIndicator_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "slotFormatIndicator"
+               },
+};
+static const int asn_MAP_PDCCH_ServingCellConfig_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PDCCH_ServingCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCCH_ServingCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* slotFormatIndicator */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ServingCellConfig_specs_1 = {
+       sizeof(struct PDCCH_ServingCellConfig),
+       offsetof(struct PDCCH_ServingCellConfig, _asn_ctx),
+       asn_MAP_PDCCH_ServingCellConfig_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_PDCCH_ServingCellConfig_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCCH_ServingCellConfig = {
+       "PDCCH-ServingCellConfig",
+       "PDCCH-ServingCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCCH_ServingCellConfig_tags_1,
+       sizeof(asn_DEF_PDCCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PDCCH_ServingCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_PDCCH_ServingCellConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PDCCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PDCCH_ServingCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCCH_ServingCellConfig_1,
+       1,      /* Elements count */
+       &asn_SPC_PDCCH_ServingCellConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCCH-ServingCellConfig.h b/src/codec_utils/RRC/PDCCH-ServingCellConfig.h
new file mode 100644 (file)
index 0000000..c8ebdf4
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCCH_ServingCellConfig_H_
+#define        _PDCCH_ServingCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDCCH_ServingCellConfig__slotFormatIndicator_PR {
+       PDCCH_ServingCellConfig__slotFormatIndicator_PR_NOTHING,        /* No components present */
+       PDCCH_ServingCellConfig__slotFormatIndicator_PR_release,
+       PDCCH_ServingCellConfig__slotFormatIndicator_PR_setup
+} PDCCH_ServingCellConfig__slotFormatIndicator_PR;
+
+/* Forward declarations */
+struct SlotFormatIndicator;
+
+/* PDCCH-ServingCellConfig */
+typedef struct PDCCH_ServingCellConfig {
+       struct PDCCH_ServingCellConfig__slotFormatIndicator {
+               PDCCH_ServingCellConfig__slotFormatIndicator_PR present;
+               union PDCCH_ServingCellConfig__slotFormatIndicator_u {
+                       NULL_t   release;
+                       struct SlotFormatIndicator      *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotFormatIndicator;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCCH_ServingCellConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDCCH_ServingCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ServingCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCCH_ServingCellConfig_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCCH_ServingCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCP-Config.c b/src/codec_utils/RRC/PDCP-Config.c
new file mode 100644 (file)
index 0000000..c4014f1
--- /dev/null
@@ -0,0 +1,1457 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCP-Config.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.
+ */
+static int
+memb_maxCID_constraint_28(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 <= 16383)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_maxCID_constraint_42(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 <= 16383)) {
+               /* 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 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_discardTimer_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_discardTimer_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pdcp_SN_SizeUL_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_SN_SizeUL_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcp_SN_SizeDL_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_SN_SizeDL_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_drb_ContinueROHC_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drb_ContinueROHC_constr_40 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxCID_constr_29 CC_NOTUSED = {
+       { 2, 1 }        /* (1..16383) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxCID_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  1,  16383 }  /* (1..16383) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_drb_ContinueROHC_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_drb_ContinueROHC_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxCID_constr_43 CC_NOTUSED = {
+       { 2, 1 }        /* (1..16383) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxCID_constr_43 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  1,  16383 }  /* (1..16383) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_headerCompression_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_headerCompression_constr_26 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_oer_constraints_t asn_OER_type_integrityProtection_constr_49 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_integrityProtection_constr_49 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_statusReportRequired_constr_51 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_statusReportRequired_constr_51 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_outOfOrderDelivery_constr_53 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_outOfOrderDelivery_constr_53 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_t_Reordering_constr_61 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t_Reordering_constr_61 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cipheringDisabled_constr_128 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cipheringDisabled_constr_128 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_discardTimer_value2enum_3[] = {
+       { 0,    4,      "ms10" },
+       { 1,    4,      "ms20" },
+       { 2,    4,      "ms30" },
+       { 3,    4,      "ms40" },
+       { 4,    4,      "ms50" },
+       { 5,    4,      "ms60" },
+       { 6,    4,      "ms75" },
+       { 7,    5,      "ms100" },
+       { 8,    5,      "ms150" },
+       { 9,    5,      "ms200" },
+       { 10,   5,      "ms250" },
+       { 11,   5,      "ms300" },
+       { 12,   5,      "ms500" },
+       { 13,   5,      "ms750" },
+       { 14,   6,      "ms1500" },
+       { 15,   8,      "infinity" }
+};
+static const unsigned int asn_MAP_discardTimer_enum2value_3[] = {
+       15,     /* infinity(15) */
+       0,      /* ms10(0) */
+       7,      /* ms100(7) */
+       8,      /* ms150(8) */
+       14,     /* ms1500(14) */
+       1,      /* ms20(1) */
+       9,      /* ms200(9) */
+       10,     /* ms250(10) */
+       2,      /* ms30(2) */
+       11,     /* ms300(11) */
+       3,      /* ms40(3) */
+       4,      /* ms50(4) */
+       12,     /* ms500(12) */
+       5,      /* ms60(5) */
+       6,      /* ms75(6) */
+       13      /* ms750(13) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_discardTimer_specs_3 = {
+       asn_MAP_discardTimer_value2enum_3,      /* "tag" => N; sorted by tag */
+       asn_MAP_discardTimer_enum2value_3,      /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_discardTimer_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_discardTimer_3 = {
+       "discardTimer",
+       "discardTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_discardTimer_tags_3,
+       sizeof(asn_DEF_discardTimer_tags_3)
+               /sizeof(asn_DEF_discardTimer_tags_3[0]) - 1, /* 1 */
+       asn_DEF_discardTimer_tags_3,    /* Same as above */
+       sizeof(asn_DEF_discardTimer_tags_3)
+               /sizeof(asn_DEF_discardTimer_tags_3[0]), /* 2 */
+       { &asn_OER_type_discardTimer_constr_3, &asn_PER_type_discardTimer_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_discardTimer_specs_3   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcp_SN_SizeUL_value2enum_20[] = {
+       { 0,    9,      "len12bits" },
+       { 1,    9,      "len18bits" }
+};
+static const unsigned int asn_MAP_pdcp_SN_SizeUL_enum2value_20[] = {
+       0,      /* len12bits(0) */
+       1       /* len18bits(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_SN_SizeUL_specs_20 = {
+       asn_MAP_pdcp_SN_SizeUL_value2enum_20,   /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_SN_SizeUL_enum2value_20,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_SN_SizeUL_tags_20[] = {
+       (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_pdcp_SN_SizeUL_20 = {
+       "pdcp-SN-SizeUL",
+       "pdcp-SN-SizeUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_SN_SizeUL_tags_20,
+       sizeof(asn_DEF_pdcp_SN_SizeUL_tags_20)
+               /sizeof(asn_DEF_pdcp_SN_SizeUL_tags_20[0]) - 1, /* 1 */
+       asn_DEF_pdcp_SN_SizeUL_tags_20, /* Same as above */
+       sizeof(asn_DEF_pdcp_SN_SizeUL_tags_20)
+               /sizeof(asn_DEF_pdcp_SN_SizeUL_tags_20[0]), /* 2 */
+       { &asn_OER_type_pdcp_SN_SizeUL_constr_20, &asn_PER_type_pdcp_SN_SizeUL_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_SN_SizeUL_specs_20        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcp_SN_SizeDL_value2enum_23[] = {
+       { 0,    9,      "len12bits" },
+       { 1,    9,      "len18bits" }
+};
+static const unsigned int asn_MAP_pdcp_SN_SizeDL_enum2value_23[] = {
+       0,      /* len12bits(0) */
+       1       /* len18bits(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_SN_SizeDL_specs_23 = {
+       asn_MAP_pdcp_SN_SizeDL_value2enum_23,   /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_SN_SizeDL_enum2value_23,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_SN_SizeDL_tags_23[] = {
+       (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_pdcp_SN_SizeDL_23 = {
+       "pdcp-SN-SizeDL",
+       "pdcp-SN-SizeDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_SN_SizeDL_tags_23,
+       sizeof(asn_DEF_pdcp_SN_SizeDL_tags_23)
+               /sizeof(asn_DEF_pdcp_SN_SizeDL_tags_23[0]) - 1, /* 1 */
+       asn_DEF_pdcp_SN_SizeDL_tags_23, /* Same as above */
+       sizeof(asn_DEF_pdcp_SN_SizeDL_tags_23)
+               /sizeof(asn_DEF_pdcp_SN_SizeDL_tags_23[0]), /* 2 */
+       { &asn_OER_type_pdcp_SN_SizeDL_constr_23, &asn_PER_type_pdcp_SN_SizeDL_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_SN_SizeDL_specs_23        /* Additional specs */
+};
+
+static int asn_DFL_29_cmp_15(const void *sptr) {
+       const long *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_29_set_15(void **sptr) {
+       long *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static asn_TYPE_member_t asn_MBR_profiles_30[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0001),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0001"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0002),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0002"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0003),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0003"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0004),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0004"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0006),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0006"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0101),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0101"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0102),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0102"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0103),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0103"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, profile0x0104),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0104"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_profiles_tags_30[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_profiles_tag2el_30[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* profile0x0001 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* profile0x0002 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* profile0x0003 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* profile0x0004 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* profile0x0006 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* profile0x0101 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* profile0x0102 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* profile0x0103 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* profile0x0104 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_profiles_specs_30 = {
+       sizeof(struct PDCP_Config__drb__headerCompression__rohc__profiles),
+       offsetof(struct PDCP_Config__drb__headerCompression__rohc__profiles, _asn_ctx),
+       asn_MAP_profiles_tag2el_30,
+       9,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_profiles_30 = {
+       "profiles",
+       "profiles",
+       &asn_OP_SEQUENCE,
+       asn_DEF_profiles_tags_30,
+       sizeof(asn_DEF_profiles_tags_30)
+               /sizeof(asn_DEF_profiles_tags_30[0]) - 1, /* 1 */
+       asn_DEF_profiles_tags_30,       /* Same as above */
+       sizeof(asn_DEF_profiles_tags_30)
+               /sizeof(asn_DEF_profiles_tags_30[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_profiles_30,
+       9,      /* Elements count */
+       &asn_SPC_profiles_specs_30      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drb_ContinueROHC_value2enum_40[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_drb_ContinueROHC_enum2value_40[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drb_ContinueROHC_specs_40 = {
+       asn_MAP_drb_ContinueROHC_value2enum_40, /* "tag" => N; sorted by tag */
+       asn_MAP_drb_ContinueROHC_enum2value_40, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drb_ContinueROHC_tags_40[] = {
+       (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_drb_ContinueROHC_40 = {
+       "drb-ContinueROHC",
+       "drb-ContinueROHC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drb_ContinueROHC_tags_40,
+       sizeof(asn_DEF_drb_ContinueROHC_tags_40)
+               /sizeof(asn_DEF_drb_ContinueROHC_tags_40[0]) - 1, /* 1 */
+       asn_DEF_drb_ContinueROHC_tags_40,       /* Same as above */
+       sizeof(asn_DEF_drb_ContinueROHC_tags_40)
+               /sizeof(asn_DEF_drb_ContinueROHC_tags_40[0]), /* 2 */
+       { &asn_OER_type_drb_ContinueROHC_constr_40, &asn_PER_type_drb_ContinueROHC_constr_40, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drb_ContinueROHC_specs_40      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rohc_28[] = {
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb__headerCompression__rohc, maxCID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxCID_constr_29, &asn_PER_memb_maxCID_constr_29,  memb_maxCID_constraint_28 },
+               &asn_DFL_29_cmp_15,     /* Compare DEFAULT 15 */
+               &asn_DFL_29_set_15,     /* Set DEFAULT 15 */
+               "maxCID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__rohc, profiles),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_profiles_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profiles"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb__headerCompression__rohc, drb_ContinueROHC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drb_ContinueROHC_40,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-ContinueROHC"
+               },
+};
+static const int asn_MAP_rohc_oms_28[] = { 0, 2 };
+static const ber_tlv_tag_t asn_DEF_rohc_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_rohc_tag2el_28[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxCID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* profiles */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* drb-ContinueROHC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_rohc_specs_28 = {
+       sizeof(struct PDCP_Config__drb__headerCompression__rohc),
+       offsetof(struct PDCP_Config__drb__headerCompression__rohc, _asn_ctx),
+       asn_MAP_rohc_tag2el_28,
+       3,      /* Count of tags in the map */
+       asn_MAP_rohc_oms_28,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rohc_28 = {
+       "rohc",
+       "rohc",
+       &asn_OP_SEQUENCE,
+       asn_DEF_rohc_tags_28,
+       sizeof(asn_DEF_rohc_tags_28)
+               /sizeof(asn_DEF_rohc_tags_28[0]) - 1, /* 1 */
+       asn_DEF_rohc_tags_28,   /* Same as above */
+       sizeof(asn_DEF_rohc_tags_28)
+               /sizeof(asn_DEF_rohc_tags_28[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_rohc_28,
+       3,      /* Elements count */
+       &asn_SPC_rohc_specs_28  /* Additional specs */
+};
+
+static int asn_DFL_43_cmp_15(const void *sptr) {
+       const long *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_43_set_15(void **sptr) {
+       long *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static asn_TYPE_member_t asn_MBR_profiles_44[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC__profiles, profile0x0006),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0006"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_profiles_tags_44[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_profiles_tag2el_44[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* profile0x0006 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_profiles_specs_44 = {
+       sizeof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC__profiles),
+       offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC__profiles, _asn_ctx),
+       asn_MAP_profiles_tag2el_44,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_profiles_44 = {
+       "profiles",
+       "profiles",
+       &asn_OP_SEQUENCE,
+       asn_DEF_profiles_tags_44,
+       sizeof(asn_DEF_profiles_tags_44)
+               /sizeof(asn_DEF_profiles_tags_44[0]) - 1, /* 1 */
+       asn_DEF_profiles_tags_44,       /* Same as above */
+       sizeof(asn_DEF_profiles_tags_44)
+               /sizeof(asn_DEF_profiles_tags_44[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_profiles_44,
+       1,      /* Elements count */
+       &asn_SPC_profiles_specs_44      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_drb_ContinueROHC_value2enum_46[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_drb_ContinueROHC_enum2value_46[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_drb_ContinueROHC_specs_46 = {
+       asn_MAP_drb_ContinueROHC_value2enum_46, /* "tag" => N; sorted by tag */
+       asn_MAP_drb_ContinueROHC_enum2value_46, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_drb_ContinueROHC_tags_46[] = {
+       (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_drb_ContinueROHC_46 = {
+       "drb-ContinueROHC",
+       "drb-ContinueROHC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_drb_ContinueROHC_tags_46,
+       sizeof(asn_DEF_drb_ContinueROHC_tags_46)
+               /sizeof(asn_DEF_drb_ContinueROHC_tags_46[0]) - 1, /* 1 */
+       asn_DEF_drb_ContinueROHC_tags_46,       /* Same as above */
+       sizeof(asn_DEF_drb_ContinueROHC_tags_46)
+               /sizeof(asn_DEF_drb_ContinueROHC_tags_46[0]), /* 2 */
+       { &asn_OER_type_drb_ContinueROHC_constr_46, &asn_PER_type_drb_ContinueROHC_constr_46, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_drb_ContinueROHC_specs_46      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uplinkOnlyROHC_42[] = {
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC, maxCID),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxCID_constr_43, &asn_PER_memb_maxCID_constr_43,  memb_maxCID_constraint_42 },
+               &asn_DFL_43_cmp_15,     /* Compare DEFAULT 15 */
+               &asn_DFL_43_set_15,     /* Set DEFAULT 15 */
+               "maxCID"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC, profiles),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_profiles_44,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profiles"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC, drb_ContinueROHC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_drb_ContinueROHC_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-ContinueROHC"
+               },
+};
+static const int asn_MAP_uplinkOnlyROHC_oms_42[] = { 0, 2 };
+static const ber_tlv_tag_t asn_DEF_uplinkOnlyROHC_tags_42[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_uplinkOnlyROHC_tag2el_42[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxCID */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* profiles */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* drb-ContinueROHC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_uplinkOnlyROHC_specs_42 = {
+       sizeof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC),
+       offsetof(struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC, _asn_ctx),
+       asn_MAP_uplinkOnlyROHC_tag2el_42,
+       3,      /* Count of tags in the map */
+       asn_MAP_uplinkOnlyROHC_oms_42,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkOnlyROHC_42 = {
+       "uplinkOnlyROHC",
+       "uplinkOnlyROHC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_uplinkOnlyROHC_tags_42,
+       sizeof(asn_DEF_uplinkOnlyROHC_tags_42)
+               /sizeof(asn_DEF_uplinkOnlyROHC_tags_42[0]) - 1, /* 1 */
+       asn_DEF_uplinkOnlyROHC_tags_42, /* Same as above */
+       sizeof(asn_DEF_uplinkOnlyROHC_tags_42)
+               /sizeof(asn_DEF_uplinkOnlyROHC_tags_42[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_uplinkOnlyROHC_42,
+       3,      /* Elements count */
+       &asn_SPC_uplinkOnlyROHC_specs_42        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_headerCompression_26[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb__headerCompression, choice.notUsed),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "notUsed"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCP_Config__drb__headerCompression, choice.rohc),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rohc_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rohc"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDCP_Config__drb__headerCompression, choice.uplinkOnlyROHC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_uplinkOnlyROHC_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkOnlyROHC"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_headerCompression_tag2el_26[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* notUsed */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rohc */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* uplinkOnlyROHC */
+};
+static asn_CHOICE_specifics_t asn_SPC_headerCompression_specs_26 = {
+       sizeof(struct PDCP_Config__drb__headerCompression),
+       offsetof(struct PDCP_Config__drb__headerCompression, _asn_ctx),
+       offsetof(struct PDCP_Config__drb__headerCompression, present),
+       sizeof(((struct PDCP_Config__drb__headerCompression *)0)->present),
+       asn_MAP_headerCompression_tag2el_26,
+       3,      /* Count of tags in the map */
+       0, 0,
+       3       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_headerCompression_26 = {
+       "headerCompression",
+       "headerCompression",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_headerCompression_constr_26, &asn_PER_type_headerCompression_constr_26, CHOICE_constraint },
+       asn_MBR_headerCompression_26,
+       3,      /* Elements count */
+       &asn_SPC_headerCompression_specs_26     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_integrityProtection_value2enum_49[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_integrityProtection_enum2value_49[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_integrityProtection_specs_49 = {
+       asn_MAP_integrityProtection_value2enum_49,      /* "tag" => N; sorted by tag */
+       asn_MAP_integrityProtection_enum2value_49,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_integrityProtection_tags_49[] = {
+       (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_integrityProtection_49 = {
+       "integrityProtection",
+       "integrityProtection",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_integrityProtection_tags_49,
+       sizeof(asn_DEF_integrityProtection_tags_49)
+               /sizeof(asn_DEF_integrityProtection_tags_49[0]) - 1, /* 1 */
+       asn_DEF_integrityProtection_tags_49,    /* Same as above */
+       sizeof(asn_DEF_integrityProtection_tags_49)
+               /sizeof(asn_DEF_integrityProtection_tags_49[0]), /* 2 */
+       { &asn_OER_type_integrityProtection_constr_49, &asn_PER_type_integrityProtection_constr_49, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_integrityProtection_specs_49   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_statusReportRequired_value2enum_51[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_statusReportRequired_enum2value_51[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_statusReportRequired_specs_51 = {
+       asn_MAP_statusReportRequired_value2enum_51,     /* "tag" => N; sorted by tag */
+       asn_MAP_statusReportRequired_enum2value_51,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_statusReportRequired_tags_51[] = {
+       (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_statusReportRequired_51 = {
+       "statusReportRequired",
+       "statusReportRequired",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_statusReportRequired_tags_51,
+       sizeof(asn_DEF_statusReportRequired_tags_51)
+               /sizeof(asn_DEF_statusReportRequired_tags_51[0]) - 1, /* 1 */
+       asn_DEF_statusReportRequired_tags_51,   /* Same as above */
+       sizeof(asn_DEF_statusReportRequired_tags_51)
+               /sizeof(asn_DEF_statusReportRequired_tags_51[0]), /* 2 */
+       { &asn_OER_type_statusReportRequired_constr_51, &asn_PER_type_statusReportRequired_constr_51, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_statusReportRequired_specs_51  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_outOfOrderDelivery_value2enum_53[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_outOfOrderDelivery_enum2value_53[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_outOfOrderDelivery_specs_53 = {
+       asn_MAP_outOfOrderDelivery_value2enum_53,       /* "tag" => N; sorted by tag */
+       asn_MAP_outOfOrderDelivery_enum2value_53,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_outOfOrderDelivery_tags_53[] = {
+       (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_outOfOrderDelivery_53 = {
+       "outOfOrderDelivery",
+       "outOfOrderDelivery",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_outOfOrderDelivery_tags_53,
+       sizeof(asn_DEF_outOfOrderDelivery_tags_53)
+               /sizeof(asn_DEF_outOfOrderDelivery_tags_53[0]) - 1, /* 1 */
+       asn_DEF_outOfOrderDelivery_tags_53,     /* Same as above */
+       sizeof(asn_DEF_outOfOrderDelivery_tags_53)
+               /sizeof(asn_DEF_outOfOrderDelivery_tags_53[0]), /* 2 */
+       { &asn_OER_type_outOfOrderDelivery_constr_53, &asn_PER_type_outOfOrderDelivery_constr_53, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_outOfOrderDelivery_specs_53    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_drb_2[] = {
+       { ATF_POINTER, 3, offsetof(struct PDCP_Config__drb, discardTimer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_discardTimer_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "discardTimer"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCP_Config__drb, pdcp_SN_SizeUL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_SN_SizeUL_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-SN-SizeUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb, pdcp_SN_SizeDL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_SN_SizeDL_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-SN-SizeDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__drb, headerCompression),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_headerCompression_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "headerCompression"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDCP_Config__drb, integrityProtection),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_integrityProtection_49,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "integrityProtection"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCP_Config__drb, statusReportRequired),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_statusReportRequired_51,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "statusReportRequired"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__drb, outOfOrderDelivery),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_outOfOrderDelivery_53,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "outOfOrderDelivery"
+               },
+};
+static const int asn_MAP_drb_oms_2[] = { 0, 1, 2, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_drb_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_drb_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* discardTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pdcp-SN-SizeUL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pdcp-SN-SizeDL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* headerCompression */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* integrityProtection */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* statusReportRequired */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* outOfOrderDelivery */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_drb_specs_2 = {
+       sizeof(struct PDCP_Config__drb),
+       offsetof(struct PDCP_Config__drb, _asn_ctx),
+       asn_MAP_drb_tag2el_2,
+       7,      /* Count of tags in the map */
+       asn_MAP_drb_oms_2,      /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_drb_2 = {
+       "drb",
+       "drb",
+       &asn_OP_SEQUENCE,
+       asn_DEF_drb_tags_2,
+       sizeof(asn_DEF_drb_tags_2)
+               /sizeof(asn_DEF_drb_tags_2[0]) - 1, /* 1 */
+       asn_DEF_drb_tags_2,     /* Same as above */
+       sizeof(asn_DEF_drb_tags_2)
+               /sizeof(asn_DEF_drb_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_drb_2,
+       7,      /* Elements count */
+       &asn_SPC_drb_specs_2    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_primaryPath_56[] = {
+       { ATF_POINTER, 2, offsetof(struct PDCP_Config__moreThanOneRLC__primaryPath, cellGroup),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellGroupId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellGroup"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__moreThanOneRLC__primaryPath, logicalChannel),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalChannelIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannel"
+               },
+};
+static const int asn_MAP_primaryPath_oms_56[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_primaryPath_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_primaryPath_tag2el_56[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* logicalChannel */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_primaryPath_specs_56 = {
+       sizeof(struct PDCP_Config__moreThanOneRLC__primaryPath),
+       offsetof(struct PDCP_Config__moreThanOneRLC__primaryPath, _asn_ctx),
+       asn_MAP_primaryPath_tag2el_56,
+       2,      /* Count of tags in the map */
+       asn_MAP_primaryPath_oms_56,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_primaryPath_56 = {
+       "primaryPath",
+       "primaryPath",
+       &asn_OP_SEQUENCE,
+       asn_DEF_primaryPath_tags_56,
+       sizeof(asn_DEF_primaryPath_tags_56)
+               /sizeof(asn_DEF_primaryPath_tags_56[0]) - 1, /* 1 */
+       asn_DEF_primaryPath_tags_56,    /* Same as above */
+       sizeof(asn_DEF_primaryPath_tags_56)
+               /sizeof(asn_DEF_primaryPath_tags_56[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_primaryPath_56,
+       2,      /* Elements count */
+       &asn_SPC_primaryPath_specs_56   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_moreThanOneRLC_55[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Config__moreThanOneRLC, primaryPath),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_primaryPath_56,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "primaryPath"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCP_Config__moreThanOneRLC, ul_DataSplitThreshold),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UL_DataSplitThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-DataSplitThreshold"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__moreThanOneRLC, pdcp_Duplication),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-Duplication"
+               },
+};
+static const int asn_MAP_moreThanOneRLC_oms_55[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_moreThanOneRLC_tags_55[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_moreThanOneRLC_tag2el_55[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* primaryPath */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ul-DataSplitThreshold */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pdcp-Duplication */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_moreThanOneRLC_specs_55 = {
+       sizeof(struct PDCP_Config__moreThanOneRLC),
+       offsetof(struct PDCP_Config__moreThanOneRLC, _asn_ctx),
+       asn_MAP_moreThanOneRLC_tag2el_55,
+       3,      /* Count of tags in the map */
+       asn_MAP_moreThanOneRLC_oms_55,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_moreThanOneRLC_55 = {
+       "moreThanOneRLC",
+       "moreThanOneRLC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_moreThanOneRLC_tags_55,
+       sizeof(asn_DEF_moreThanOneRLC_tags_55)
+               /sizeof(asn_DEF_moreThanOneRLC_tags_55[0]) - 1, /* 1 */
+       asn_DEF_moreThanOneRLC_tags_55, /* Same as above */
+       sizeof(asn_DEF_moreThanOneRLC_tags_55)
+               /sizeof(asn_DEF_moreThanOneRLC_tags_55[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_moreThanOneRLC_55,
+       3,      /* Elements count */
+       &asn_SPC_moreThanOneRLC_specs_55        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t_Reordering_value2enum_61[] = {
+       { 0,    3,      "ms0" },
+       { 1,    3,      "ms1" },
+       { 2,    3,      "ms2" },
+       { 3,    3,      "ms4" },
+       { 4,    3,      "ms5" },
+       { 5,    3,      "ms8" },
+       { 6,    4,      "ms10" },
+       { 7,    4,      "ms15" },
+       { 8,    4,      "ms20" },
+       { 9,    4,      "ms30" },
+       { 10,   4,      "ms40" },
+       { 11,   4,      "ms50" },
+       { 12,   4,      "ms60" },
+       { 13,   4,      "ms80" },
+       { 14,   5,      "ms100" },
+       { 15,   5,      "ms120" },
+       { 16,   5,      "ms140" },
+       { 17,   5,      "ms160" },
+       { 18,   5,      "ms180" },
+       { 19,   5,      "ms200" },
+       { 20,   5,      "ms220" },
+       { 21,   5,      "ms240" },
+       { 22,   5,      "ms260" },
+       { 23,   5,      "ms280" },
+       { 24,   5,      "ms300" },
+       { 25,   5,      "ms500" },
+       { 26,   5,      "ms750" },
+       { 27,   6,      "ms1000" },
+       { 28,   6,      "ms1250" },
+       { 29,   6,      "ms1500" },
+       { 30,   6,      "ms1750" },
+       { 31,   6,      "ms2000" },
+       { 32,   6,      "ms2250" },
+       { 33,   6,      "ms2500" },
+       { 34,   6,      "ms2750" },
+       { 35,   6,      "ms3000" },
+       { 36,   7,      "spare28" },
+       { 37,   7,      "spare27" },
+       { 38,   7,      "spare26" },
+       { 39,   7,      "spare25" },
+       { 40,   7,      "spare24" },
+       { 41,   7,      "spare23" },
+       { 42,   7,      "spare22" },
+       { 43,   7,      "spare21" },
+       { 44,   7,      "spare20" },
+       { 45,   7,      "spare19" },
+       { 46,   7,      "spare18" },
+       { 47,   7,      "spare17" },
+       { 48,   7,      "spare16" },
+       { 49,   7,      "spare15" },
+       { 50,   7,      "spare14" },
+       { 51,   7,      "spare13" },
+       { 52,   7,      "spare12" },
+       { 53,   7,      "spare11" },
+       { 54,   7,      "spare10" },
+       { 55,   7,      "spare09" },
+       { 56,   7,      "spare08" },
+       { 57,   7,      "spare07" },
+       { 58,   7,      "spare06" },
+       { 59,   7,      "spare05" },
+       { 60,   7,      "spare04" },
+       { 61,   7,      "spare03" },
+       { 62,   7,      "spare02" },
+       { 63,   7,      "spare01" }
+};
+static const unsigned int asn_MAP_t_Reordering_enum2value_61[] = {
+       0,      /* ms0(0) */
+       1,      /* ms1(1) */
+       6,      /* ms10(6) */
+       14,     /* ms100(14) */
+       27,     /* ms1000(27) */
+       15,     /* ms120(15) */
+       28,     /* ms1250(28) */
+       16,     /* ms140(16) */
+       7,      /* ms15(7) */
+       29,     /* ms1500(29) */
+       17,     /* ms160(17) */
+       30,     /* ms1750(30) */
+       18,     /* ms180(18) */
+       2,      /* ms2(2) */
+       8,      /* ms20(8) */
+       19,     /* ms200(19) */
+       31,     /* ms2000(31) */
+       20,     /* ms220(20) */
+       32,     /* ms2250(32) */
+       21,     /* ms240(21) */
+       33,     /* ms2500(33) */
+       22,     /* ms260(22) */
+       34,     /* ms2750(34) */
+       23,     /* ms280(23) */
+       9,      /* ms30(9) */
+       24,     /* ms300(24) */
+       35,     /* ms3000(35) */
+       3,      /* ms4(3) */
+       10,     /* ms40(10) */
+       4,      /* ms5(4) */
+       11,     /* ms50(11) */
+       25,     /* ms500(25) */
+       12,     /* ms60(12) */
+       26,     /* ms750(26) */
+       5,      /* ms8(5) */
+       13,     /* ms80(13) */
+       63,     /* spare01(63) */
+       62,     /* spare02(62) */
+       61,     /* spare03(61) */
+       60,     /* spare04(60) */
+       59,     /* spare05(59) */
+       58,     /* spare06(58) */
+       57,     /* spare07(57) */
+       56,     /* spare08(56) */
+       55,     /* spare09(55) */
+       54,     /* spare10(54) */
+       53,     /* spare11(53) */
+       52,     /* spare12(52) */
+       51,     /* spare13(51) */
+       50,     /* spare14(50) */
+       49,     /* spare15(49) */
+       48,     /* spare16(48) */
+       47,     /* spare17(47) */
+       46,     /* spare18(46) */
+       45,     /* spare19(45) */
+       44,     /* spare20(44) */
+       43,     /* spare21(43) */
+       42,     /* spare22(42) */
+       41,     /* spare23(41) */
+       40,     /* spare24(40) */
+       39,     /* spare25(39) */
+       38,     /* spare26(38) */
+       37,     /* spare27(37) */
+       36      /* spare28(36) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t_Reordering_specs_61 = {
+       asn_MAP_t_Reordering_value2enum_61,     /* "tag" => N; sorted by tag */
+       asn_MAP_t_Reordering_enum2value_61,     /* N => "tag"; sorted by N */
+       64,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t_Reordering_tags_61[] = {
+       (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_t_Reordering_61 = {
+       "t-Reordering",
+       "t-Reordering",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t_Reordering_tags_61,
+       sizeof(asn_DEF_t_Reordering_tags_61)
+               /sizeof(asn_DEF_t_Reordering_tags_61[0]) - 1, /* 1 */
+       asn_DEF_t_Reordering_tags_61,   /* Same as above */
+       sizeof(asn_DEF_t_Reordering_tags_61)
+               /sizeof(asn_DEF_t_Reordering_tags_61[0]), /* 2 */
+       { &asn_OER_type_t_Reordering_constr_61, &asn_PER_type_t_Reordering_constr_61, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t_Reordering_specs_61  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cipheringDisabled_value2enum_128[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_cipheringDisabled_enum2value_128[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cipheringDisabled_specs_128 = {
+       asn_MAP_cipheringDisabled_value2enum_128,       /* "tag" => N; sorted by tag */
+       asn_MAP_cipheringDisabled_enum2value_128,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cipheringDisabled_tags_128[] = {
+       (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_cipheringDisabled_128 = {
+       "cipheringDisabled",
+       "cipheringDisabled",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cipheringDisabled_tags_128,
+       sizeof(asn_DEF_cipheringDisabled_tags_128)
+               /sizeof(asn_DEF_cipheringDisabled_tags_128[0]) - 1, /* 1 */
+       asn_DEF_cipheringDisabled_tags_128,     /* Same as above */
+       sizeof(asn_DEF_cipheringDisabled_tags_128)
+               /sizeof(asn_DEF_cipheringDisabled_tags_128[0]), /* 2 */
+       { &asn_OER_type_cipheringDisabled_constr_128, &asn_PER_type_cipheringDisabled_constr_128, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cipheringDisabled_specs_128    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_127[] = {
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config__ext1, cipheringDisabled),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cipheringDisabled_128,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cipheringDisabled"
+               },
+};
+static const int asn_MAP_ext1_oms_127[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_127[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_127[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cipheringDisabled */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_127 = {
+       sizeof(struct PDCP_Config__ext1),
+       offsetof(struct PDCP_Config__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_127,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_127,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_127 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_127,
+       sizeof(asn_DEF_ext1_tags_127)
+               /sizeof(asn_DEF_ext1_tags_127[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_127,  /* Same as above */
+       sizeof(asn_DEF_ext1_tags_127)
+               /sizeof(asn_DEF_ext1_tags_127[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_127,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_127 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCP_Config_1[] = {
+       { ATF_POINTER, 4, offsetof(struct PDCP_Config, drb),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_drb_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDCP_Config, moreThanOneRLC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_moreThanOneRLC_55,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "moreThanOneRLC"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCP_Config, t_Reordering),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t_Reordering_61,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-Reordering"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Config, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_127,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_PDCP_Config_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PDCP_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCP_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* drb */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* moreThanOneRLC */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* t-Reordering */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCP_Config_specs_1 = {
+       sizeof(struct PDCP_Config),
+       offsetof(struct PDCP_Config, _asn_ctx),
+       asn_MAP_PDCP_Config_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PDCP_Config_oms_1,      /* Optional members */
+       3, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCP_Config = {
+       "PDCP-Config",
+       "PDCP-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCP_Config_tags_1,
+       sizeof(asn_DEF_PDCP_Config_tags_1)
+               /sizeof(asn_DEF_PDCP_Config_tags_1[0]), /* 1 */
+       asn_DEF_PDCP_Config_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PDCP_Config_tags_1)
+               /sizeof(asn_DEF_PDCP_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCP_Config_1,
+       4,      /* Elements count */
+       &asn_SPC_PDCP_Config_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCP-Config.h b/src/codec_utils/RRC/PDCP-Config.h
new file mode 100644 (file)
index 0000000..be793c6
--- /dev/null
@@ -0,0 +1,259 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCP_Config_H_
+#define        _PDCP_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+#include "UL-DataSplitThreshold.h"
+#include "CellGroupId.h"
+#include "LogicalChannelIdentity.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDCP_Config__drb__discardTimer {
+       PDCP_Config__drb__discardTimer_ms10     = 0,
+       PDCP_Config__drb__discardTimer_ms20     = 1,
+       PDCP_Config__drb__discardTimer_ms30     = 2,
+       PDCP_Config__drb__discardTimer_ms40     = 3,
+       PDCP_Config__drb__discardTimer_ms50     = 4,
+       PDCP_Config__drb__discardTimer_ms60     = 5,
+       PDCP_Config__drb__discardTimer_ms75     = 6,
+       PDCP_Config__drb__discardTimer_ms100    = 7,
+       PDCP_Config__drb__discardTimer_ms150    = 8,
+       PDCP_Config__drb__discardTimer_ms200    = 9,
+       PDCP_Config__drb__discardTimer_ms250    = 10,
+       PDCP_Config__drb__discardTimer_ms300    = 11,
+       PDCP_Config__drb__discardTimer_ms500    = 12,
+       PDCP_Config__drb__discardTimer_ms750    = 13,
+       PDCP_Config__drb__discardTimer_ms1500   = 14,
+       PDCP_Config__drb__discardTimer_infinity = 15
+} e_PDCP_Config__drb__discardTimer;
+typedef enum PDCP_Config__drb__pdcp_SN_SizeUL {
+       PDCP_Config__drb__pdcp_SN_SizeUL_len12bits      = 0,
+       PDCP_Config__drb__pdcp_SN_SizeUL_len18bits      = 1
+} e_PDCP_Config__drb__pdcp_SN_SizeUL;
+typedef enum PDCP_Config__drb__pdcp_SN_SizeDL {
+       PDCP_Config__drb__pdcp_SN_SizeDL_len12bits      = 0,
+       PDCP_Config__drb__pdcp_SN_SizeDL_len18bits      = 1
+} e_PDCP_Config__drb__pdcp_SN_SizeDL;
+typedef enum PDCP_Config__drb__headerCompression_PR {
+       PDCP_Config__drb__headerCompression_PR_NOTHING, /* No components present */
+       PDCP_Config__drb__headerCompression_PR_notUsed,
+       PDCP_Config__drb__headerCompression_PR_rohc,
+       PDCP_Config__drb__headerCompression_PR_uplinkOnlyROHC
+       /* Extensions may appear below */
+       
+} PDCP_Config__drb__headerCompression_PR;
+typedef enum PDCP_Config__drb__headerCompression__rohc__drb_ContinueROHC {
+       PDCP_Config__drb__headerCompression__rohc__drb_ContinueROHC_true        = 0
+} e_PDCP_Config__drb__headerCompression__rohc__drb_ContinueROHC;
+typedef enum PDCP_Config__drb__headerCompression__uplinkOnlyROHC__drb_ContinueROHC {
+       PDCP_Config__drb__headerCompression__uplinkOnlyROHC__drb_ContinueROHC_true      = 0
+} e_PDCP_Config__drb__headerCompression__uplinkOnlyROHC__drb_ContinueROHC;
+typedef enum PDCP_Config__drb__integrityProtection {
+       PDCP_Config__drb__integrityProtection_enabled   = 0
+} e_PDCP_Config__drb__integrityProtection;
+typedef enum PDCP_Config__drb__statusReportRequired {
+       PDCP_Config__drb__statusReportRequired_true     = 0
+} e_PDCP_Config__drb__statusReportRequired;
+typedef enum PDCP_Config__drb__outOfOrderDelivery {
+       PDCP_Config__drb__outOfOrderDelivery_true       = 0
+} e_PDCP_Config__drb__outOfOrderDelivery;
+typedef enum PDCP_Config__t_Reordering {
+       PDCP_Config__t_Reordering_ms0   = 0,
+       PDCP_Config__t_Reordering_ms1   = 1,
+       PDCP_Config__t_Reordering_ms2   = 2,
+       PDCP_Config__t_Reordering_ms4   = 3,
+       PDCP_Config__t_Reordering_ms5   = 4,
+       PDCP_Config__t_Reordering_ms8   = 5,
+       PDCP_Config__t_Reordering_ms10  = 6,
+       PDCP_Config__t_Reordering_ms15  = 7,
+       PDCP_Config__t_Reordering_ms20  = 8,
+       PDCP_Config__t_Reordering_ms30  = 9,
+       PDCP_Config__t_Reordering_ms40  = 10,
+       PDCP_Config__t_Reordering_ms50  = 11,
+       PDCP_Config__t_Reordering_ms60  = 12,
+       PDCP_Config__t_Reordering_ms80  = 13,
+       PDCP_Config__t_Reordering_ms100 = 14,
+       PDCP_Config__t_Reordering_ms120 = 15,
+       PDCP_Config__t_Reordering_ms140 = 16,
+       PDCP_Config__t_Reordering_ms160 = 17,
+       PDCP_Config__t_Reordering_ms180 = 18,
+       PDCP_Config__t_Reordering_ms200 = 19,
+       PDCP_Config__t_Reordering_ms220 = 20,
+       PDCP_Config__t_Reordering_ms240 = 21,
+       PDCP_Config__t_Reordering_ms260 = 22,
+       PDCP_Config__t_Reordering_ms280 = 23,
+       PDCP_Config__t_Reordering_ms300 = 24,
+       PDCP_Config__t_Reordering_ms500 = 25,
+       PDCP_Config__t_Reordering_ms750 = 26,
+       PDCP_Config__t_Reordering_ms1000        = 27,
+       PDCP_Config__t_Reordering_ms1250        = 28,
+       PDCP_Config__t_Reordering_ms1500        = 29,
+       PDCP_Config__t_Reordering_ms1750        = 30,
+       PDCP_Config__t_Reordering_ms2000        = 31,
+       PDCP_Config__t_Reordering_ms2250        = 32,
+       PDCP_Config__t_Reordering_ms2500        = 33,
+       PDCP_Config__t_Reordering_ms2750        = 34,
+       PDCP_Config__t_Reordering_ms3000        = 35,
+       PDCP_Config__t_Reordering_spare28       = 36,
+       PDCP_Config__t_Reordering_spare27       = 37,
+       PDCP_Config__t_Reordering_spare26       = 38,
+       PDCP_Config__t_Reordering_spare25       = 39,
+       PDCP_Config__t_Reordering_spare24       = 40,
+       PDCP_Config__t_Reordering_spare23       = 41,
+       PDCP_Config__t_Reordering_spare22       = 42,
+       PDCP_Config__t_Reordering_spare21       = 43,
+       PDCP_Config__t_Reordering_spare20       = 44,
+       PDCP_Config__t_Reordering_spare19       = 45,
+       PDCP_Config__t_Reordering_spare18       = 46,
+       PDCP_Config__t_Reordering_spare17       = 47,
+       PDCP_Config__t_Reordering_spare16       = 48,
+       PDCP_Config__t_Reordering_spare15       = 49,
+       PDCP_Config__t_Reordering_spare14       = 50,
+       PDCP_Config__t_Reordering_spare13       = 51,
+       PDCP_Config__t_Reordering_spare12       = 52,
+       PDCP_Config__t_Reordering_spare11       = 53,
+       PDCP_Config__t_Reordering_spare10       = 54,
+       PDCP_Config__t_Reordering_spare09       = 55,
+       PDCP_Config__t_Reordering_spare08       = 56,
+       PDCP_Config__t_Reordering_spare07       = 57,
+       PDCP_Config__t_Reordering_spare06       = 58,
+       PDCP_Config__t_Reordering_spare05       = 59,
+       PDCP_Config__t_Reordering_spare04       = 60,
+       PDCP_Config__t_Reordering_spare03       = 61,
+       PDCP_Config__t_Reordering_spare02       = 62,
+       PDCP_Config__t_Reordering_spare01       = 63
+} e_PDCP_Config__t_Reordering;
+typedef enum PDCP_Config__ext1__cipheringDisabled {
+       PDCP_Config__ext1__cipheringDisabled_true       = 0
+} e_PDCP_Config__ext1__cipheringDisabled;
+
+/* PDCP-Config */
+typedef struct PDCP_Config {
+       struct PDCP_Config__drb {
+               long    *discardTimer;  /* OPTIONAL */
+               long    *pdcp_SN_SizeUL;        /* OPTIONAL */
+               long    *pdcp_SN_SizeDL;        /* OPTIONAL */
+               struct PDCP_Config__drb__headerCompression {
+                       PDCP_Config__drb__headerCompression_PR present;
+                       union PDCP_Config__drb__headerCompression_u {
+                               NULL_t   notUsed;
+                               struct PDCP_Config__drb__headerCompression__rohc {
+                                       long    *maxCID;        /* DEFAULT 15 */
+                                       struct PDCP_Config__drb__headerCompression__rohc__profiles {
+                                               BOOLEAN_t        profile0x0001;
+                                               BOOLEAN_t        profile0x0002;
+                                               BOOLEAN_t        profile0x0003;
+                                               BOOLEAN_t        profile0x0004;
+                                               BOOLEAN_t        profile0x0006;
+                                               BOOLEAN_t        profile0x0101;
+                                               BOOLEAN_t        profile0x0102;
+                                               BOOLEAN_t        profile0x0103;
+                                               BOOLEAN_t        profile0x0104;
+                                               
+                                               /* Context for parsing across buffer boundaries */
+                                               asn_struct_ctx_t _asn_ctx;
+                                       } profiles;
+                                       long    *drb_ContinueROHC;      /* OPTIONAL */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *rohc;
+                               struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC {
+                                       long    *maxCID;        /* DEFAULT 15 */
+                                       struct PDCP_Config__drb__headerCompression__uplinkOnlyROHC__profiles {
+                                               BOOLEAN_t        profile0x0006;
+                                               
+                                               /* Context for parsing across buffer boundaries */
+                                               asn_struct_ctx_t _asn_ctx;
+                                       } profiles;
+                                       long    *drb_ContinueROHC;      /* OPTIONAL */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *uplinkOnlyROHC;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } headerCompression;
+               long    *integrityProtection;   /* OPTIONAL */
+               long    *statusReportRequired;  /* OPTIONAL */
+               long    *outOfOrderDelivery;    /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *drb;
+       struct PDCP_Config__moreThanOneRLC {
+               struct PDCP_Config__moreThanOneRLC__primaryPath {
+                       CellGroupId_t   *cellGroup;     /* OPTIONAL */
+                       LogicalChannelIdentity_t        *logicalChannel;        /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } primaryPath;
+               UL_DataSplitThreshold_t *ul_DataSplitThreshold; /* OPTIONAL */
+               BOOLEAN_t       *pdcp_Duplication;      /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *moreThanOneRLC;
+       long    *t_Reordering;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct PDCP_Config__ext1 {
+               long    *cipheringDisabled;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCP_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_discardTimer_3;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_SN_SizeUL_20;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_SN_SizeDL_23;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drb_ContinueROHC_40;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_drb_ContinueROHC_46;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_integrityProtection_49;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_statusReportRequired_51;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_outOfOrderDelivery_53; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t_Reordering_61;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cipheringDisabled_128; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDCP_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCP_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCP_Config_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCP_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCP-Parameters.c b/src/codec_utils/RRC/PDCP-Parameters.c
new file mode 100644 (file)
index 0000000..b002a9b
--- /dev/null
@@ -0,0 +1,614 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCP-Parameters.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 asn_oer_constraints_t asn_OER_type_maxNumberROHC_ContextSessions_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberROHC_ContextSessions_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_uplinkOnlyROHC_Profiles_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uplinkOnlyROHC_Profiles_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_continueROHC_Context_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_continueROHC_Context_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_outOfOrderDelivery_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_outOfOrderDelivery_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_shortSN_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_shortSN_constr_36 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcp_DuplicationSRB_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_DuplicationSRB_constr_38 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcp_DuplicationMCG_OrSCG_DRB_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_DuplicationMCG_OrSCG_DRB_constr_40 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedROHC_Profiles_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0000),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0000"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0001),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0001"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0002),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0002"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0003),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0003"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0004),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0004"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0006),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0006"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0101),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0101"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0102),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0102"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0103),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0103"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters__supportedROHC_Profiles, profile0x0104),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "profile0x0104"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_supportedROHC_Profiles_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_supportedROHC_Profiles_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* profile0x0000 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* profile0x0001 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* profile0x0002 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* profile0x0003 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* profile0x0004 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* profile0x0006 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* profile0x0101 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* profile0x0102 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* profile0x0103 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* profile0x0104 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_supportedROHC_Profiles_specs_2 = {
+       sizeof(struct PDCP_Parameters__supportedROHC_Profiles),
+       offsetof(struct PDCP_Parameters__supportedROHC_Profiles, _asn_ctx),
+       asn_MAP_supportedROHC_Profiles_tag2el_2,
+       10,     /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_supportedROHC_Profiles_2 = {
+       "supportedROHC-Profiles",
+       "supportedROHC-Profiles",
+       &asn_OP_SEQUENCE,
+       asn_DEF_supportedROHC_Profiles_tags_2,
+       sizeof(asn_DEF_supportedROHC_Profiles_tags_2)
+               /sizeof(asn_DEF_supportedROHC_Profiles_tags_2[0]) - 1, /* 1 */
+       asn_DEF_supportedROHC_Profiles_tags_2,  /* Same as above */
+       sizeof(asn_DEF_supportedROHC_Profiles_tags_2)
+               /sizeof(asn_DEF_supportedROHC_Profiles_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_supportedROHC_Profiles_2,
+       10,     /* Elements count */
+       &asn_SPC_supportedROHC_Profiles_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberROHC_ContextSessions_value2enum_13[] = {
+       { 0,    3,      "cs2" },
+       { 1,    3,      "cs4" },
+       { 2,    3,      "cs8" },
+       { 3,    4,      "cs12" },
+       { 4,    4,      "cs16" },
+       { 5,    4,      "cs24" },
+       { 6,    4,      "cs32" },
+       { 7,    4,      "cs48" },
+       { 8,    4,      "cs64" },
+       { 9,    5,      "cs128" },
+       { 10,   5,      "cs256" },
+       { 11,   5,      "cs512" },
+       { 12,   6,      "cs1024" },
+       { 13,   7,      "cs16384" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_maxNumberROHC_ContextSessions_enum2value_13[] = {
+       12,     /* cs1024(12) */
+       3,      /* cs12(3) */
+       9,      /* cs128(9) */
+       4,      /* cs16(4) */
+       13,     /* cs16384(13) */
+       0,      /* cs2(0) */
+       5,      /* cs24(5) */
+       10,     /* cs256(10) */
+       6,      /* cs32(6) */
+       1,      /* cs4(1) */
+       7,      /* cs48(7) */
+       11,     /* cs512(11) */
+       8,      /* cs64(8) */
+       2,      /* cs8(2) */
+       15,     /* spare1(15) */
+       14      /* spare2(14) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberROHC_ContextSessions_specs_13 = {
+       asn_MAP_maxNumberROHC_ContextSessions_value2enum_13,    /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberROHC_ContextSessions_enum2value_13,    /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberROHC_ContextSessions_tags_13[] = {
+       (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_maxNumberROHC_ContextSessions_13 = {
+       "maxNumberROHC-ContextSessions",
+       "maxNumberROHC-ContextSessions",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberROHC_ContextSessions_tags_13,
+       sizeof(asn_DEF_maxNumberROHC_ContextSessions_tags_13)
+               /sizeof(asn_DEF_maxNumberROHC_ContextSessions_tags_13[0]) - 1, /* 1 */
+       asn_DEF_maxNumberROHC_ContextSessions_tags_13,  /* Same as above */
+       sizeof(asn_DEF_maxNumberROHC_ContextSessions_tags_13)
+               /sizeof(asn_DEF_maxNumberROHC_ContextSessions_tags_13[0]), /* 2 */
+       { &asn_OER_type_maxNumberROHC_ContextSessions_constr_13, &asn_PER_type_maxNumberROHC_ContextSessions_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberROHC_ContextSessions_specs_13 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_uplinkOnlyROHC_Profiles_value2enum_30[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_uplinkOnlyROHC_Profiles_enum2value_30[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_uplinkOnlyROHC_Profiles_specs_30 = {
+       asn_MAP_uplinkOnlyROHC_Profiles_value2enum_30,  /* "tag" => N; sorted by tag */
+       asn_MAP_uplinkOnlyROHC_Profiles_enum2value_30,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_uplinkOnlyROHC_Profiles_tags_30[] = {
+       (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_uplinkOnlyROHC_Profiles_30 = {
+       "uplinkOnlyROHC-Profiles",
+       "uplinkOnlyROHC-Profiles",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_uplinkOnlyROHC_Profiles_tags_30,
+       sizeof(asn_DEF_uplinkOnlyROHC_Profiles_tags_30)
+               /sizeof(asn_DEF_uplinkOnlyROHC_Profiles_tags_30[0]) - 1, /* 1 */
+       asn_DEF_uplinkOnlyROHC_Profiles_tags_30,        /* Same as above */
+       sizeof(asn_DEF_uplinkOnlyROHC_Profiles_tags_30)
+               /sizeof(asn_DEF_uplinkOnlyROHC_Profiles_tags_30[0]), /* 2 */
+       { &asn_OER_type_uplinkOnlyROHC_Profiles_constr_30, &asn_PER_type_uplinkOnlyROHC_Profiles_constr_30, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_uplinkOnlyROHC_Profiles_specs_30       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_continueROHC_Context_value2enum_32[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_continueROHC_Context_enum2value_32[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_continueROHC_Context_specs_32 = {
+       asn_MAP_continueROHC_Context_value2enum_32,     /* "tag" => N; sorted by tag */
+       asn_MAP_continueROHC_Context_enum2value_32,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_continueROHC_Context_tags_32[] = {
+       (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_continueROHC_Context_32 = {
+       "continueROHC-Context",
+       "continueROHC-Context",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_continueROHC_Context_tags_32,
+       sizeof(asn_DEF_continueROHC_Context_tags_32)
+               /sizeof(asn_DEF_continueROHC_Context_tags_32[0]) - 1, /* 1 */
+       asn_DEF_continueROHC_Context_tags_32,   /* Same as above */
+       sizeof(asn_DEF_continueROHC_Context_tags_32)
+               /sizeof(asn_DEF_continueROHC_Context_tags_32[0]), /* 2 */
+       { &asn_OER_type_continueROHC_Context_constr_32, &asn_PER_type_continueROHC_Context_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_continueROHC_Context_specs_32  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_outOfOrderDelivery_value2enum_34[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_outOfOrderDelivery_enum2value_34[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_outOfOrderDelivery_specs_34 = {
+       asn_MAP_outOfOrderDelivery_value2enum_34,       /* "tag" => N; sorted by tag */
+       asn_MAP_outOfOrderDelivery_enum2value_34,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_outOfOrderDelivery_tags_34[] = {
+       (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_outOfOrderDelivery_34 = {
+       "outOfOrderDelivery",
+       "outOfOrderDelivery",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_outOfOrderDelivery_tags_34,
+       sizeof(asn_DEF_outOfOrderDelivery_tags_34)
+               /sizeof(asn_DEF_outOfOrderDelivery_tags_34[0]) - 1, /* 1 */
+       asn_DEF_outOfOrderDelivery_tags_34,     /* Same as above */
+       sizeof(asn_DEF_outOfOrderDelivery_tags_34)
+               /sizeof(asn_DEF_outOfOrderDelivery_tags_34[0]), /* 2 */
+       { &asn_OER_type_outOfOrderDelivery_constr_34, &asn_PER_type_outOfOrderDelivery_constr_34, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_outOfOrderDelivery_specs_34    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_shortSN_value2enum_36[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_shortSN_enum2value_36[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_shortSN_specs_36 = {
+       asn_MAP_shortSN_value2enum_36,  /* "tag" => N; sorted by tag */
+       asn_MAP_shortSN_enum2value_36,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_shortSN_tags_36[] = {
+       (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_shortSN_36 = {
+       "shortSN",
+       "shortSN",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_shortSN_tags_36,
+       sizeof(asn_DEF_shortSN_tags_36)
+               /sizeof(asn_DEF_shortSN_tags_36[0]) - 1, /* 1 */
+       asn_DEF_shortSN_tags_36,        /* Same as above */
+       sizeof(asn_DEF_shortSN_tags_36)
+               /sizeof(asn_DEF_shortSN_tags_36[0]), /* 2 */
+       { &asn_OER_type_shortSN_constr_36, &asn_PER_type_shortSN_constr_36, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_shortSN_specs_36       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcp_DuplicationSRB_value2enum_38[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcp_DuplicationSRB_enum2value_38[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_DuplicationSRB_specs_38 = {
+       asn_MAP_pdcp_DuplicationSRB_value2enum_38,      /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_DuplicationSRB_enum2value_38,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_DuplicationSRB_tags_38[] = {
+       (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_pdcp_DuplicationSRB_38 = {
+       "pdcp-DuplicationSRB",
+       "pdcp-DuplicationSRB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_DuplicationSRB_tags_38,
+       sizeof(asn_DEF_pdcp_DuplicationSRB_tags_38)
+               /sizeof(asn_DEF_pdcp_DuplicationSRB_tags_38[0]) - 1, /* 1 */
+       asn_DEF_pdcp_DuplicationSRB_tags_38,    /* Same as above */
+       sizeof(asn_DEF_pdcp_DuplicationSRB_tags_38)
+               /sizeof(asn_DEF_pdcp_DuplicationSRB_tags_38[0]), /* 2 */
+       { &asn_OER_type_pdcp_DuplicationSRB_constr_38, &asn_PER_type_pdcp_DuplicationSRB_constr_38, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_DuplicationSRB_specs_38   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcp_DuplicationMCG_OrSCG_DRB_value2enum_40[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcp_DuplicationMCG_OrSCG_DRB_enum2value_40[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_DuplicationMCG_OrSCG_DRB_specs_40 = {
+       asn_MAP_pdcp_DuplicationMCG_OrSCG_DRB_value2enum_40,    /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_DuplicationMCG_OrSCG_DRB_enum2value_40,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40[] = {
+       (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_pdcp_DuplicationMCG_OrSCG_DRB_40 = {
+       "pdcp-DuplicationMCG-OrSCG-DRB",
+       "pdcp-DuplicationMCG-OrSCG-DRB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40,
+       sizeof(asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40)
+               /sizeof(asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40[0]) - 1, /* 1 */
+       asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40,  /* Same as above */
+       sizeof(asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40)
+               /sizeof(asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_tags_40[0]), /* 2 */
+       { &asn_OER_type_pdcp_DuplicationMCG_OrSCG_DRB_constr_40, &asn_PER_type_pdcp_DuplicationMCG_OrSCG_DRB_constr_40, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_DuplicationMCG_OrSCG_DRB_specs_40 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCP_Parameters_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters, supportedROHC_Profiles),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_supportedROHC_Profiles_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedROHC-Profiles"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDCP_Parameters, maxNumberROHC_ContextSessions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberROHC_ContextSessions_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberROHC-ContextSessions"
+               },
+       { ATF_POINTER, 6, offsetof(struct PDCP_Parameters, uplinkOnlyROHC_Profiles),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_uplinkOnlyROHC_Profiles_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkOnlyROHC-Profiles"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDCP_Parameters, continueROHC_Context),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_continueROHC_Context_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "continueROHC-Context"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDCP_Parameters, outOfOrderDelivery),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_outOfOrderDelivery_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "outOfOrderDelivery"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDCP_Parameters, shortSN),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_shortSN_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortSN"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDCP_Parameters, pdcp_DuplicationSRB),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_DuplicationSRB_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-DuplicationSRB"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_Parameters, pdcp_DuplicationMCG_OrSCG_DRB),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_40,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-DuplicationMCG-OrSCG-DRB"
+               },
+};
+static const int asn_MAP_PDCP_Parameters_oms_1[] = { 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_PDCP_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCP_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedROHC-Profiles */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberROHC-ContextSessions */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uplinkOnlyROHC-Profiles */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* continueROHC-Context */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* outOfOrderDelivery */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* shortSN */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* pdcp-DuplicationSRB */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* pdcp-DuplicationMCG-OrSCG-DRB */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCP_Parameters_specs_1 = {
+       sizeof(struct PDCP_Parameters),
+       offsetof(struct PDCP_Parameters, _asn_ctx),
+       asn_MAP_PDCP_Parameters_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_PDCP_Parameters_oms_1,  /* Optional members */
+       6, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCP_Parameters = {
+       "PDCP-Parameters",
+       "PDCP-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCP_Parameters_tags_1,
+       sizeof(asn_DEF_PDCP_Parameters_tags_1)
+               /sizeof(asn_DEF_PDCP_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_PDCP_Parameters_tags_1, /* Same as above */
+       sizeof(asn_DEF_PDCP_Parameters_tags_1)
+               /sizeof(asn_DEF_PDCP_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCP_Parameters_1,
+       8,      /* Elements count */
+       &asn_SPC_PDCP_Parameters_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCP-Parameters.h b/src/codec_utils/RRC/PDCP-Parameters.h
new file mode 100644 (file)
index 0000000..764c824
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCP_Parameters_H_
+#define        _PDCP_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDCP_Parameters__maxNumberROHC_ContextSessions {
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs2      = 0,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs4      = 1,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs8      = 2,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs12     = 3,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs16     = 4,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs24     = 5,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs32     = 6,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs48     = 7,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs64     = 8,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs128    = 9,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs256    = 10,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs512    = 11,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs1024   = 12,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_cs16384  = 13,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_spare2   = 14,
+       PDCP_Parameters__maxNumberROHC_ContextSessions_spare1   = 15
+} e_PDCP_Parameters__maxNumberROHC_ContextSessions;
+typedef enum PDCP_Parameters__uplinkOnlyROHC_Profiles {
+       PDCP_Parameters__uplinkOnlyROHC_Profiles_supported      = 0
+} e_PDCP_Parameters__uplinkOnlyROHC_Profiles;
+typedef enum PDCP_Parameters__continueROHC_Context {
+       PDCP_Parameters__continueROHC_Context_supported = 0
+} e_PDCP_Parameters__continueROHC_Context;
+typedef enum PDCP_Parameters__outOfOrderDelivery {
+       PDCP_Parameters__outOfOrderDelivery_supported   = 0
+} e_PDCP_Parameters__outOfOrderDelivery;
+typedef enum PDCP_Parameters__shortSN {
+       PDCP_Parameters__shortSN_supported      = 0
+} e_PDCP_Parameters__shortSN;
+typedef enum PDCP_Parameters__pdcp_DuplicationSRB {
+       PDCP_Parameters__pdcp_DuplicationSRB_supported  = 0
+} e_PDCP_Parameters__pdcp_DuplicationSRB;
+typedef enum PDCP_Parameters__pdcp_DuplicationMCG_OrSCG_DRB {
+       PDCP_Parameters__pdcp_DuplicationMCG_OrSCG_DRB_supported        = 0
+} e_PDCP_Parameters__pdcp_DuplicationMCG_OrSCG_DRB;
+
+/* PDCP-Parameters */
+typedef struct PDCP_Parameters {
+       struct PDCP_Parameters__supportedROHC_Profiles {
+               BOOLEAN_t        profile0x0000;
+               BOOLEAN_t        profile0x0001;
+               BOOLEAN_t        profile0x0002;
+               BOOLEAN_t        profile0x0003;
+               BOOLEAN_t        profile0x0004;
+               BOOLEAN_t        profile0x0006;
+               BOOLEAN_t        profile0x0101;
+               BOOLEAN_t        profile0x0102;
+               BOOLEAN_t        profile0x0103;
+               BOOLEAN_t        profile0x0104;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } supportedROHC_Profiles;
+       long     maxNumberROHC_ContextSessions;
+       long    *uplinkOnlyROHC_Profiles;       /* OPTIONAL */
+       long    *continueROHC_Context;  /* OPTIONAL */
+       long    *outOfOrderDelivery;    /* OPTIONAL */
+       long    *shortSN;       /* OPTIONAL */
+       long    *pdcp_DuplicationSRB;   /* OPTIONAL */
+       long    *pdcp_DuplicationMCG_OrSCG_DRB; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCP_Parameters_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberROHC_ContextSessions_13;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_uplinkOnlyROHC_Profiles_30;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_continueROHC_Context_32;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_outOfOrderDelivery_34; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_shortSN_36;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_DuplicationSRB_38;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_DuplicationMCG_OrSCG_DRB_40;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDCP_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCP_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCP_Parameters_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCP_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDCP-ParametersMRDC.c b/src/codec_utils/RRC/PDCP-ParametersMRDC.c
new file mode 100644 (file)
index 0000000..3ac4668
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDCP-ParametersMRDC.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.
+ */
+static asn_oer_constraints_t asn_OER_type_pdcp_DuplicationSplitSRB_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_DuplicationSplitSRB_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcp_DuplicationSplitDRB_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcp_DuplicationSplitDRB_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcp_DuplicationSplitSRB_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcp_DuplicationSplitSRB_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_DuplicationSplitSRB_specs_2 = {
+       asn_MAP_pdcp_DuplicationSplitSRB_value2enum_2,  /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_DuplicationSplitSRB_enum2value_2,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_DuplicationSplitSRB_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_pdcp_DuplicationSplitSRB_2 = {
+       "pdcp-DuplicationSplitSRB",
+       "pdcp-DuplicationSplitSRB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_DuplicationSplitSRB_tags_2,
+       sizeof(asn_DEF_pdcp_DuplicationSplitSRB_tags_2)
+               /sizeof(asn_DEF_pdcp_DuplicationSplitSRB_tags_2[0]) - 1, /* 1 */
+       asn_DEF_pdcp_DuplicationSplitSRB_tags_2,        /* Same as above */
+       sizeof(asn_DEF_pdcp_DuplicationSplitSRB_tags_2)
+               /sizeof(asn_DEF_pdcp_DuplicationSplitSRB_tags_2[0]), /* 2 */
+       { &asn_OER_type_pdcp_DuplicationSplitSRB_constr_2, &asn_PER_type_pdcp_DuplicationSplitSRB_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_DuplicationSplitSRB_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdcp_DuplicationSplitDRB_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcp_DuplicationSplitDRB_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcp_DuplicationSplitDRB_specs_4 = {
+       asn_MAP_pdcp_DuplicationSplitDRB_value2enum_4,  /* "tag" => N; sorted by tag */
+       asn_MAP_pdcp_DuplicationSplitDRB_enum2value_4,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcp_DuplicationSplitDRB_tags_4[] = {
+       (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_pdcp_DuplicationSplitDRB_4 = {
+       "pdcp-DuplicationSplitDRB",
+       "pdcp-DuplicationSplitDRB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcp_DuplicationSplitDRB_tags_4,
+       sizeof(asn_DEF_pdcp_DuplicationSplitDRB_tags_4)
+               /sizeof(asn_DEF_pdcp_DuplicationSplitDRB_tags_4[0]) - 1, /* 1 */
+       asn_DEF_pdcp_DuplicationSplitDRB_tags_4,        /* Same as above */
+       sizeof(asn_DEF_pdcp_DuplicationSplitDRB_tags_4)
+               /sizeof(asn_DEF_pdcp_DuplicationSplitDRB_tags_4[0]), /* 2 */
+       { &asn_OER_type_pdcp_DuplicationSplitDRB_constr_4, &asn_PER_type_pdcp_DuplicationSplitDRB_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcp_DuplicationSplitDRB_specs_4       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDCP_ParametersMRDC_1[] = {
+       { ATF_POINTER, 2, offsetof(struct PDCP_ParametersMRDC, pdcp_DuplicationSplitSRB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_DuplicationSplitSRB_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-DuplicationSplitSRB"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDCP_ParametersMRDC, pdcp_DuplicationSplitDRB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcp_DuplicationSplitDRB_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-DuplicationSplitDRB"
+               },
+};
+static const int asn_MAP_PDCP_ParametersMRDC_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_PDCP_ParametersMRDC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDCP_ParametersMRDC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pdcp-DuplicationSplitSRB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pdcp-DuplicationSplitDRB */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDCP_ParametersMRDC_specs_1 = {
+       sizeof(struct PDCP_ParametersMRDC),
+       offsetof(struct PDCP_ParametersMRDC, _asn_ctx),
+       asn_MAP_PDCP_ParametersMRDC_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PDCP_ParametersMRDC_oms_1,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDCP_ParametersMRDC = {
+       "PDCP-ParametersMRDC",
+       "PDCP-ParametersMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDCP_ParametersMRDC_tags_1,
+       sizeof(asn_DEF_PDCP_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_PDCP_ParametersMRDC_tags_1[0]), /* 1 */
+       asn_DEF_PDCP_ParametersMRDC_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PDCP_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_PDCP_ParametersMRDC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDCP_ParametersMRDC_1,
+       2,      /* Elements count */
+       &asn_SPC_PDCP_ParametersMRDC_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDCP-ParametersMRDC.h b/src/codec_utils/RRC/PDCP-ParametersMRDC.h
new file mode 100644 (file)
index 0000000..ee092a1
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDCP_ParametersMRDC_H_
+#define        _PDCP_ParametersMRDC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDCP_ParametersMRDC__pdcp_DuplicationSplitSRB {
+       PDCP_ParametersMRDC__pdcp_DuplicationSplitSRB_supported = 0
+} e_PDCP_ParametersMRDC__pdcp_DuplicationSplitSRB;
+typedef enum PDCP_ParametersMRDC__pdcp_DuplicationSplitDRB {
+       PDCP_ParametersMRDC__pdcp_DuplicationSplitDRB_supported = 0
+} e_PDCP_ParametersMRDC__pdcp_DuplicationSplitDRB;
+
+/* PDCP-ParametersMRDC */
+typedef struct PDCP_ParametersMRDC {
+       long    *pdcp_DuplicationSplitSRB;      /* OPTIONAL */
+       long    *pdcp_DuplicationSplitDRB;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDCP_ParametersMRDC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_DuplicationSplitSRB_2;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcp_DuplicationSplitDRB_4;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDCP_ParametersMRDC;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDCP_ParametersMRDC_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDCP_ParametersMRDC_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDCP_ParametersMRDC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.c b/src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.c
new file mode 100644 (file)
index 0000000..76260bc
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-CodeBlockGroupTransmission.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_maxCodeBlockGroupsPerTransportBlock_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxCodeBlockGroupsPerTransportBlock_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxCodeBlockGroupsPerTransportBlock_value2enum_2[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n6" },
+       { 3,    2,      "n8" }
+};
+static const unsigned int asn_MAP_maxCodeBlockGroupsPerTransportBlock_enum2value_2[] = {
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2,      /* n6(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxCodeBlockGroupsPerTransportBlock_specs_2 = {
+       asn_MAP_maxCodeBlockGroupsPerTransportBlock_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxCodeBlockGroupsPerTransportBlock_enum2value_2,       /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxCodeBlockGroupsPerTransportBlock_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_maxCodeBlockGroupsPerTransportBlock_2 = {
+       "maxCodeBlockGroupsPerTransportBlock",
+       "maxCodeBlockGroupsPerTransportBlock",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2,
+       sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2)
+               /sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2)
+               /sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxCodeBlockGroupsPerTransportBlock_constr_2, &asn_PER_type_maxCodeBlockGroupsPerTransportBlock_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxCodeBlockGroupsPerTransportBlock_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDSCH_CodeBlockGroupTransmission_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_CodeBlockGroupTransmission, maxCodeBlockGroupsPerTransportBlock),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxCodeBlockGroupsPerTransportBlock_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxCodeBlockGroupsPerTransportBlock"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_CodeBlockGroupTransmission, codeBlockGroupFlushIndicator),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codeBlockGroupFlushIndicator"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDSCH_CodeBlockGroupTransmission_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxCodeBlockGroupsPerTransportBlock */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* codeBlockGroupFlushIndicator */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDSCH_CodeBlockGroupTransmission_specs_1 = {
+       sizeof(struct PDSCH_CodeBlockGroupTransmission),
+       offsetof(struct PDSCH_CodeBlockGroupTransmission, _asn_ctx),
+       asn_MAP_PDSCH_CodeBlockGroupTransmission_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_PDSCH_CodeBlockGroupTransmission = {
+       "PDSCH-CodeBlockGroupTransmission",
+       "PDSCH-CodeBlockGroupTransmission",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1,
+       sizeof(asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1)
+               /sizeof(asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1)
+               /sizeof(asn_DEF_PDSCH_CodeBlockGroupTransmission_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDSCH_CodeBlockGroupTransmission_1,
+       2,      /* Elements count */
+       &asn_SPC_PDSCH_CodeBlockGroupTransmission_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.h b/src/codec_utils/RRC/PDSCH-CodeBlockGroupTransmission.h
new file mode 100644 (file)
index 0000000..5c49e07
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_CodeBlockGroupTransmission_H_
+#define        _PDSCH_CodeBlockGroupTransmission_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock {
+       PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n2        = 0,
+       PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n4        = 1,
+       PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n6        = 2,
+       PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n8        = 3
+} e_PDSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock;
+
+/* PDSCH-CodeBlockGroupTransmission */
+typedef struct PDSCH_CodeBlockGroupTransmission {
+       long     maxCodeBlockGroupsPerTransportBlock;
+       BOOLEAN_t        codeBlockGroupFlushIndicator;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_CodeBlockGroupTransmission_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxCodeBlockGroupsPerTransportBlock_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_CodeBlockGroupTransmission;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_CodeBlockGroupTransmission_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_CodeBlockGroupTransmission_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_CodeBlockGroupTransmission_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-Config.c b/src/codec_utils/RRC/PDSCH-Config.c
new file mode 100644 (file)
index 0000000..4f441fc
--- /dev/null
@@ -0,0 +1,1946 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-Config.h"
+
+#include "RateMatchPatternGroup.h"
+#include "DMRS-DownlinkConfig.h"
+#include "TCI-State.h"
+#include "PDSCH-TimeDomainResourceAllocationList.h"
+#include "RateMatchPattern.h"
+#include "ZP-CSI-RS-Resource.h"
+#include "ZP-CSI-RS-ResourceSet.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.
+ */
+static int
+memb_dataScramblingIdentityPDSCH_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 >= 0 && value <= 1023)) {
+               /* 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_tci_StatesToAddModList_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 <= 128)) {
+               /* 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_tci_StatesToReleaseList_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 <= 128)) {
+               /* 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_rateMatchPatternToAddModList_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 <= 4)) {
+               /* 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_rateMatchPatternToReleaseList_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 <= 4)) {
+               /* 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_zp_CSI_RS_ResourceToAddModList_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 <= 32)) {
+               /* 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_zp_CSI_RS_ResourceToReleaseList_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 <= 32)) {
+               /* 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_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_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 <= 16)) {
+               /* 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_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_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 <= 16)) {
+               /* 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_sp_ZP_CSI_RS_ResourceSetsToAddModList_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 <= 16)) {
+               /* 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_sp_ZP_CSI_RS_ResourceSetsToReleaseList_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 <= 16)) {
+               /* 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_dmrs_DownlinkForPDSCH_MappingTypeA_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_DownlinkForPDSCH_MappingTypeA_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_DownlinkForPDSCH_MappingTypeB_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_DownlinkForPDSCH_MappingTypeB_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tci_StatesToAddModList_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_tci_StatesToAddModList_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_tci_StatesToReleaseList_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_tci_StatesToReleaseList_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_vrb_ToPRB_Interleaver_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_vrb_ToPRB_Interleaver_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_resourceAllocation_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceAllocation_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pdsch_TimeDomainAllocationList_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_TimeDomainAllocationList_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_AggregationFactor_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_AggregationFactor_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rateMatchPatternToAddModList_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToAddModList_constr_27 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rateMatchPatternToReleaseList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToReleaseList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rbg_Size_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rbg_Size_constr_33 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mcs_Table_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_Table_constr_36 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxNrofCodeWordsScheduledByDCI_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNrofCodeWordsScheduledByDCI_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bundleSize_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bundleSize_constr_44 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bundleSizeSet1_constr_48 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bundleSizeSet1_constr_48 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_bundleSizeSet2_constr_53 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bundleSizeSet2_constr_53 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_prb_BundlingType_constr_42 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_prb_BundlingType_constr_42 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_zp_CSI_RS_ResourceToAddModList_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_zp_CSI_RS_ResourceToAddModList_constr_56 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_zp_CSI_RS_ResourceToReleaseList_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_zp_CSI_RS_ResourceToReleaseList_constr_58 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_p_ZP_CSI_RS_ResourceSet_constr_68 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_p_ZP_CSI_RS_ResourceSet_constr_68 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_dataScramblingIdentityPDSCH_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_dataScramblingIdentityPDSCH_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tci_StatesToAddModList_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_tci_StatesToAddModList_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tci_StatesToReleaseList_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_tci_StatesToReleaseList_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToAddModList_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToAddModList_constr_27 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToReleaseList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToReleaseList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_zp_CSI_RS_ResourceToAddModList_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_zp_CSI_RS_ResourceToAddModList_constr_56 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_zp_CSI_RS_ResourceToReleaseList_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_zp_CSI_RS_ResourceToReleaseList_constr_58 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_dmrs_DownlinkForPDSCH_MappingTypeA_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DMRS_DownlinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_dmrs_DownlinkForPDSCH_MappingTypeA_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_dmrs_DownlinkForPDSCH_MappingTypeA_specs_3 = {
+       sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA),
+       offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA, _asn_ctx),
+       offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA, present),
+       sizeof(((struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA *)0)->present),
+       asn_MAP_dmrs_DownlinkForPDSCH_MappingTypeA_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dmrs_DownlinkForPDSCH_MappingTypeA_3 = {
+       "dmrs-DownlinkForPDSCH-MappingTypeA",
+       "dmrs-DownlinkForPDSCH-MappingTypeA",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_dmrs_DownlinkForPDSCH_MappingTypeA_constr_3, &asn_PER_type_dmrs_DownlinkForPDSCH_MappingTypeA_constr_3, CHOICE_constraint },
+       asn_MBR_dmrs_DownlinkForPDSCH_MappingTypeA_3,
+       2,      /* Elements count */
+       &asn_SPC_dmrs_DownlinkForPDSCH_MappingTypeA_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dmrs_DownlinkForPDSCH_MappingTypeB_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DMRS_DownlinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_dmrs_DownlinkForPDSCH_MappingTypeB_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_dmrs_DownlinkForPDSCH_MappingTypeB_specs_6 = {
+       sizeof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB),
+       offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB, _asn_ctx),
+       offsetof(struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB, present),
+       sizeof(((struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB *)0)->present),
+       asn_MAP_dmrs_DownlinkForPDSCH_MappingTypeB_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dmrs_DownlinkForPDSCH_MappingTypeB_6 = {
+       "dmrs-DownlinkForPDSCH-MappingTypeB",
+       "dmrs-DownlinkForPDSCH-MappingTypeB",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_dmrs_DownlinkForPDSCH_MappingTypeB_constr_6, &asn_PER_type_dmrs_DownlinkForPDSCH_MappingTypeB_constr_6, CHOICE_constraint },
+       asn_MBR_dmrs_DownlinkForPDSCH_MappingTypeB_6,
+       2,      /* Elements count */
+       &asn_SPC_dmrs_DownlinkForPDSCH_MappingTypeB_specs_6     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tci_StatesToAddModList_9[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TCI_State,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tci_StatesToAddModList_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tci_StatesToAddModList_specs_9 = {
+       sizeof(struct PDSCH_Config__tci_StatesToAddModList),
+       offsetof(struct PDSCH_Config__tci_StatesToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tci_StatesToAddModList_9 = {
+       "tci-StatesToAddModList",
+       "tci-StatesToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tci_StatesToAddModList_tags_9,
+       sizeof(asn_DEF_tci_StatesToAddModList_tags_9)
+               /sizeof(asn_DEF_tci_StatesToAddModList_tags_9[0]) - 1, /* 1 */
+       asn_DEF_tci_StatesToAddModList_tags_9,  /* Same as above */
+       sizeof(asn_DEF_tci_StatesToAddModList_tags_9)
+               /sizeof(asn_DEF_tci_StatesToAddModList_tags_9[0]), /* 2 */
+       { &asn_OER_type_tci_StatesToAddModList_constr_9, &asn_PER_type_tci_StatesToAddModList_constr_9, SEQUENCE_OF_constraint },
+       asn_MBR_tci_StatesToAddModList_9,
+       1,      /* Single element */
+       &asn_SPC_tci_StatesToAddModList_specs_9 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tci_StatesToReleaseList_11[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tci_StatesToReleaseList_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tci_StatesToReleaseList_specs_11 = {
+       sizeof(struct PDSCH_Config__tci_StatesToReleaseList),
+       offsetof(struct PDSCH_Config__tci_StatesToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tci_StatesToReleaseList_11 = {
+       "tci-StatesToReleaseList",
+       "tci-StatesToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tci_StatesToReleaseList_tags_11,
+       sizeof(asn_DEF_tci_StatesToReleaseList_tags_11)
+               /sizeof(asn_DEF_tci_StatesToReleaseList_tags_11[0]) - 1, /* 1 */
+       asn_DEF_tci_StatesToReleaseList_tags_11,        /* Same as above */
+       sizeof(asn_DEF_tci_StatesToReleaseList_tags_11)
+               /sizeof(asn_DEF_tci_StatesToReleaseList_tags_11[0]), /* 2 */
+       { &asn_OER_type_tci_StatesToReleaseList_constr_11, &asn_PER_type_tci_StatesToReleaseList_constr_11, SEQUENCE_OF_constraint },
+       asn_MBR_tci_StatesToReleaseList_11,
+       1,      /* Single element */
+       &asn_SPC_tci_StatesToReleaseList_specs_11       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_vrb_ToPRB_Interleaver_value2enum_13[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" }
+};
+static const unsigned int asn_MAP_vrb_ToPRB_Interleaver_enum2value_13[] = {
+       0,      /* n2(0) */
+       1       /* n4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_vrb_ToPRB_Interleaver_specs_13 = {
+       asn_MAP_vrb_ToPRB_Interleaver_value2enum_13,    /* "tag" => N; sorted by tag */
+       asn_MAP_vrb_ToPRB_Interleaver_enum2value_13,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_vrb_ToPRB_Interleaver_tags_13[] = {
+       (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_vrb_ToPRB_Interleaver_13 = {
+       "vrb-ToPRB-Interleaver",
+       "vrb-ToPRB-Interleaver",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_vrb_ToPRB_Interleaver_tags_13,
+       sizeof(asn_DEF_vrb_ToPRB_Interleaver_tags_13)
+               /sizeof(asn_DEF_vrb_ToPRB_Interleaver_tags_13[0]) - 1, /* 1 */
+       asn_DEF_vrb_ToPRB_Interleaver_tags_13,  /* Same as above */
+       sizeof(asn_DEF_vrb_ToPRB_Interleaver_tags_13)
+               /sizeof(asn_DEF_vrb_ToPRB_Interleaver_tags_13[0]), /* 2 */
+       { &asn_OER_type_vrb_ToPRB_Interleaver_constr_13, &asn_PER_type_vrb_ToPRB_Interleaver_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_vrb_ToPRB_Interleaver_specs_13 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceAllocation_value2enum_16[] = {
+       { 0,    23,     "resourceAllocationType0" },
+       { 1,    23,     "resourceAllocationType1" },
+       { 2,    13,     "dynamicSwitch" }
+};
+static const unsigned int asn_MAP_resourceAllocation_enum2value_16[] = {
+       2,      /* dynamicSwitch(2) */
+       0,      /* resourceAllocationType0(0) */
+       1       /* resourceAllocationType1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceAllocation_specs_16 = {
+       asn_MAP_resourceAllocation_value2enum_16,       /* "tag" => N; sorted by tag */
+       asn_MAP_resourceAllocation_enum2value_16,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceAllocation_tags_16[] = {
+       (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_resourceAllocation_16 = {
+       "resourceAllocation",
+       "resourceAllocation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceAllocation_tags_16,
+       sizeof(asn_DEF_resourceAllocation_tags_16)
+               /sizeof(asn_DEF_resourceAllocation_tags_16[0]) - 1, /* 1 */
+       asn_DEF_resourceAllocation_tags_16,     /* Same as above */
+       sizeof(asn_DEF_resourceAllocation_tags_16)
+               /sizeof(asn_DEF_resourceAllocation_tags_16[0]), /* 2 */
+       { &asn_OER_type_resourceAllocation_constr_16, &asn_PER_type_resourceAllocation_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceAllocation_specs_16    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdsch_TimeDomainAllocationList_20[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config__pdsch_TimeDomainAllocationList, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__pdsch_TimeDomainAllocationList, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_TimeDomainResourceAllocationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdsch_TimeDomainAllocationList_tag2el_20[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdsch_TimeDomainAllocationList_specs_20 = {
+       sizeof(struct PDSCH_Config__pdsch_TimeDomainAllocationList),
+       offsetof(struct PDSCH_Config__pdsch_TimeDomainAllocationList, _asn_ctx),
+       offsetof(struct PDSCH_Config__pdsch_TimeDomainAllocationList, present),
+       sizeof(((struct PDSCH_Config__pdsch_TimeDomainAllocationList *)0)->present),
+       asn_MAP_pdsch_TimeDomainAllocationList_tag2el_20,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_TimeDomainAllocationList_20 = {
+       "pdsch-TimeDomainAllocationList",
+       "pdsch-TimeDomainAllocationList",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdsch_TimeDomainAllocationList_constr_20, &asn_PER_type_pdsch_TimeDomainAllocationList_constr_20, CHOICE_constraint },
+       asn_MBR_pdsch_TimeDomainAllocationList_20,
+       2,      /* Elements count */
+       &asn_SPC_pdsch_TimeDomainAllocationList_specs_20        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_AggregationFactor_value2enum_23[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" }
+};
+static const unsigned int asn_MAP_pdsch_AggregationFactor_enum2value_23[] = {
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_AggregationFactor_specs_23 = {
+       asn_MAP_pdsch_AggregationFactor_value2enum_23,  /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_AggregationFactor_enum2value_23,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_AggregationFactor_tags_23[] = {
+       (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_pdsch_AggregationFactor_23 = {
+       "pdsch-AggregationFactor",
+       "pdsch-AggregationFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_AggregationFactor_tags_23,
+       sizeof(asn_DEF_pdsch_AggregationFactor_tags_23)
+               /sizeof(asn_DEF_pdsch_AggregationFactor_tags_23[0]) - 1, /* 1 */
+       asn_DEF_pdsch_AggregationFactor_tags_23,        /* Same as above */
+       sizeof(asn_DEF_pdsch_AggregationFactor_tags_23)
+               /sizeof(asn_DEF_pdsch_AggregationFactor_tags_23[0]), /* 2 */
+       { &asn_OER_type_pdsch_AggregationFactor_constr_23, &asn_PER_type_pdsch_AggregationFactor_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_AggregationFactor_specs_23       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToAddModList_27[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RateMatchPattern,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToAddModList_tags_27[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToAddModList_specs_27 = {
+       sizeof(struct PDSCH_Config__rateMatchPatternToAddModList),
+       offsetof(struct PDSCH_Config__rateMatchPatternToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToAddModList_27 = {
+       "rateMatchPatternToAddModList",
+       "rateMatchPatternToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToAddModList_tags_27,
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_27)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_27[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToAddModList_tags_27,   /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_27)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_27[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToAddModList_constr_27, &asn_PER_type_rateMatchPatternToAddModList_constr_27, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToAddModList_27,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToAddModList_specs_27  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToReleaseList_29[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToReleaseList_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToReleaseList_specs_29 = {
+       sizeof(struct PDSCH_Config__rateMatchPatternToReleaseList),
+       offsetof(struct PDSCH_Config__rateMatchPatternToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToReleaseList_29 = {
+       "rateMatchPatternToReleaseList",
+       "rateMatchPatternToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToReleaseList_tags_29,
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_29)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_29[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToReleaseList_tags_29,  /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_29)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_29[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToReleaseList_constr_29, &asn_PER_type_rateMatchPatternToReleaseList_constr_29, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToReleaseList_29,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToReleaseList_specs_29 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rbg_Size_value2enum_33[] = {
+       { 0,    7,      "config1" },
+       { 1,    7,      "config2" }
+};
+static const unsigned int asn_MAP_rbg_Size_enum2value_33[] = {
+       0,      /* config1(0) */
+       1       /* config2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rbg_Size_specs_33 = {
+       asn_MAP_rbg_Size_value2enum_33, /* "tag" => N; sorted by tag */
+       asn_MAP_rbg_Size_enum2value_33, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rbg_Size_tags_33[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rbg_Size_33 = {
+       "rbg-Size",
+       "rbg-Size",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rbg_Size_tags_33,
+       sizeof(asn_DEF_rbg_Size_tags_33)
+               /sizeof(asn_DEF_rbg_Size_tags_33[0]) - 1, /* 1 */
+       asn_DEF_rbg_Size_tags_33,       /* Same as above */
+       sizeof(asn_DEF_rbg_Size_tags_33)
+               /sizeof(asn_DEF_rbg_Size_tags_33[0]), /* 2 */
+       { &asn_OER_type_rbg_Size_constr_33, &asn_PER_type_rbg_Size_constr_33, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rbg_Size_specs_33      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_Table_value2enum_36[] = {
+       { 0,    6,      "qam256" },
+       { 1,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_Table_enum2value_36[] = {
+       0,      /* qam256(0) */
+       1       /* qam64LowSE(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_Table_specs_36 = {
+       asn_MAP_mcs_Table_value2enum_36,        /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_Table_enum2value_36,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_Table_tags_36[] = {
+       (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mcs_Table_36 = {
+       "mcs-Table",
+       "mcs-Table",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_Table_tags_36,
+       sizeof(asn_DEF_mcs_Table_tags_36)
+               /sizeof(asn_DEF_mcs_Table_tags_36[0]) - 1, /* 1 */
+       asn_DEF_mcs_Table_tags_36,      /* Same as above */
+       sizeof(asn_DEF_mcs_Table_tags_36)
+               /sizeof(asn_DEF_mcs_Table_tags_36[0]), /* 2 */
+       { &asn_OER_type_mcs_Table_constr_36, &asn_PER_type_mcs_Table_constr_36, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_Table_specs_36     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNrofCodeWordsScheduledByDCI_value2enum_39[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_maxNrofCodeWordsScheduledByDCI_enum2value_39[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNrofCodeWordsScheduledByDCI_specs_39 = {
+       asn_MAP_maxNrofCodeWordsScheduledByDCI_value2enum_39,   /* "tag" => N; sorted by tag */
+       asn_MAP_maxNrofCodeWordsScheduledByDCI_enum2value_39,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_maxNrofCodeWordsScheduledByDCI_39 = {
+       "maxNrofCodeWordsScheduledByDCI",
+       "maxNrofCodeWordsScheduledByDCI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39,
+       sizeof(asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39)
+               /sizeof(asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39[0]) - 1, /* 1 */
+       asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39, /* Same as above */
+       sizeof(asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39)
+               /sizeof(asn_DEF_maxNrofCodeWordsScheduledByDCI_tags_39[0]), /* 2 */
+       { &asn_OER_type_maxNrofCodeWordsScheduledByDCI_constr_39, &asn_PER_type_maxNrofCodeWordsScheduledByDCI_constr_39, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNrofCodeWordsScheduledByDCI_specs_39        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bundleSize_value2enum_44[] = {
+       { 0,    2,      "n4" },
+       { 1,    8,      "wideband" }
+};
+static const unsigned int asn_MAP_bundleSize_enum2value_44[] = {
+       0,      /* n4(0) */
+       1       /* wideband(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bundleSize_specs_44 = {
+       asn_MAP_bundleSize_value2enum_44,       /* "tag" => N; sorted by tag */
+       asn_MAP_bundleSize_enum2value_44,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bundleSize_tags_44[] = {
+       (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_bundleSize_44 = {
+       "bundleSize",
+       "bundleSize",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bundleSize_tags_44,
+       sizeof(asn_DEF_bundleSize_tags_44)
+               /sizeof(asn_DEF_bundleSize_tags_44[0]) - 1, /* 1 */
+       asn_DEF_bundleSize_tags_44,     /* Same as above */
+       sizeof(asn_DEF_bundleSize_tags_44)
+               /sizeof(asn_DEF_bundleSize_tags_44[0]), /* 2 */
+       { &asn_OER_type_bundleSize_constr_44, &asn_PER_type_bundleSize_constr_44, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bundleSize_specs_44    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_staticBundling_43[] = {
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config__prb_BundlingType__staticBundling, bundleSize),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bundleSize_44,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bundleSize"
+               },
+};
+static const int asn_MAP_staticBundling_oms_43[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_staticBundling_tags_43[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_staticBundling_tag2el_43[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* bundleSize */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_staticBundling_specs_43 = {
+       sizeof(struct PDSCH_Config__prb_BundlingType__staticBundling),
+       offsetof(struct PDSCH_Config__prb_BundlingType__staticBundling, _asn_ctx),
+       asn_MAP_staticBundling_tag2el_43,
+       1,      /* Count of tags in the map */
+       asn_MAP_staticBundling_oms_43,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_staticBundling_43 = {
+       "staticBundling",
+       "staticBundling",
+       &asn_OP_SEQUENCE,
+       asn_DEF_staticBundling_tags_43,
+       sizeof(asn_DEF_staticBundling_tags_43)
+               /sizeof(asn_DEF_staticBundling_tags_43[0]) - 1, /* 1 */
+       asn_DEF_staticBundling_tags_43, /* Same as above */
+       sizeof(asn_DEF_staticBundling_tags_43)
+               /sizeof(asn_DEF_staticBundling_tags_43[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_staticBundling_43,
+       1,      /* Elements count */
+       &asn_SPC_staticBundling_specs_43        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bundleSizeSet1_value2enum_48[] = {
+       { 0,    2,      "n4" },
+       { 1,    8,      "wideband" },
+       { 2,    11,     "n2-wideband" },
+       { 3,    11,     "n4-wideband" }
+};
+static const unsigned int asn_MAP_bundleSizeSet1_enum2value_48[] = {
+       2,      /* n2-wideband(2) */
+       0,      /* n4(0) */
+       3,      /* n4-wideband(3) */
+       1       /* wideband(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bundleSizeSet1_specs_48 = {
+       asn_MAP_bundleSizeSet1_value2enum_48,   /* "tag" => N; sorted by tag */
+       asn_MAP_bundleSizeSet1_enum2value_48,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bundleSizeSet1_tags_48[] = {
+       (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_bundleSizeSet1_48 = {
+       "bundleSizeSet1",
+       "bundleSizeSet1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bundleSizeSet1_tags_48,
+       sizeof(asn_DEF_bundleSizeSet1_tags_48)
+               /sizeof(asn_DEF_bundleSizeSet1_tags_48[0]) - 1, /* 1 */
+       asn_DEF_bundleSizeSet1_tags_48, /* Same as above */
+       sizeof(asn_DEF_bundleSizeSet1_tags_48)
+               /sizeof(asn_DEF_bundleSizeSet1_tags_48[0]), /* 2 */
+       { &asn_OER_type_bundleSizeSet1_constr_48, &asn_PER_type_bundleSizeSet1_constr_48, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bundleSizeSet1_specs_48        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bundleSizeSet2_value2enum_53[] = {
+       { 0,    2,      "n4" },
+       { 1,    8,      "wideband" }
+};
+static const unsigned int asn_MAP_bundleSizeSet2_enum2value_53[] = {
+       0,      /* n4(0) */
+       1       /* wideband(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bundleSizeSet2_specs_53 = {
+       asn_MAP_bundleSizeSet2_value2enum_53,   /* "tag" => N; sorted by tag */
+       asn_MAP_bundleSizeSet2_enum2value_53,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bundleSizeSet2_tags_53[] = {
+       (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_bundleSizeSet2_53 = {
+       "bundleSizeSet2",
+       "bundleSizeSet2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bundleSizeSet2_tags_53,
+       sizeof(asn_DEF_bundleSizeSet2_tags_53)
+               /sizeof(asn_DEF_bundleSizeSet2_tags_53[0]) - 1, /* 1 */
+       asn_DEF_bundleSizeSet2_tags_53, /* Same as above */
+       sizeof(asn_DEF_bundleSizeSet2_tags_53)
+               /sizeof(asn_DEF_bundleSizeSet2_tags_53[0]), /* 2 */
+       { &asn_OER_type_bundleSizeSet2_constr_53, &asn_PER_type_bundleSizeSet2_constr_53, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bundleSizeSet2_specs_53        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dynamicBundling_47[] = {
+       { ATF_POINTER, 2, offsetof(struct PDSCH_Config__prb_BundlingType__dynamicBundling, bundleSizeSet1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bundleSizeSet1_48,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bundleSizeSet1"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config__prb_BundlingType__dynamicBundling, bundleSizeSet2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bundleSizeSet2_53,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bundleSizeSet2"
+               },
+};
+static const int asn_MAP_dynamicBundling_oms_47[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_dynamicBundling_tags_47[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_dynamicBundling_tag2el_47[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bundleSizeSet1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bundleSizeSet2 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dynamicBundling_specs_47 = {
+       sizeof(struct PDSCH_Config__prb_BundlingType__dynamicBundling),
+       offsetof(struct PDSCH_Config__prb_BundlingType__dynamicBundling, _asn_ctx),
+       asn_MAP_dynamicBundling_tag2el_47,
+       2,      /* Count of tags in the map */
+       asn_MAP_dynamicBundling_oms_47, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamicBundling_47 = {
+       "dynamicBundling",
+       "dynamicBundling",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dynamicBundling_tags_47,
+       sizeof(asn_DEF_dynamicBundling_tags_47)
+               /sizeof(asn_DEF_dynamicBundling_tags_47[0]) - 1, /* 1 */
+       asn_DEF_dynamicBundling_tags_47,        /* Same as above */
+       sizeof(asn_DEF_dynamicBundling_tags_47)
+               /sizeof(asn_DEF_dynamicBundling_tags_47[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_dynamicBundling_47,
+       2,      /* Elements count */
+       &asn_SPC_dynamicBundling_specs_47       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_prb_BundlingType_42[] = {
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__prb_BundlingType, choice.staticBundling),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_staticBundling_43,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "staticBundling"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__prb_BundlingType, choice.dynamicBundling),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_dynamicBundling_47,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicBundling"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_prb_BundlingType_tag2el_42[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* staticBundling */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dynamicBundling */
+};
+static asn_CHOICE_specifics_t asn_SPC_prb_BundlingType_specs_42 = {
+       sizeof(struct PDSCH_Config__prb_BundlingType),
+       offsetof(struct PDSCH_Config__prb_BundlingType, _asn_ctx),
+       offsetof(struct PDSCH_Config__prb_BundlingType, present),
+       sizeof(((struct PDSCH_Config__prb_BundlingType *)0)->present),
+       asn_MAP_prb_BundlingType_tag2el_42,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_prb_BundlingType_42 = {
+       "prb-BundlingType",
+       "prb-BundlingType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_prb_BundlingType_constr_42, &asn_PER_type_prb_BundlingType_constr_42, CHOICE_constraint },
+       asn_MBR_prb_BundlingType_42,
+       2,      /* Elements count */
+       &asn_SPC_prb_BundlingType_specs_42      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_zp_CSI_RS_ResourceToAddModList_56[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_zp_CSI_RS_ResourceToAddModList_specs_56 = {
+       sizeof(struct PDSCH_Config__zp_CSI_RS_ResourceToAddModList),
+       offsetof(struct PDSCH_Config__zp_CSI_RS_ResourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_zp_CSI_RS_ResourceToAddModList_56 = {
+       "zp-CSI-RS-ResourceToAddModList",
+       "zp-CSI-RS-ResourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56,
+       sizeof(asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56[0]) - 1, /* 1 */
+       asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56, /* Same as above */
+       sizeof(asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceToAddModList_tags_56[0]), /* 2 */
+       { &asn_OER_type_zp_CSI_RS_ResourceToAddModList_constr_56, &asn_PER_type_zp_CSI_RS_ResourceToAddModList_constr_56, SEQUENCE_OF_constraint },
+       asn_MBR_zp_CSI_RS_ResourceToAddModList_56,
+       1,      /* Single element */
+       &asn_SPC_zp_CSI_RS_ResourceToAddModList_specs_56        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_zp_CSI_RS_ResourceToReleaseList_58[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_zp_CSI_RS_ResourceToReleaseList_specs_58 = {
+       sizeof(struct PDSCH_Config__zp_CSI_RS_ResourceToReleaseList),
+       offsetof(struct PDSCH_Config__zp_CSI_RS_ResourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_zp_CSI_RS_ResourceToReleaseList_58 = {
+       "zp-CSI-RS-ResourceToReleaseList",
+       "zp-CSI-RS-ResourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58,
+       sizeof(asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58[0]) - 1, /* 1 */
+       asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58,        /* Same as above */
+       sizeof(asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceToReleaseList_tags_58[0]), /* 2 */
+       { &asn_OER_type_zp_CSI_RS_ResourceToReleaseList_constr_58, &asn_PER_type_zp_CSI_RS_ResourceToReleaseList_constr_58, SEQUENCE_OF_constraint },
+       asn_MBR_zp_CSI_RS_ResourceToReleaseList_58,
+       1,      /* Single element */
+       &asn_SPC_zp_CSI_RS_ResourceToReleaseList_specs_58       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_60[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_specs_60 = {
+       sizeof(struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToAddModList),
+       offsetof(struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_60 = {
+       "aperiodic-ZP-CSI-RS-ResourceSetsToAddModList",
+       "aperiodic-ZP-CSI-RS-ResourceSetsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60,
+       sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60)
+               /sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60[0]) - 1, /* 1 */
+       asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60,   /* Same as above */
+       sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60)
+               /sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_tags_60[0]), /* 2 */
+       { &asn_OER_type_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60, &asn_PER_type_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60, SEQUENCE_OF_constraint },
+       asn_MBR_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_60,
+       1,      /* Single element */
+       &asn_SPC_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_specs_60  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_62[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62[] = {
+       (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_specs_62 = {
+       sizeof(struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList),
+       offsetof(struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_62 = {
+       "aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList",
+       "aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62,
+       sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62)
+               /sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62[0]) - 1, /* 1 */
+       asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62,  /* Same as above */
+       sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62)
+               /sizeof(asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_tags_62[0]), /* 2 */
+       { &asn_OER_type_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62, &asn_PER_type_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62, SEQUENCE_OF_constraint },
+       asn_MBR_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_62,
+       1,      /* Single element */
+       &asn_SPC_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_specs_62 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sp_ZP_CSI_RS_ResourceSetsToAddModList_64[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64[] = {
+       (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sp_ZP_CSI_RS_ResourceSetsToAddModList_specs_64 = {
+       sizeof(struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToAddModList),
+       offsetof(struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_64 = {
+       "sp-ZP-CSI-RS-ResourceSetsToAddModList",
+       "sp-ZP-CSI-RS-ResourceSetsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64,
+       sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64)
+               /sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64[0]) - 1, /* 1 */
+       asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64,  /* Same as above */
+       sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64)
+               /sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_tags_64[0]), /* 2 */
+       { &asn_OER_type_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64, &asn_PER_type_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64, SEQUENCE_OF_constraint },
+       asn_MBR_sp_ZP_CSI_RS_ResourceSetsToAddModList_64,
+       1,      /* Single element */
+       &asn_SPC_sp_ZP_CSI_RS_ResourceSetsToAddModList_specs_64 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sp_ZP_CSI_RS_ResourceSetsToReleaseList_66[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66[] = {
+       (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sp_ZP_CSI_RS_ResourceSetsToReleaseList_specs_66 = {
+       sizeof(struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToReleaseList),
+       offsetof(struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_66 = {
+       "sp-ZP-CSI-RS-ResourceSetsToReleaseList",
+       "sp-ZP-CSI-RS-ResourceSetsToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66,
+       sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66)
+               /sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66[0]) - 1, /* 1 */
+       asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66, /* Same as above */
+       sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66)
+               /sizeof(asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_tags_66[0]), /* 2 */
+       { &asn_OER_type_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66, &asn_PER_type_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66, SEQUENCE_OF_constraint },
+       asn_MBR_sp_ZP_CSI_RS_ResourceSetsToReleaseList_66,
+       1,      /* Single element */
+       &asn_SPC_sp_ZP_CSI_RS_ResourceSetsToReleaseList_specs_66        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_p_ZP_CSI_RS_ResourceSet_68[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ZP_CSI_RS_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_p_ZP_CSI_RS_ResourceSet_tag2el_68[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_p_ZP_CSI_RS_ResourceSet_specs_68 = {
+       sizeof(struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet),
+       offsetof(struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet, _asn_ctx),
+       offsetof(struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet, present),
+       sizeof(((struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet *)0)->present),
+       asn_MAP_p_ZP_CSI_RS_ResourceSet_tag2el_68,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_p_ZP_CSI_RS_ResourceSet_68 = {
+       "p-ZP-CSI-RS-ResourceSet",
+       "p-ZP-CSI-RS-ResourceSet",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_p_ZP_CSI_RS_ResourceSet_constr_68, &asn_PER_type_p_ZP_CSI_RS_ResourceSet_constr_68, CHOICE_constraint },
+       asn_MBR_p_ZP_CSI_RS_ResourceSet_68,
+       2,      /* Elements count */
+       &asn_SPC_p_ZP_CSI_RS_ResourceSet_specs_68       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDSCH_Config_1[] = {
+       { ATF_POINTER, 6, offsetof(struct PDSCH_Config, dataScramblingIdentityPDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_dataScramblingIdentityPDSCH_constr_2, &asn_PER_memb_dataScramblingIdentityPDSCH_constr_2,  memb_dataScramblingIdentityPDSCH_constraint_1 },
+               0, 0, /* No default value */
+               "dataScramblingIdentityPDSCH"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDSCH_Config, dmrs_DownlinkForPDSCH_MappingTypeA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_dmrs_DownlinkForPDSCH_MappingTypeA_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-DownlinkForPDSCH-MappingTypeA"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDSCH_Config, dmrs_DownlinkForPDSCH_MappingTypeB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_dmrs_DownlinkForPDSCH_MappingTypeB_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-DownlinkForPDSCH-MappingTypeB"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDSCH_Config, tci_StatesToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_tci_StatesToAddModList_9,
+               0,
+               { &asn_OER_memb_tci_StatesToAddModList_constr_9, &asn_PER_memb_tci_StatesToAddModList_constr_9,  memb_tci_StatesToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "tci-StatesToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDSCH_Config, tci_StatesToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_tci_StatesToReleaseList_11,
+               0,
+               { &asn_OER_memb_tci_StatesToReleaseList_constr_11, &asn_PER_memb_tci_StatesToReleaseList_constr_11,  memb_tci_StatesToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "tci-StatesToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config, vrb_ToPRB_Interleaver),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_vrb_ToPRB_Interleaver_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "vrb-ToPRB-Interleaver"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config, resourceAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceAllocation_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceAllocation"
+               },
+       { ATF_POINTER, 6, offsetof(struct PDSCH_Config, pdsch_TimeDomainAllocationList),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdsch_TimeDomainAllocationList_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-TimeDomainAllocationList"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDSCH_Config, pdsch_AggregationFactor),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_AggregationFactor_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-AggregationFactor"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDSCH_Config, rateMatchPatternToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToAddModList_27,
+               0,
+               { &asn_OER_memb_rateMatchPatternToAddModList_constr_27, &asn_PER_memb_rateMatchPatternToAddModList_constr_27,  memb_rateMatchPatternToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "rateMatchPatternToAddModList"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDSCH_Config, rateMatchPatternToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToReleaseList_29,
+               0,
+               { &asn_OER_memb_rateMatchPatternToReleaseList_constr_29, &asn_PER_memb_rateMatchPatternToReleaseList_constr_29,  memb_rateMatchPatternToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "rateMatchPatternToReleaseList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDSCH_Config, rateMatchPatternGroup1),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternGroup,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchPatternGroup1"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config, rateMatchPatternGroup2),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternGroup,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchPatternGroup2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config, rbg_Size),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rbg_Size_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rbg-Size"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDSCH_Config, mcs_Table),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_Table_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-Table"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config, maxNrofCodeWordsScheduledByDCI),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNrofCodeWordsScheduledByDCI_39,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNrofCodeWordsScheduledByDCI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_Config, prb_BundlingType),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_prb_BundlingType_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "prb-BundlingType"
+               },
+       { ATF_POINTER, 7, offsetof(struct PDSCH_Config, zp_CSI_RS_ResourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               0,
+               &asn_DEF_zp_CSI_RS_ResourceToAddModList_56,
+               0,
+               { &asn_OER_memb_zp_CSI_RS_ResourceToAddModList_constr_56, &asn_PER_memb_zp_CSI_RS_ResourceToAddModList_constr_56,  memb_zp_CSI_RS_ResourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "zp-CSI-RS-ResourceToAddModList"
+               },
+       { ATF_POINTER, 6, offsetof(struct PDSCH_Config, zp_CSI_RS_ResourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               0,
+               &asn_DEF_zp_CSI_RS_ResourceToReleaseList_58,
+               0,
+               { &asn_OER_memb_zp_CSI_RS_ResourceToReleaseList_constr_58, &asn_PER_memb_zp_CSI_RS_ResourceToReleaseList_constr_58,  memb_zp_CSI_RS_ResourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "zp-CSI-RS-ResourceToReleaseList"
+               },
+       { ATF_POINTER, 5, offsetof(struct PDSCH_Config, aperiodic_ZP_CSI_RS_ResourceSetsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               0,
+               &asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_60,
+               0,
+               { &asn_OER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60, &asn_PER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constr_60,  memb_aperiodic_ZP_CSI_RS_ResourceSetsToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "aperiodic-ZP-CSI-RS-ResourceSetsToAddModList"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDSCH_Config, aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               0,
+               &asn_DEF_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_62,
+               0,
+               { &asn_OER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62, &asn_PER_memb_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constr_62,  memb_aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDSCH_Config, sp_ZP_CSI_RS_ResourceSetsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               0,
+               &asn_DEF_sp_ZP_CSI_RS_ResourceSetsToAddModList_64,
+               0,
+               { &asn_OER_memb_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64, &asn_PER_memb_sp_ZP_CSI_RS_ResourceSetsToAddModList_constr_64,  memb_sp_ZP_CSI_RS_ResourceSetsToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "sp-ZP-CSI-RS-ResourceSetsToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDSCH_Config, sp_ZP_CSI_RS_ResourceSetsToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               0,
+               &asn_DEF_sp_ZP_CSI_RS_ResourceSetsToReleaseList_66,
+               0,
+               { &asn_OER_memb_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66, &asn_PER_memb_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constr_66,  memb_sp_ZP_CSI_RS_ResourceSetsToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "sp-ZP-CSI-RS-ResourceSetsToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_Config, p_ZP_CSI_RS_ResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_p_ZP_CSI_RS_ResourceSet_68,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-ZP-CSI-RS-ResourceSet"
+               },
+};
+static const int asn_MAP_PDSCH_Config_oms_1[] = { 0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 19, 20, 21, 22, 23 };
+static const ber_tlv_tag_t asn_DEF_PDSCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDSCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dataScramblingIdentityPDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dmrs-DownlinkForPDSCH-MappingTypeA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dmrs-DownlinkForPDSCH-MappingTypeB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* tci-StatesToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* tci-StatesToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* vrb-ToPRB-Interleaver */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* resourceAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* pdsch-TimeDomainAllocationList */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* pdsch-AggregationFactor */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* rateMatchPatternToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* rateMatchPatternToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* rateMatchPatternGroup1 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* rateMatchPatternGroup2 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* rbg-Size */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* mcs-Table */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* maxNrofCodeWordsScheduledByDCI */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* prb-BundlingType */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* zp-CSI-RS-ResourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* zp-CSI-RS-ResourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* aperiodic-ZP-CSI-RS-ResourceSetsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* aperiodic-ZP-CSI-RS-ResourceSetsToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* sp-ZP-CSI-RS-ResourceSetsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* sp-ZP-CSI-RS-ResourceSetsToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 } /* p-ZP-CSI-RS-ResourceSet */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDSCH_Config_specs_1 = {
+       sizeof(struct PDSCH_Config),
+       offsetof(struct PDSCH_Config, _asn_ctx),
+       asn_MAP_PDSCH_Config_tag2el_1,
+       24,     /* Count of tags in the map */
+       asn_MAP_PDSCH_Config_oms_1,     /* Optional members */
+       21, 0,  /* Root/Additions */
+       24,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDSCH_Config = {
+       "PDSCH-Config",
+       "PDSCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDSCH_Config_tags_1,
+       sizeof(asn_DEF_PDSCH_Config_tags_1)
+               /sizeof(asn_DEF_PDSCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_Config_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PDSCH_Config_tags_1)
+               /sizeof(asn_DEF_PDSCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDSCH_Config_1,
+       24,     /* Elements count */
+       &asn_SPC_PDSCH_Config_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-Config.h b/src/codec_utils/RRC/PDSCH-Config.h
new file mode 100644 (file)
index 0000000..485fd58
--- /dev/null
@@ -0,0 +1,267 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_Config_H_
+#define        _PDSCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "TCI-StateId.h"
+#include "RateMatchPatternId.h"
+#include <constr_SEQUENCE.h>
+#include "ZP-CSI-RS-ResourceId.h"
+#include "ZP-CSI-RS-ResourceSetId.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR {
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_NOTHING,    /* No components present */
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_release,
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR_setup
+} PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR;
+typedef enum PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR {
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR_NOTHING,    /* No components present */
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR_release,
+       PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR_setup
+} PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR;
+typedef enum PDSCH_Config__vrb_ToPRB_Interleaver {
+       PDSCH_Config__vrb_ToPRB_Interleaver_n2  = 0,
+       PDSCH_Config__vrb_ToPRB_Interleaver_n4  = 1
+} e_PDSCH_Config__vrb_ToPRB_Interleaver;
+typedef enum PDSCH_Config__resourceAllocation {
+       PDSCH_Config__resourceAllocation_resourceAllocationType0        = 0,
+       PDSCH_Config__resourceAllocation_resourceAllocationType1        = 1,
+       PDSCH_Config__resourceAllocation_dynamicSwitch  = 2
+} e_PDSCH_Config__resourceAllocation;
+typedef enum PDSCH_Config__pdsch_TimeDomainAllocationList_PR {
+       PDSCH_Config__pdsch_TimeDomainAllocationList_PR_NOTHING,        /* No components present */
+       PDSCH_Config__pdsch_TimeDomainAllocationList_PR_release,
+       PDSCH_Config__pdsch_TimeDomainAllocationList_PR_setup
+} PDSCH_Config__pdsch_TimeDomainAllocationList_PR;
+typedef enum PDSCH_Config__pdsch_AggregationFactor {
+       PDSCH_Config__pdsch_AggregationFactor_n2        = 0,
+       PDSCH_Config__pdsch_AggregationFactor_n4        = 1,
+       PDSCH_Config__pdsch_AggregationFactor_n8        = 2
+} e_PDSCH_Config__pdsch_AggregationFactor;
+typedef enum PDSCH_Config__rbg_Size {
+       PDSCH_Config__rbg_Size_config1  = 0,
+       PDSCH_Config__rbg_Size_config2  = 1
+} e_PDSCH_Config__rbg_Size;
+typedef enum PDSCH_Config__mcs_Table {
+       PDSCH_Config__mcs_Table_qam256  = 0,
+       PDSCH_Config__mcs_Table_qam64LowSE      = 1
+} e_PDSCH_Config__mcs_Table;
+typedef enum PDSCH_Config__maxNrofCodeWordsScheduledByDCI {
+       PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n1 = 0,
+       PDSCH_Config__maxNrofCodeWordsScheduledByDCI_n2 = 1
+} e_PDSCH_Config__maxNrofCodeWordsScheduledByDCI;
+typedef enum PDSCH_Config__prb_BundlingType_PR {
+       PDSCH_Config__prb_BundlingType_PR_NOTHING,      /* No components present */
+       PDSCH_Config__prb_BundlingType_PR_staticBundling,
+       PDSCH_Config__prb_BundlingType_PR_dynamicBundling
+} PDSCH_Config__prb_BundlingType_PR;
+typedef enum PDSCH_Config__prb_BundlingType__staticBundling__bundleSize {
+       PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_n4   = 0,
+       PDSCH_Config__prb_BundlingType__staticBundling__bundleSize_wideband     = 1
+} e_PDSCH_Config__prb_BundlingType__staticBundling__bundleSize;
+typedef enum PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1 {
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1_n4      = 0,
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1_wideband        = 1,
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1_n2_wideband     = 2,
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1_n4_wideband     = 3
+} e_PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet1;
+typedef enum PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet2 {
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet2_n4      = 0,
+       PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet2_wideband        = 1
+} e_PDSCH_Config__prb_BundlingType__dynamicBundling__bundleSizeSet2;
+typedef enum PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR {
+       PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR_NOTHING,       /* No components present */
+       PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR_release,
+       PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR_setup
+} PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR;
+
+/* Forward declarations */
+struct RateMatchPatternGroup;
+struct DMRS_DownlinkConfig;
+struct TCI_State;
+struct PDSCH_TimeDomainResourceAllocationList;
+struct RateMatchPattern;
+struct ZP_CSI_RS_Resource;
+struct ZP_CSI_RS_ResourceSet;
+
+/* PDSCH-Config */
+typedef struct PDSCH_Config {
+       long    *dataScramblingIdentityPDSCH;   /* OPTIONAL */
+       struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA {
+               PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_PR present;
+               union PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeA_u {
+                       NULL_t   release;
+                       struct DMRS_DownlinkConfig      *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dmrs_DownlinkForPDSCH_MappingTypeA;
+       struct PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB {
+               PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_PR present;
+               union PDSCH_Config__dmrs_DownlinkForPDSCH_MappingTypeB_u {
+                       NULL_t   release;
+                       struct DMRS_DownlinkConfig      *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dmrs_DownlinkForPDSCH_MappingTypeB;
+       struct PDSCH_Config__tci_StatesToAddModList {
+               A_SEQUENCE_OF(struct TCI_State) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tci_StatesToAddModList;
+       struct PDSCH_Config__tci_StatesToReleaseList {
+               A_SEQUENCE_OF(TCI_StateId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tci_StatesToReleaseList;
+       long    *vrb_ToPRB_Interleaver; /* OPTIONAL */
+       long     resourceAllocation;
+       struct PDSCH_Config__pdsch_TimeDomainAllocationList {
+               PDSCH_Config__pdsch_TimeDomainAllocationList_PR present;
+               union PDSCH_Config__pdsch_TimeDomainAllocationList_u {
+                       NULL_t   release;
+                       struct PDSCH_TimeDomainResourceAllocationList   *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdsch_TimeDomainAllocationList;
+       long    *pdsch_AggregationFactor;       /* OPTIONAL */
+       struct PDSCH_Config__rateMatchPatternToAddModList {
+               A_SEQUENCE_OF(struct RateMatchPattern) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rateMatchPatternToAddModList;
+       struct PDSCH_Config__rateMatchPatternToReleaseList {
+               A_SEQUENCE_OF(RateMatchPatternId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rateMatchPatternToReleaseList;
+       struct RateMatchPatternGroup    *rateMatchPatternGroup1;        /* OPTIONAL */
+       struct RateMatchPatternGroup    *rateMatchPatternGroup2;        /* OPTIONAL */
+       long     rbg_Size;
+       long    *mcs_Table;     /* OPTIONAL */
+       long    *maxNrofCodeWordsScheduledByDCI;        /* OPTIONAL */
+       struct PDSCH_Config__prb_BundlingType {
+               PDSCH_Config__prb_BundlingType_PR present;
+               union PDSCH_Config__prb_BundlingType_u {
+                       struct PDSCH_Config__prb_BundlingType__staticBundling {
+                               long    *bundleSize;    /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *staticBundling;
+                       struct PDSCH_Config__prb_BundlingType__dynamicBundling {
+                               long    *bundleSizeSet1;        /* OPTIONAL */
+                               long    *bundleSizeSet2;        /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *dynamicBundling;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } prb_BundlingType;
+       struct PDSCH_Config__zp_CSI_RS_ResourceToAddModList {
+               A_SEQUENCE_OF(struct ZP_CSI_RS_Resource) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *zp_CSI_RS_ResourceToAddModList;
+       struct PDSCH_Config__zp_CSI_RS_ResourceToReleaseList {
+               A_SEQUENCE_OF(ZP_CSI_RS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *zp_CSI_RS_ResourceToReleaseList;
+       struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToAddModList {
+               A_SEQUENCE_OF(struct ZP_CSI_RS_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *aperiodic_ZP_CSI_RS_ResourceSetsToAddModList;
+       struct PDSCH_Config__aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList {
+               A_SEQUENCE_OF(ZP_CSI_RS_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *aperiodic_ZP_CSI_RS_ResourceSetsToReleaseList;
+       struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToAddModList {
+               A_SEQUENCE_OF(struct ZP_CSI_RS_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sp_ZP_CSI_RS_ResourceSetsToAddModList;
+       struct PDSCH_Config__sp_ZP_CSI_RS_ResourceSetsToReleaseList {
+               A_SEQUENCE_OF(ZP_CSI_RS_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sp_ZP_CSI_RS_ResourceSetsToReleaseList;
+       struct PDSCH_Config__p_ZP_CSI_RS_ResourceSet {
+               PDSCH_Config__p_ZP_CSI_RS_ResourceSet_PR present;
+               union PDSCH_Config__p_ZP_CSI_RS_ResourceSet_u {
+                       NULL_t   release;
+                       struct ZP_CSI_RS_ResourceSet    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *p_ZP_CSI_RS_ResourceSet;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_vrb_ToPRB_Interleaver_13;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceAllocation_16; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_AggregationFactor_23;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rbg_Size_33;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_Table_36;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNrofCodeWordsScheduledByDCI_39;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bundleSize_44; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bundleSizeSet1_48;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bundleSizeSet2_53;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_Config_1[24];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-ConfigCommon.c b/src/codec_utils/RRC/PDSCH-ConfigCommon.c
new file mode 100644 (file)
index 0000000..c762935
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-ConfigCommon.h"
+
+#include "PDSCH-TimeDomainResourceAllocationList.h"
+asn_TYPE_member_t asn_MBR_PDSCH_ConfigCommon_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PDSCH_ConfigCommon, pdsch_TimeDomainAllocationList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_TimeDomainResourceAllocationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-TimeDomainAllocationList"
+               },
+};
+static const int asn_MAP_PDSCH_ConfigCommon_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PDSCH_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDSCH_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pdsch-TimeDomainAllocationList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ConfigCommon_specs_1 = {
+       sizeof(struct PDSCH_ConfigCommon),
+       offsetof(struct PDSCH_ConfigCommon, _asn_ctx),
+       asn_MAP_PDSCH_ConfigCommon_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_PDSCH_ConfigCommon_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDSCH_ConfigCommon = {
+       "PDSCH-ConfigCommon",
+       "PDSCH-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDSCH_ConfigCommon_tags_1,
+       sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_ConfigCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDSCH_ConfigCommon_1,
+       1,      /* Elements count */
+       &asn_SPC_PDSCH_ConfigCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-ConfigCommon.h b/src/codec_utils/RRC/PDSCH-ConfigCommon.h
new file mode 100644 (file)
index 0000000..0fc08c8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_ConfigCommon_H_
+#define        _PDSCH_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PDSCH_TimeDomainResourceAllocationList;
+
+/* PDSCH-ConfigCommon */
+typedef struct PDSCH_ConfigCommon {
+       struct PDSCH_TimeDomainResourceAllocationList   *pdsch_TimeDomainAllocationList;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_ConfigCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_ConfigCommon_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-ServingCellConfig.c b/src/codec_utils/RRC/PDSCH-ServingCellConfig.c
new file mode 100644 (file)
index 0000000..011cc77
--- /dev/null
@@ -0,0 +1,346 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-ServingCellConfig.h"
+
+#include "PDSCH-CodeBlockGroupTransmission.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.
+ */
+static int
+memb_maxMIMO_Layers_constraint_18(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 <= 8)) {
+               /* 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_codeBlockGroupTransmission_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_codeBlockGroupTransmission_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_xOverhead_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_xOverhead_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nrofHARQ_ProcessesForPDSCH_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofHARQ_ProcessesForPDSCH_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxMIMO_Layers_constr_19 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxMIMO_Layers_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_codeBlockGroupTransmission_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_ServingCellConfig__codeBlockGroupTransmission, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PDSCH_ServingCellConfig__codeBlockGroupTransmission, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_CodeBlockGroupTransmission,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_codeBlockGroupTransmission_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_codeBlockGroupTransmission_specs_2 = {
+       sizeof(struct PDSCH_ServingCellConfig__codeBlockGroupTransmission),
+       offsetof(struct PDSCH_ServingCellConfig__codeBlockGroupTransmission, _asn_ctx),
+       offsetof(struct PDSCH_ServingCellConfig__codeBlockGroupTransmission, present),
+       sizeof(((struct PDSCH_ServingCellConfig__codeBlockGroupTransmission *)0)->present),
+       asn_MAP_codeBlockGroupTransmission_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_codeBlockGroupTransmission_2 = {
+       "codeBlockGroupTransmission",
+       "codeBlockGroupTransmission",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_codeBlockGroupTransmission_constr_2, &asn_PER_type_codeBlockGroupTransmission_constr_2, CHOICE_constraint },
+       asn_MBR_codeBlockGroupTransmission_2,
+       2,      /* Elements count */
+       &asn_SPC_codeBlockGroupTransmission_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_xOverhead_value2enum_5[] = {
+       { 0,    4,      "xOh6" },
+       { 1,    5,      "xOh12" },
+       { 2,    5,      "xOh18" }
+};
+static const unsigned int asn_MAP_xOverhead_enum2value_5[] = {
+       1,      /* xOh12(1) */
+       2,      /* xOh18(2) */
+       0       /* xOh6(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_xOverhead_specs_5 = {
+       asn_MAP_xOverhead_value2enum_5, /* "tag" => N; sorted by tag */
+       asn_MAP_xOverhead_enum2value_5, /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_xOverhead_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_xOverhead_5 = {
+       "xOverhead",
+       "xOverhead",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_xOverhead_tags_5,
+       sizeof(asn_DEF_xOverhead_tags_5)
+               /sizeof(asn_DEF_xOverhead_tags_5[0]) - 1, /* 1 */
+       asn_DEF_xOverhead_tags_5,       /* Same as above */
+       sizeof(asn_DEF_xOverhead_tags_5)
+               /sizeof(asn_DEF_xOverhead_tags_5[0]), /* 2 */
+       { &asn_OER_type_xOverhead_constr_5, &asn_PER_type_xOverhead_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_xOverhead_specs_5      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofHARQ_ProcessesForPDSCH_value2enum_9[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n6" },
+       { 3,    3,      "n10" },
+       { 4,    3,      "n12" },
+       { 5,    3,      "n16" }
+};
+static const unsigned int asn_MAP_nrofHARQ_ProcessesForPDSCH_enum2value_9[] = {
+       3,      /* n10(3) */
+       4,      /* n12(4) */
+       5,      /* n16(5) */
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n6(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofHARQ_ProcessesForPDSCH_specs_9 = {
+       asn_MAP_nrofHARQ_ProcessesForPDSCH_value2enum_9,        /* "tag" => N; sorted by tag */
+       asn_MAP_nrofHARQ_ProcessesForPDSCH_enum2value_9,        /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9[] = {
+       (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_nrofHARQ_ProcessesForPDSCH_9 = {
+       "nrofHARQ-ProcessesForPDSCH",
+       "nrofHARQ-ProcessesForPDSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9,
+       sizeof(asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9)
+               /sizeof(asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9[0]) - 1, /* 1 */
+       asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9,      /* Same as above */
+       sizeof(asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9)
+               /sizeof(asn_DEF_nrofHARQ_ProcessesForPDSCH_tags_9[0]), /* 2 */
+       { &asn_OER_type_nrofHARQ_ProcessesForPDSCH_constr_9, &asn_PER_type_nrofHARQ_ProcessesForPDSCH_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofHARQ_ProcessesForPDSCH_specs_9     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_18[] = {
+       { ATF_POINTER, 2, offsetof(struct PDSCH_ServingCellConfig__ext1, maxMIMO_Layers),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxMIMO_Layers_constr_19, &asn_PER_memb_maxMIMO_Layers_constr_19,  memb_maxMIMO_Layers_constraint_18 },
+               0, 0, /* No default value */
+               "maxMIMO-Layers"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_ServingCellConfig__ext1, processingType2Enabled),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "processingType2Enabled"
+               },
+};
+static const int asn_MAP_ext1_oms_18[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_18[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxMIMO-Layers */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* processingType2Enabled */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_18 = {
+       sizeof(struct PDSCH_ServingCellConfig__ext1),
+       offsetof(struct PDSCH_ServingCellConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_18,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_18,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_18 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_18,
+       sizeof(asn_DEF_ext1_tags_18)
+               /sizeof(asn_DEF_ext1_tags_18[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_18,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_18)
+               /sizeof(asn_DEF_ext1_tags_18[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_18,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_18  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDSCH_ServingCellConfig_1[] = {
+       { ATF_POINTER, 5, offsetof(struct PDSCH_ServingCellConfig, codeBlockGroupTransmission),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_codeBlockGroupTransmission_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codeBlockGroupTransmission"
+               },
+       { ATF_POINTER, 4, offsetof(struct PDSCH_ServingCellConfig, xOverhead),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_xOverhead_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "xOverhead"
+               },
+       { ATF_POINTER, 3, offsetof(struct PDSCH_ServingCellConfig, nrofHARQ_ProcessesForPDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofHARQ_ProcessesForPDSCH_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofHARQ-ProcessesForPDSCH"
+               },
+       { ATF_POINTER, 2, offsetof(struct PDSCH_ServingCellConfig, pucch_Cell),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-Cell"
+               },
+       { ATF_POINTER, 1, offsetof(struct PDSCH_ServingCellConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_ext1_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_PDSCH_ServingCellConfig_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_PDSCH_ServingCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDSCH_ServingCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* codeBlockGroupTransmission */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* xOverhead */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrofHARQ-ProcessesForPDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pucch-Cell */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ServingCellConfig_specs_1 = {
+       sizeof(struct PDSCH_ServingCellConfig),
+       offsetof(struct PDSCH_ServingCellConfig, _asn_ctx),
+       asn_MAP_PDSCH_ServingCellConfig_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_PDSCH_ServingCellConfig_oms_1,  /* Optional members */
+       4, 1,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDSCH_ServingCellConfig = {
+       "PDSCH-ServingCellConfig",
+       "PDSCH-ServingCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDSCH_ServingCellConfig_tags_1,
+       sizeof(asn_DEF_PDSCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PDSCH_ServingCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_ServingCellConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PDSCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PDSCH_ServingCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDSCH_ServingCellConfig_1,
+       5,      /* Elements count */
+       &asn_SPC_PDSCH_ServingCellConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-ServingCellConfig.h b/src/codec_utils/RRC/PDSCH-ServingCellConfig.h
new file mode 100644 (file)
index 0000000..0157a27
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_ServingCellConfig_H_
+#define        _PDSCH_ServingCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "ServCellIndex.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR {
+       PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR_NOTHING, /* No components present */
+       PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR_release,
+       PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR_setup
+} PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR;
+typedef enum PDSCH_ServingCellConfig__xOverhead {
+       PDSCH_ServingCellConfig__xOverhead_xOh6 = 0,
+       PDSCH_ServingCellConfig__xOverhead_xOh12        = 1,
+       PDSCH_ServingCellConfig__xOverhead_xOh18        = 2
+} e_PDSCH_ServingCellConfig__xOverhead;
+typedef enum PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH {
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n2  = 0,
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n4  = 1,
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n6  = 2,
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n10 = 3,
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n12 = 4,
+       PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH_n16 = 5
+} e_PDSCH_ServingCellConfig__nrofHARQ_ProcessesForPDSCH;
+
+/* Forward declarations */
+struct PDSCH_CodeBlockGroupTransmission;
+
+/* PDSCH-ServingCellConfig */
+typedef struct PDSCH_ServingCellConfig {
+       struct PDSCH_ServingCellConfig__codeBlockGroupTransmission {
+               PDSCH_ServingCellConfig__codeBlockGroupTransmission_PR present;
+               union PDSCH_ServingCellConfig__codeBlockGroupTransmission_u {
+                       NULL_t   release;
+                       struct PDSCH_CodeBlockGroupTransmission *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *codeBlockGroupTransmission;
+       long    *xOverhead;     /* OPTIONAL */
+       long    *nrofHARQ_ProcessesForPDSCH;    /* OPTIONAL */
+       ServCellIndex_t *pucch_Cell;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct PDSCH_ServingCellConfig__ext1 {
+               long    *maxMIMO_Layers;        /* OPTIONAL */
+               BOOLEAN_t       *processingType2Enabled;        /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_ServingCellConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_xOverhead_5;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofHARQ_ProcessesForPDSCH_9;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_ServingCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ServingCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_ServingCellConfig_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_ServingCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.c b/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.c
new file mode 100644 (file)
index 0000000..765e56b
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-TimeDomainResourceAllocation.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_k0_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 >= 0 && value <= 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 int
+memb_startSymbolAndLength_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 >= 0 && value <= 127)) {
+               /* 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_mappingType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mappingType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_k0_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_k0_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_mappingType_value2enum_3[] = {
+       { 0,    5,      "typeA" },
+       { 1,    5,      "typeB" }
+};
+static const unsigned int asn_MAP_mappingType_enum2value_3[] = {
+       0,      /* typeA(0) */
+       1       /* typeB(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mappingType_specs_3 = {
+       asn_MAP_mappingType_value2enum_3,       /* "tag" => N; sorted by tag */
+       asn_MAP_mappingType_enum2value_3,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mappingType_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_mappingType_3 = {
+       "mappingType",
+       "mappingType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mappingType_tags_3,
+       sizeof(asn_DEF_mappingType_tags_3)
+               /sizeof(asn_DEF_mappingType_tags_3[0]) - 1, /* 1 */
+       asn_DEF_mappingType_tags_3,     /* Same as above */
+       sizeof(asn_DEF_mappingType_tags_3)
+               /sizeof(asn_DEF_mappingType_tags_3[0]), /* 2 */
+       { &asn_OER_type_mappingType_constr_3, &asn_PER_type_mappingType_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mappingType_specs_3    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocation_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PDSCH_TimeDomainResourceAllocation, k0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_k0_constr_2, &asn_PER_memb_k0_constr_2,  memb_k0_constraint_1 },
+               0, 0, /* No default value */
+               "k0"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_TimeDomainResourceAllocation, mappingType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mappingType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mappingType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_TimeDomainResourceAllocation, startSymbolAndLength),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startSymbolAndLength_constr_6, &asn_PER_memb_startSymbolAndLength_constr_6,  memb_startSymbolAndLength_constraint_1 },
+               0, 0, /* No default value */
+               "startSymbolAndLength"
+               },
+};
+static const int asn_MAP_PDSCH_TimeDomainResourceAllocation_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PDSCH_TimeDomainResourceAllocation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* k0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mappingType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startSymbolAndLength */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1 = {
+       sizeof(struct PDSCH_TimeDomainResourceAllocation),
+       offsetof(struct PDSCH_TimeDomainResourceAllocation, _asn_ctx),
+       asn_MAP_PDSCH_TimeDomainResourceAllocation_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_PDSCH_TimeDomainResourceAllocation_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocation = {
+       "PDSCH-TimeDomainResourceAllocation",
+       "PDSCH-TimeDomainResourceAllocation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1,
+       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1)
+               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1)
+               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PDSCH_TimeDomainResourceAllocation_1,
+       3,      /* Elements count */
+       &asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.h b/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocation.h
new file mode 100644 (file)
index 0000000..1e22503
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_TimeDomainResourceAllocation_H_
+#define        _PDSCH_TimeDomainResourceAllocation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PDSCH_TimeDomainResourceAllocation__mappingType {
+       PDSCH_TimeDomainResourceAllocation__mappingType_typeA   = 0,
+       PDSCH_TimeDomainResourceAllocation__mappingType_typeB   = 1
+} e_PDSCH_TimeDomainResourceAllocation__mappingType;
+
+/* PDSCH-TimeDomainResourceAllocation */
+typedef struct PDSCH_TimeDomainResourceAllocation {
+       long    *k0;    /* OPTIONAL */
+       long     mappingType;
+       long     startSymbolAndLength;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_TimeDomainResourceAllocation_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_mappingType_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocation;
+extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocation_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_TimeDomainResourceAllocation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.c b/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.c
new file mode 100644 (file)
index 0000000..eca495a
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDSCH-TimeDomainResourceAllocationList.h"
+
+#include "PDSCH-TimeDomainResourceAllocation.h"
+static asn_oer_constraints_t asn_OER_type_PDSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocationList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PDSCH_TimeDomainResourceAllocation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1 = {
+       sizeof(struct PDSCH_TimeDomainResourceAllocationList),
+       offsetof(struct PDSCH_TimeDomainResourceAllocationList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocationList = {
+       "PDSCH-TimeDomainResourceAllocationList",
+       "PDSCH-TimeDomainResourceAllocationList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1,
+       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1)
+               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
+       asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1)
+               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PDSCH_TimeDomainResourceAllocationList_constr_1, &asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PDSCH_TimeDomainResourceAllocationList_1,
+       1,      /* Single element */
+       &asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.h b/src/codec_utils/RRC/PDSCH-TimeDomainResourceAllocationList.h
new file mode 100644 (file)
index 0000000..afa5b88
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDSCH_TimeDomainResourceAllocationList_H_
+#define        _PDSCH_TimeDomainResourceAllocationList_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 PDSCH_TimeDomainResourceAllocation;
+
+/* PDSCH-TimeDomainResourceAllocationList */
+typedef struct PDSCH_TimeDomainResourceAllocationList {
+       A_SEQUENCE_OF(struct PDSCH_TimeDomainResourceAllocation) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PDSCH_TimeDomainResourceAllocationList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocationList;
+extern asn_SET_OF_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocationList_1[1];
+extern asn_per_constraints_t asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDSCH_TimeDomainResourceAllocationList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PDU-SessionID.c b/src/codec_utils/RRC/PDU-SessionID.c
new file mode 100644 (file)
index 0000000..5ef3629
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PDU-SessionID.h"
+
+int
+PDU_SessionID_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_PDU_SessionID_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PDU_SessionID_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_PDU_SessionID_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PDU_SessionID = {
+       "PDU-SessionID",
+       "PDU-SessionID",
+       &asn_OP_NativeInteger,
+       asn_DEF_PDU_SessionID_tags_1,
+       sizeof(asn_DEF_PDU_SessionID_tags_1)
+               /sizeof(asn_DEF_PDU_SessionID_tags_1[0]), /* 1 */
+       asn_DEF_PDU_SessionID_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PDU_SessionID_tags_1)
+               /sizeof(asn_DEF_PDU_SessionID_tags_1[0]), /* 1 */
+       { &asn_OER_type_PDU_SessionID_constr_1, &asn_PER_type_PDU_SessionID_constr_1, PDU_SessionID_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PDU-SessionID.h b/src/codec_utils/RRC/PDU-SessionID.h
new file mode 100644 (file)
index 0000000..bd3fa26
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PDU_SessionID_H_
+#define        _PDU_SessionID_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PDU-SessionID */
+typedef long    PDU_SessionID_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PDU_SessionID_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PDU_SessionID;
+asn_struct_free_f PDU_SessionID_free;
+asn_struct_print_f PDU_SessionID_print;
+asn_constr_check_f PDU_SessionID_constraint;
+ber_type_decoder_f PDU_SessionID_decode_ber;
+der_type_encoder_f PDU_SessionID_encode_der;
+xer_type_decoder_f PDU_SessionID_decode_xer;
+xer_type_encoder_f PDU_SessionID_encode_xer;
+oer_type_decoder_f PDU_SessionID_decode_oer;
+oer_type_encoder_f PDU_SessionID_encode_oer;
+per_type_decoder_f PDU_SessionID_decode_uper;
+per_type_encoder_f PDU_SessionID_encode_uper;
+per_type_decoder_f PDU_SessionID_decode_aper;
+per_type_encoder_f PDU_SessionID_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PDU_SessionID_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PHR-Config.c b/src/codec_utils/RRC/PHR-Config.c
new file mode 100644 (file)
index 0000000..4cfd779
--- /dev/null
@@ -0,0 +1,334 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PHR-Config.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.
+ */
+static asn_oer_constraints_t asn_OER_type_phr_PeriodicTimer_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phr_PeriodicTimer_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_phr_ProhibitTimer_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phr_ProhibitTimer_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_phr_Tx_PowerFactorChange_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phr_Tx_PowerFactorChange_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_phr_ModeOtherCG_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_phr_ModeOtherCG_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_phr_PeriodicTimer_value2enum_2[] = {
+       { 0,    4,      "sf10" },
+       { 1,    4,      "sf20" },
+       { 2,    4,      "sf50" },
+       { 3,    5,      "sf100" },
+       { 4,    5,      "sf200" },
+       { 5,    5,      "sf500" },
+       { 6,    6,      "sf1000" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_phr_PeriodicTimer_enum2value_2[] = {
+       7,      /* infinity(7) */
+       0,      /* sf10(0) */
+       3,      /* sf100(3) */
+       6,      /* sf1000(6) */
+       1,      /* sf20(1) */
+       4,      /* sf200(4) */
+       2,      /* sf50(2) */
+       5       /* sf500(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_phr_PeriodicTimer_specs_2 = {
+       asn_MAP_phr_PeriodicTimer_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_phr_PeriodicTimer_enum2value_2, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_phr_PeriodicTimer_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_phr_PeriodicTimer_2 = {
+       "phr-PeriodicTimer",
+       "phr-PeriodicTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_phr_PeriodicTimer_tags_2,
+       sizeof(asn_DEF_phr_PeriodicTimer_tags_2)
+               /sizeof(asn_DEF_phr_PeriodicTimer_tags_2[0]) - 1, /* 1 */
+       asn_DEF_phr_PeriodicTimer_tags_2,       /* Same as above */
+       sizeof(asn_DEF_phr_PeriodicTimer_tags_2)
+               /sizeof(asn_DEF_phr_PeriodicTimer_tags_2[0]), /* 2 */
+       { &asn_OER_type_phr_PeriodicTimer_constr_2, &asn_PER_type_phr_PeriodicTimer_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_phr_PeriodicTimer_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_phr_ProhibitTimer_value2enum_11[] = {
+       { 0,    3,      "sf0" },
+       { 1,    4,      "sf10" },
+       { 2,    4,      "sf20" },
+       { 3,    4,      "sf50" },
+       { 4,    5,      "sf100" },
+       { 5,    5,      "sf200" },
+       { 6,    5,      "sf500" },
+       { 7,    6,      "sf1000" }
+};
+static const unsigned int asn_MAP_phr_ProhibitTimer_enum2value_11[] = {
+       0,      /* sf0(0) */
+       1,      /* sf10(1) */
+       4,      /* sf100(4) */
+       7,      /* sf1000(7) */
+       2,      /* sf20(2) */
+       5,      /* sf200(5) */
+       3,      /* sf50(3) */
+       6       /* sf500(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_phr_ProhibitTimer_specs_11 = {
+       asn_MAP_phr_ProhibitTimer_value2enum_11,        /* "tag" => N; sorted by tag */
+       asn_MAP_phr_ProhibitTimer_enum2value_11,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_phr_ProhibitTimer_tags_11[] = {
+       (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_phr_ProhibitTimer_11 = {
+       "phr-ProhibitTimer",
+       "phr-ProhibitTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_phr_ProhibitTimer_tags_11,
+       sizeof(asn_DEF_phr_ProhibitTimer_tags_11)
+               /sizeof(asn_DEF_phr_ProhibitTimer_tags_11[0]) - 1, /* 1 */
+       asn_DEF_phr_ProhibitTimer_tags_11,      /* Same as above */
+       sizeof(asn_DEF_phr_ProhibitTimer_tags_11)
+               /sizeof(asn_DEF_phr_ProhibitTimer_tags_11[0]), /* 2 */
+       { &asn_OER_type_phr_ProhibitTimer_constr_11, &asn_PER_type_phr_ProhibitTimer_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_phr_ProhibitTimer_specs_11     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_phr_Tx_PowerFactorChange_value2enum_20[] = {
+       { 0,    3,      "dB1" },
+       { 1,    3,      "dB3" },
+       { 2,    3,      "dB6" },
+       { 3,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_phr_Tx_PowerFactorChange_enum2value_20[] = {
+       0,      /* dB1(0) */
+       1,      /* dB3(1) */
+       2,      /* dB6(2) */
+       3       /* infinity(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_phr_Tx_PowerFactorChange_specs_20 = {
+       asn_MAP_phr_Tx_PowerFactorChange_value2enum_20, /* "tag" => N; sorted by tag */
+       asn_MAP_phr_Tx_PowerFactorChange_enum2value_20, /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_phr_Tx_PowerFactorChange_tags_20[] = {
+       (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_phr_Tx_PowerFactorChange_20 = {
+       "phr-Tx-PowerFactorChange",
+       "phr-Tx-PowerFactorChange",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_phr_Tx_PowerFactorChange_tags_20,
+       sizeof(asn_DEF_phr_Tx_PowerFactorChange_tags_20)
+               /sizeof(asn_DEF_phr_Tx_PowerFactorChange_tags_20[0]) - 1, /* 1 */
+       asn_DEF_phr_Tx_PowerFactorChange_tags_20,       /* Same as above */
+       sizeof(asn_DEF_phr_Tx_PowerFactorChange_tags_20)
+               /sizeof(asn_DEF_phr_Tx_PowerFactorChange_tags_20[0]), /* 2 */
+       { &asn_OER_type_phr_Tx_PowerFactorChange_constr_20, &asn_PER_type_phr_Tx_PowerFactorChange_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_phr_Tx_PowerFactorChange_specs_20      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_phr_ModeOtherCG_value2enum_28[] = {
+       { 0,    4,      "real" },
+       { 1,    7,      "virtual" }
+};
+static const unsigned int asn_MAP_phr_ModeOtherCG_enum2value_28[] = {
+       0,      /* real(0) */
+       1       /* virtual(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_phr_ModeOtherCG_specs_28 = {
+       asn_MAP_phr_ModeOtherCG_value2enum_28,  /* "tag" => N; sorted by tag */
+       asn_MAP_phr_ModeOtherCG_enum2value_28,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_phr_ModeOtherCG_tags_28[] = {
+       (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_phr_ModeOtherCG_28 = {
+       "phr-ModeOtherCG",
+       "phr-ModeOtherCG",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_phr_ModeOtherCG_tags_28,
+       sizeof(asn_DEF_phr_ModeOtherCG_tags_28)
+               /sizeof(asn_DEF_phr_ModeOtherCG_tags_28[0]) - 1, /* 1 */
+       asn_DEF_phr_ModeOtherCG_tags_28,        /* Same as above */
+       sizeof(asn_DEF_phr_ModeOtherCG_tags_28)
+               /sizeof(asn_DEF_phr_ModeOtherCG_tags_28[0]), /* 2 */
+       { &asn_OER_type_phr_ModeOtherCG_constr_28, &asn_PER_type_phr_ModeOtherCG_constr_28, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_phr_ModeOtherCG_specs_28       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PHR_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, phr_PeriodicTimer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_phr_PeriodicTimer_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-PeriodicTimer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, phr_ProhibitTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_phr_ProhibitTimer_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-ProhibitTimer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, phr_Tx_PowerFactorChange),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_phr_Tx_PowerFactorChange_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-Tx-PowerFactorChange"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, multiplePHR),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multiplePHR"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, dummy),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, phr_Type2OtherCell),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-Type2OtherCell"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PHR_Config, phr_ModeOtherCG),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_phr_ModeOtherCG_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phr-ModeOtherCG"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PHR_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PHR_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* phr-PeriodicTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* phr-ProhibitTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* phr-Tx-PowerFactorChange */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* multiplePHR */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dummy */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* phr-Type2OtherCell */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* phr-ModeOtherCG */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PHR_Config_specs_1 = {
+       sizeof(struct PHR_Config),
+       offsetof(struct PHR_Config, _asn_ctx),
+       asn_MAP_PHR_Config_tag2el_1,
+       7,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PHR_Config = {
+       "PHR-Config",
+       "PHR-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PHR_Config_tags_1,
+       sizeof(asn_DEF_PHR_Config_tags_1)
+               /sizeof(asn_DEF_PHR_Config_tags_1[0]), /* 1 */
+       asn_DEF_PHR_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PHR_Config_tags_1)
+               /sizeof(asn_DEF_PHR_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PHR_Config_1,
+       7,      /* Elements count */
+       &asn_SPC_PHR_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PHR-Config.h b/src/codec_utils/RRC/PHR-Config.h
new file mode 100644 (file)
index 0000000..68dcec0
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PHR_Config_H_
+#define        _PHR_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PHR_Config__phr_PeriodicTimer {
+       PHR_Config__phr_PeriodicTimer_sf10      = 0,
+       PHR_Config__phr_PeriodicTimer_sf20      = 1,
+       PHR_Config__phr_PeriodicTimer_sf50      = 2,
+       PHR_Config__phr_PeriodicTimer_sf100     = 3,
+       PHR_Config__phr_PeriodicTimer_sf200     = 4,
+       PHR_Config__phr_PeriodicTimer_sf500     = 5,
+       PHR_Config__phr_PeriodicTimer_sf1000    = 6,
+       PHR_Config__phr_PeriodicTimer_infinity  = 7
+} e_PHR_Config__phr_PeriodicTimer;
+typedef enum PHR_Config__phr_ProhibitTimer {
+       PHR_Config__phr_ProhibitTimer_sf0       = 0,
+       PHR_Config__phr_ProhibitTimer_sf10      = 1,
+       PHR_Config__phr_ProhibitTimer_sf20      = 2,
+       PHR_Config__phr_ProhibitTimer_sf50      = 3,
+       PHR_Config__phr_ProhibitTimer_sf100     = 4,
+       PHR_Config__phr_ProhibitTimer_sf200     = 5,
+       PHR_Config__phr_ProhibitTimer_sf500     = 6,
+       PHR_Config__phr_ProhibitTimer_sf1000    = 7
+} e_PHR_Config__phr_ProhibitTimer;
+typedef enum PHR_Config__phr_Tx_PowerFactorChange {
+       PHR_Config__phr_Tx_PowerFactorChange_dB1        = 0,
+       PHR_Config__phr_Tx_PowerFactorChange_dB3        = 1,
+       PHR_Config__phr_Tx_PowerFactorChange_dB6        = 2,
+       PHR_Config__phr_Tx_PowerFactorChange_infinity   = 3
+} e_PHR_Config__phr_Tx_PowerFactorChange;
+typedef enum PHR_Config__phr_ModeOtherCG {
+       PHR_Config__phr_ModeOtherCG_real        = 0,
+       PHR_Config__phr_ModeOtherCG_virtual     = 1
+} e_PHR_Config__phr_ModeOtherCG;
+
+/* PHR-Config */
+typedef struct PHR_Config {
+       long     phr_PeriodicTimer;
+       long     phr_ProhibitTimer;
+       long     phr_Tx_PowerFactorChange;
+       BOOLEAN_t        multiplePHR;
+       BOOLEAN_t        dummy;
+       BOOLEAN_t        phr_Type2OtherCell;
+       long     phr_ModeOtherCG;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PHR_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_phr_PeriodicTimer_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_phr_ProhibitTimer_11;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_phr_Tx_PowerFactorChange_20;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_phr_ModeOtherCG_28;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PHR_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PHR_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PHR_Config_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PHR_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-IdentitY.c b/src/codec_utils/RRC/PLMN-IdentitY.c
new file mode 100644 (file)
index 0000000..2121d8d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-IdentitY.h"
+
+#include "MCC.h"
+asn_TYPE_member_t asn_MBR_PLMN_IdentitY_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PLMN_IdentitY, mcc),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MCC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcc"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentitY, mnc),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MNC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mnc"
+               },
+};
+static const int asn_MAP_PLMN_IdentitY_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PLMN_IdentitY_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PLMN_IdentitY_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mcc */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* mnc */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentitY_specs_1 = {
+       sizeof(struct PLMN_IdentitY),
+       offsetof(struct PLMN_IdentitY, _asn_ctx),
+       asn_MAP_PLMN_IdentitY_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PLMN_IdentitY_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_IdentitY = {
+       "PLMN-IdentitY",
+       "PLMN-IdentitY",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PLMN_IdentitY_tags_1,
+       sizeof(asn_DEF_PLMN_IdentitY_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentitY_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_IdentitY_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PLMN_IdentitY_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentitY_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PLMN_IdentitY_1,
+       2,      /* Elements count */
+       &asn_SPC_PLMN_IdentitY_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-IdentitY.h b/src/codec_utils/RRC/PLMN-IdentitY.h
new file mode 100644 (file)
index 0000000..405abc7
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_IdentitY_H_
+#define        _PLMN_IdentitY_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MNC.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MCC;
+
+/* PLMN-IdentitY */
+typedef struct PLMN_IdentitY {
+       struct MCC      *mcc;   /* OPTIONAL */
+       MNC_t    mnc;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_IdentitY_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentitY;
+extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentitY_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_IdentitY_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_IdentitY_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.c b/src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.c
new file mode 100644 (file)
index 0000000..617b7c9
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-Identity-EUTRA-5GC.h"
+
+#include "PLMN-IdentitY.h"
+static int
+memb_plmn_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 <= 12)) {
+               /* 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_plmn_index_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_plmn_index_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_PLMN_Identity_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PLMN_Identity_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_Identity_EUTRA_5GC_1[] = {
+       { ATF_POINTER, 0, offsetof(struct PLMN_Identity_EUTRA_5GC, choice.plmn_Identity_EUTRA_5GC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-Identity-EUTRA-5GC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_Identity_EUTRA_5GC, choice.plmn_index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_plmn_index_constr_3, &asn_PER_memb_plmn_index_constr_3,  memb_plmn_index_constraint_1 },
+               0, 0, /* No default value */
+               "plmn-index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PLMN_Identity_EUTRA_5GC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Identity-EUTRA-5GC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* plmn-index */
+};
+asn_CHOICE_specifics_t asn_SPC_PLMN_Identity_EUTRA_5GC_specs_1 = {
+       sizeof(struct PLMN_Identity_EUTRA_5GC),
+       offsetof(struct PLMN_Identity_EUTRA_5GC, _asn_ctx),
+       offsetof(struct PLMN_Identity_EUTRA_5GC, present),
+       sizeof(((struct PLMN_Identity_EUTRA_5GC *)0)->present),
+       asn_MAP_PLMN_Identity_EUTRA_5GC_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_Identity_EUTRA_5GC = {
+       "PLMN-Identity-EUTRA-5GC",
+       "PLMN-Identity-EUTRA-5GC",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_PLMN_Identity_EUTRA_5GC_constr_1, &asn_PER_type_PLMN_Identity_EUTRA_5GC_constr_1, CHOICE_constraint },
+       asn_MBR_PLMN_Identity_EUTRA_5GC_1,
+       2,      /* Elements count */
+       &asn_SPC_PLMN_Identity_EUTRA_5GC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.h b/src/codec_utils/RRC/PLMN-Identity-EUTRA-5GC.h
new file mode 100644 (file)
index 0000000..76133f0
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_Identity_EUTRA_5GC_H_
+#define        _PLMN_Identity_EUTRA_5GC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PLMN_Identity_EUTRA_5GC_PR {
+       PLMN_Identity_EUTRA_5GC_PR_NOTHING,     /* No components present */
+       PLMN_Identity_EUTRA_5GC_PR_plmn_Identity_EUTRA_5GC,
+       PLMN_Identity_EUTRA_5GC_PR_plmn_index
+} PLMN_Identity_EUTRA_5GC_PR;
+
+/* Forward declarations */
+struct PLMN_IdentitY;
+
+/* PLMN-Identity-EUTRA-5GC */
+typedef struct PLMN_Identity_EUTRA_5GC {
+       PLMN_Identity_EUTRA_5GC_PR present;
+       union PLMN_Identity_EUTRA_5GC_u {
+               struct PLMN_IdentitY    *plmn_Identity_EUTRA_5GC;
+               long     plmn_index;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_Identity_EUTRA_5GC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_Identity_EUTRA_5GC;
+extern asn_CHOICE_specifics_t asn_SPC_PLMN_Identity_EUTRA_5GC_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_Identity_EUTRA_5GC_1[2];
+extern asn_per_constraints_t asn_PER_type_PLMN_Identity_EUTRA_5GC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_Identity_EUTRA_5GC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-IdentityInfo.c b/src/codec_utils/RRC/PLMN-IdentityInfo.c
new file mode 100644 (file)
index 0000000..c665b6b
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-IdentityInfo.h"
+
+#include "PLMN-IdentitY.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_plmn_IdentityList_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 <= 12)) {
+               /* 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_plmn_IdentityList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_type_plmn_IdentityList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_cellReservedForOperatorUse_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cellReservedForOperatorUse_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_plmn_IdentityList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+static asn_per_constraints_t asn_PER_memb_plmn_IdentityList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_plmn_IdentityList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_plmn_IdentityList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_plmn_IdentityList_specs_2 = {
+       sizeof(struct PLMN_IdentityInfo__plmn_IdentityList),
+       offsetof(struct PLMN_IdentityInfo__plmn_IdentityList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_plmn_IdentityList_2 = {
+       "plmn-IdentityList",
+       "plmn-IdentityList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_plmn_IdentityList_tags_2,
+       sizeof(asn_DEF_plmn_IdentityList_tags_2)
+               /sizeof(asn_DEF_plmn_IdentityList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_plmn_IdentityList_tags_2,       /* Same as above */
+       sizeof(asn_DEF_plmn_IdentityList_tags_2)
+               /sizeof(asn_DEF_plmn_IdentityList_tags_2[0]), /* 2 */
+       { &asn_OER_type_plmn_IdentityList_constr_2, &asn_PER_type_plmn_IdentityList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_plmn_IdentityList_2,
+       1,      /* Single element */
+       &asn_SPC_plmn_IdentityList_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cellReservedForOperatorUse_value2enum_7[] = {
+       { 0,    8,      "reserved" },
+       { 1,    11,     "notReserved" }
+};
+static const unsigned int asn_MAP_cellReservedForOperatorUse_enum2value_7[] = {
+       1,      /* notReserved(1) */
+       0       /* reserved(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cellReservedForOperatorUse_specs_7 = {
+       asn_MAP_cellReservedForOperatorUse_value2enum_7,        /* "tag" => N; sorted by tag */
+       asn_MAP_cellReservedForOperatorUse_enum2value_7,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cellReservedForOperatorUse_tags_7[] = {
+       (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_cellReservedForOperatorUse_7 = {
+       "cellReservedForOperatorUse",
+       "cellReservedForOperatorUse",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cellReservedForOperatorUse_tags_7,
+       sizeof(asn_DEF_cellReservedForOperatorUse_tags_7)
+               /sizeof(asn_DEF_cellReservedForOperatorUse_tags_7[0]) - 1, /* 1 */
+       asn_DEF_cellReservedForOperatorUse_tags_7,      /* Same as above */
+       sizeof(asn_DEF_cellReservedForOperatorUse_tags_7)
+               /sizeof(asn_DEF_cellReservedForOperatorUse_tags_7[0]), /* 2 */
+       { &asn_OER_type_cellReservedForOperatorUse_constr_7, &asn_PER_type_cellReservedForOperatorUse_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cellReservedForOperatorUse_specs_7     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PLMN_IdentityInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, plmn_IdentityList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_plmn_IdentityList_2,
+               0,
+               { &asn_OER_memb_plmn_IdentityList_constr_2, &asn_PER_memb_plmn_IdentityList_constr_2,  memb_plmn_IdentityList_constraint_1 },
+               0, 0, /* No default value */
+               "plmn-IdentityList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PLMN_IdentityInfo, trackingAreaCode),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TrackingAreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "trackingAreaCode"
+               },
+       { ATF_POINTER, 1, offsetof(struct PLMN_IdentityInfo, ranac),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RAN_AreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ranac"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, cellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, cellReservedForOperatorUse),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cellReservedForOperatorUse_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReservedForOperatorUse"
+               },
+};
+static const int asn_MAP_PLMN_IdentityInfo_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_PLMN_IdentityInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PLMN_IdentityInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trackingAreaCode */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranac */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cellIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* cellReservedForOperatorUse */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentityInfo_specs_1 = {
+       sizeof(struct PLMN_IdentityInfo),
+       offsetof(struct PLMN_IdentityInfo, _asn_ctx),
+       asn_MAP_PLMN_IdentityInfo_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_PLMN_IdentityInfo_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfo = {
+       "PLMN-IdentityInfo",
+       "PLMN-IdentityInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PLMN_IdentityInfo_tags_1,
+       sizeof(asn_DEF_PLMN_IdentityInfo_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityInfo_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_IdentityInfo_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PLMN_IdentityInfo_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PLMN_IdentityInfo_1,
+       5,      /* Elements count */
+       &asn_SPC_PLMN_IdentityInfo_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-IdentityInfo.h b/src/codec_utils/RRC/PLMN-IdentityInfo.h
new file mode 100644 (file)
index 0000000..25d8af4
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_IdentityInfo_H_
+#define        _PLMN_IdentityInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TrackingAreaCode.h"
+#include "RAN-AreaCode.h"
+#include "CellIdentity.h"
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PLMN_IdentityInfo__cellReservedForOperatorUse {
+       PLMN_IdentityInfo__cellReservedForOperatorUse_reserved  = 0,
+       PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved       = 1
+} e_PLMN_IdentityInfo__cellReservedForOperatorUse;
+
+/* Forward declarations */
+struct PLMN_IdentitY;
+
+/* PLMN-IdentityInfo */
+typedef struct PLMN_IdentityInfo {
+       struct PLMN_IdentityInfo__plmn_IdentityList {
+               A_SEQUENCE_OF(struct PLMN_IdentitY) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } plmn_IdentityList;
+       TrackingAreaCode_t      *trackingAreaCode;      /* OPTIONAL */
+       RAN_AreaCode_t  *ranac; /* OPTIONAL */
+       CellIdentity_t   cellIdentity;
+       long     cellReservedForOperatorUse;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_IdentityInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_cellReservedForOperatorUse_7;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentityInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_IdentityInfo_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_IdentityInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-IdentityInfoList.c b/src/codec_utils/RRC/PLMN-IdentityInfoList.c
new file mode 100644 (file)
index 0000000..43c0cf9
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-IdentityInfoList.h"
+
+#include "PLMN-IdentityInfo.h"
+static asn_oer_constraints_t asn_OER_type_PLMN_IdentityInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+asn_per_constraints_t asn_PER_type_PLMN_IdentityInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_IdentityInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PLMN_IdentityInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PLMN_IdentityInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityInfoList_specs_1 = {
+       sizeof(struct PLMN_IdentityInfoList),
+       offsetof(struct PLMN_IdentityInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfoList = {
+       "PLMN-IdentityInfoList",
+       "PLMN-IdentityInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PLMN_IdentityInfoList_tags_1,
+       sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_IdentityInfoList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMN_IdentityInfoList_constr_1, &asn_PER_type_PLMN_IdentityInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PLMN_IdentityInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_PLMN_IdentityInfoList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-IdentityInfoList.h b/src/codec_utils/RRC/PLMN-IdentityInfoList.h
new file mode 100644 (file)
index 0000000..898719c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_IdentityInfoList_H_
+#define        _PLMN_IdentityInfoList_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 PLMN_IdentityInfo;
+
+/* PLMN-IdentityInfoList */
+typedef struct PLMN_IdentityInfoList {
+       A_SEQUENCE_OF(struct PLMN_IdentityInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_IdentityInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_IdentityInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_PLMN_IdentityInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_IdentityInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.c b/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.c
new file mode 100644 (file)
index 0000000..48f6ca9
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-IdentityList-EUTRA-5GC.h"
+
+#include "PLMN-Identity-EUTRA-5GC.h"
+static asn_oer_constraints_t asn_OER_type_PLMN_IdentityList_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+asn_per_constraints_t asn_PER_type_PLMN_IdentityList_EUTRA_5GC_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_IdentityList_EUTRA_5GC_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_PLMN_Identity_EUTRA_5GC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityList_EUTRA_5GC_specs_1 = {
+       sizeof(struct PLMN_IdentityList_EUTRA_5GC),
+       offsetof(struct PLMN_IdentityList_EUTRA_5GC, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityList_EUTRA_5GC = {
+       "PLMN-IdentityList-EUTRA-5GC",
+       "PLMN-IdentityList-EUTRA-5GC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1,
+       sizeof(asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityList_EUTRA_5GC_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMN_IdentityList_EUTRA_5GC_constr_1, &asn_PER_type_PLMN_IdentityList_EUTRA_5GC_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PLMN_IdentityList_EUTRA_5GC_1,
+       1,      /* Single element */
+       &asn_SPC_PLMN_IdentityList_EUTRA_5GC_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.h b/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-5GC.h
new file mode 100644 (file)
index 0000000..6ce590c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_IdentityList_EUTRA_5GC_H_
+#define        _PLMN_IdentityList_EUTRA_5GC_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 PLMN_Identity_EUTRA_5GC;
+
+/* PLMN-IdentityList-EUTRA-5GC */
+typedef struct PLMN_IdentityList_EUTRA_5GC {
+       A_SEQUENCE_OF(struct PLMN_Identity_EUTRA_5GC) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_IdentityList_EUTRA_5GC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityList_EUTRA_5GC;
+extern asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityList_EUTRA_5GC_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_IdentityList_EUTRA_5GC_1[1];
+extern asn_per_constraints_t asn_PER_type_PLMN_IdentityList_EUTRA_5GC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_IdentityList_EUTRA_5GC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.c b/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.c
new file mode 100644 (file)
index 0000000..bed7079
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-IdentityList-EUTRA-EPC.h"
+
+#include "PLMN-IdentitY.h"
+static asn_oer_constraints_t asn_OER_type_PLMN_IdentityList_EUTRA_EPC_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+asn_per_constraints_t asn_PER_type_PLMN_IdentityList_EUTRA_EPC_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_IdentityList_EUTRA_EPC_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityList_EUTRA_EPC_specs_1 = {
+       sizeof(struct PLMN_IdentityList_EUTRA_EPC),
+       offsetof(struct PLMN_IdentityList_EUTRA_EPC, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityList_EUTRA_EPC = {
+       "PLMN-IdentityList-EUTRA-EPC",
+       "PLMN-IdentityList-EUTRA-EPC",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1,
+       sizeof(asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1)
+               /sizeof(asn_DEF_PLMN_IdentityList_EUTRA_EPC_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMN_IdentityList_EUTRA_EPC_constr_1, &asn_PER_type_PLMN_IdentityList_EUTRA_EPC_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PLMN_IdentityList_EUTRA_EPC_1,
+       1,      /* Single element */
+       &asn_SPC_PLMN_IdentityList_EUTRA_EPC_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.h b/src/codec_utils/RRC/PLMN-IdentityList-EUTRA-EPC.h
new file mode 100644 (file)
index 0000000..4e98b40
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_IdentityList_EUTRA_EPC_H_
+#define        _PLMN_IdentityList_EUTRA_EPC_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 PLMN_IdentitY;
+
+/* PLMN-IdentityList-EUTRA-EPC */
+typedef struct PLMN_IdentityList_EUTRA_EPC {
+       A_SEQUENCE_OF(struct PLMN_IdentitY) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_IdentityList_EUTRA_EPC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityList_EUTRA_EPC;
+extern asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityList_EUTRA_EPC_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_IdentityList_EUTRA_EPC_1[1];
+extern asn_per_constraints_t asn_PER_type_PLMN_IdentityList_EUTRA_EPC_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_IdentityList_EUTRA_EPC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaCell.c b/src/codec_utils/RRC/PLMN-RAN-AreaCell.c
new file mode 100644 (file)
index 0000000..e228166
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-RAN-AreaCell.h"
+
+#include "PLMN-IdentitY.h"
+static int
+memb_ran_AreaCells_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 <= 32)) {
+               /* 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_ran_AreaCells_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_ran_AreaCells_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_AreaCells_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_ran_AreaCells_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_AreaCells_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
+               0,
+               &asn_DEF_CellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ran_AreaCells_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_AreaCells_specs_3 = {
+       sizeof(struct PLMN_RAN_AreaCell__ran_AreaCells),
+       offsetof(struct PLMN_RAN_AreaCell__ran_AreaCells, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_AreaCells_3 = {
+       "ran-AreaCells",
+       "ran-AreaCells",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ran_AreaCells_tags_3,
+       sizeof(asn_DEF_ran_AreaCells_tags_3)
+               /sizeof(asn_DEF_ran_AreaCells_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ran_AreaCells_tags_3,   /* Same as above */
+       sizeof(asn_DEF_ran_AreaCells_tags_3)
+               /sizeof(asn_DEF_ran_AreaCells_tags_3[0]), /* 2 */
+       { &asn_OER_type_ran_AreaCells_constr_3, &asn_PER_type_ran_AreaCells_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ran_AreaCells_3,
+       1,      /* Single element */
+       &asn_SPC_ran_AreaCells_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaCell_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PLMN_RAN_AreaCell, plmn_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_RAN_AreaCell, ran_AreaCells),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ran_AreaCells_3,
+               0,
+               { &asn_OER_memb_ran_AreaCells_constr_3, &asn_PER_memb_ran_AreaCells_constr_3,  memb_ran_AreaCells_constraint_1 },
+               0, 0, /* No default value */
+               "ran-AreaCells"
+               },
+};
+static const int asn_MAP_PLMN_RAN_AreaCell_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PLMN_RAN_AreaCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PLMN_RAN_AreaCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-AreaCells */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PLMN_RAN_AreaCell_specs_1 = {
+       sizeof(struct PLMN_RAN_AreaCell),
+       offsetof(struct PLMN_RAN_AreaCell, _asn_ctx),
+       asn_MAP_PLMN_RAN_AreaCell_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PLMN_RAN_AreaCell_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaCell = {
+       "PLMN-RAN-AreaCell",
+       "PLMN-RAN-AreaCell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PLMN_RAN_AreaCell_tags_1,
+       sizeof(asn_DEF_PLMN_RAN_AreaCell_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaCell_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_RAN_AreaCell_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PLMN_RAN_AreaCell_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaCell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PLMN_RAN_AreaCell_1,
+       2,      /* Elements count */
+       &asn_SPC_PLMN_RAN_AreaCell_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaCell.h b/src/codec_utils/RRC/PLMN-RAN-AreaCell.h
new file mode 100644 (file)
index 0000000..1a25a7a
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_RAN_AreaCell_H_
+#define        _PLMN_RAN_AreaCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellIdentity.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PLMN_IdentitY;
+
+/* PLMN-RAN-AreaCell */
+typedef struct PLMN_RAN_AreaCell {
+       struct PLMN_IdentitY    *plmn_Identity; /* OPTIONAL */
+       struct PLMN_RAN_AreaCell__ran_AreaCells {
+               A_SEQUENCE_OF(CellIdentity_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } ran_AreaCells;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_RAN_AreaCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_RAN_AreaCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaCell_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_RAN_AreaCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaCellList.c b/src/codec_utils/RRC/PLMN-RAN-AreaCellList.c
new file mode 100644 (file)
index 0000000..399ff02
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-RAN-AreaCellList.h"
+
+#include "PLMN-RAN-AreaCell.h"
+static asn_oer_constraints_t asn_OER_type_PLMN_RAN_AreaCellList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_PLMN_RAN_AreaCellList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaCellList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PLMN_RAN_AreaCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PLMN_RAN_AreaCellList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PLMN_RAN_AreaCellList_specs_1 = {
+       sizeof(struct PLMN_RAN_AreaCellList),
+       offsetof(struct PLMN_RAN_AreaCellList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaCellList = {
+       "PLMN-RAN-AreaCellList",
+       "PLMN-RAN-AreaCellList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PLMN_RAN_AreaCellList_tags_1,
+       sizeof(asn_DEF_PLMN_RAN_AreaCellList_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaCellList_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_RAN_AreaCellList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PLMN_RAN_AreaCellList_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaCellList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMN_RAN_AreaCellList_constr_1, &asn_PER_type_PLMN_RAN_AreaCellList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PLMN_RAN_AreaCellList_1,
+       1,      /* Single element */
+       &asn_SPC_PLMN_RAN_AreaCellList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaCellList.h b/src/codec_utils/RRC/PLMN-RAN-AreaCellList.h
new file mode 100644 (file)
index 0000000..6bda039
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_RAN_AreaCellList_H_
+#define        _PLMN_RAN_AreaCellList_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 PLMN_RAN_AreaCell;
+
+/* PLMN-RAN-AreaCellList */
+typedef struct PLMN_RAN_AreaCellList {
+       A_SEQUENCE_OF(struct PLMN_RAN_AreaCell) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_RAN_AreaCellList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaCellList;
+extern asn_SET_OF_specifics_t asn_SPC_PLMN_RAN_AreaCellList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaCellList_1[1];
+extern asn_per_constraints_t asn_PER_type_PLMN_RAN_AreaCellList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_RAN_AreaCellList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaConfig.c b/src/codec_utils/RRC/PLMN-RAN-AreaConfig.c
new file mode 100644 (file)
index 0000000..d2e1351
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-RAN-AreaConfig.h"
+
+#include "PLMN-IdentitY.h"
+#include "RAN-AreaConfig.h"
+static int
+memb_ran_Area_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 <= 16)) {
+               /* 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_ran_Area_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_ran_Area_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_Area_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_ran_Area_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_Area_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RAN_AreaConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ran_Area_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_Area_specs_3 = {
+       sizeof(struct PLMN_RAN_AreaConfig__ran_Area),
+       offsetof(struct PLMN_RAN_AreaConfig__ran_Area, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_Area_3 = {
+       "ran-Area",
+       "ran-Area",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ran_Area_tags_3,
+       sizeof(asn_DEF_ran_Area_tags_3)
+               /sizeof(asn_DEF_ran_Area_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ran_Area_tags_3,        /* Same as above */
+       sizeof(asn_DEF_ran_Area_tags_3)
+               /sizeof(asn_DEF_ran_Area_tags_3[0]), /* 2 */
+       { &asn_OER_type_ran_Area_constr_3, &asn_PER_type_ran_Area_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ran_Area_3,
+       1,      /* Single element */
+       &asn_SPC_ran_Area_specs_3       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaConfig_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PLMN_RAN_AreaConfig, plmn_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PLMN_RAN_AreaConfig, ran_Area),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ran_Area_3,
+               0,
+               { &asn_OER_memb_ran_Area_constr_3, &asn_PER_memb_ran_Area_constr_3,  memb_ran_Area_constraint_1 },
+               0, 0, /* No default value */
+               "ran-Area"
+               },
+};
+static const int asn_MAP_PLMN_RAN_AreaConfig_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PLMN_RAN_AreaConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PLMN_RAN_AreaConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-Area */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PLMN_RAN_AreaConfig_specs_1 = {
+       sizeof(struct PLMN_RAN_AreaConfig),
+       offsetof(struct PLMN_RAN_AreaConfig, _asn_ctx),
+       asn_MAP_PLMN_RAN_AreaConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PLMN_RAN_AreaConfig_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaConfig = {
+       "PLMN-RAN-AreaConfig",
+       "PLMN-RAN-AreaConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PLMN_RAN_AreaConfig_tags_1,
+       sizeof(asn_DEF_PLMN_RAN_AreaConfig_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaConfig_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_RAN_AreaConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PLMN_RAN_AreaConfig_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PLMN_RAN_AreaConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_PLMN_RAN_AreaConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaConfig.h b/src/codec_utils/RRC/PLMN-RAN-AreaConfig.h
new file mode 100644 (file)
index 0000000..7f9f273
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_RAN_AreaConfig_H_
+#define        _PLMN_RAN_AreaConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PLMN_IdentitY;
+struct RAN_AreaConfig;
+
+/* PLMN-RAN-AreaConfig */
+typedef struct PLMN_RAN_AreaConfig {
+       struct PLMN_IdentitY    *plmn_Identity; /* OPTIONAL */
+       struct PLMN_RAN_AreaConfig__ran_Area {
+               A_SEQUENCE_OF(struct RAN_AreaConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } ran_Area;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_RAN_AreaConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_RAN_AreaConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_RAN_AreaConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaConfigList.c b/src/codec_utils/RRC/PLMN-RAN-AreaConfigList.c
new file mode 100644 (file)
index 0000000..171db8c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PLMN-RAN-AreaConfigList.h"
+
+#include "PLMN-RAN-AreaConfig.h"
+static asn_oer_constraints_t asn_OER_type_PLMN_RAN_AreaConfigList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_PLMN_RAN_AreaConfigList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaConfigList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PLMN_RAN_AreaConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PLMN_RAN_AreaConfigList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PLMN_RAN_AreaConfigList_specs_1 = {
+       sizeof(struct PLMN_RAN_AreaConfigList),
+       offsetof(struct PLMN_RAN_AreaConfigList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaConfigList = {
+       "PLMN-RAN-AreaConfigList",
+       "PLMN-RAN-AreaConfigList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PLMN_RAN_AreaConfigList_tags_1,
+       sizeof(asn_DEF_PLMN_RAN_AreaConfigList_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaConfigList_tags_1[0]), /* 1 */
+       asn_DEF_PLMN_RAN_AreaConfigList_tags_1, /* Same as above */
+       sizeof(asn_DEF_PLMN_RAN_AreaConfigList_tags_1)
+               /sizeof(asn_DEF_PLMN_RAN_AreaConfigList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PLMN_RAN_AreaConfigList_constr_1, &asn_PER_type_PLMN_RAN_AreaConfigList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PLMN_RAN_AreaConfigList_1,
+       1,      /* Single element */
+       &asn_SPC_PLMN_RAN_AreaConfigList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PLMN-RAN-AreaConfigList.h b/src/codec_utils/RRC/PLMN-RAN-AreaConfigList.h
new file mode 100644 (file)
index 0000000..0e254c8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PLMN_RAN_AreaConfigList_H_
+#define        _PLMN_RAN_AreaConfigList_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 PLMN_RAN_AreaConfig;
+
+/* PLMN-RAN-AreaConfigList */
+typedef struct PLMN_RAN_AreaConfigList {
+       A_SEQUENCE_OF(struct PLMN_RAN_AreaConfig) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PLMN_RAN_AreaConfigList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PLMN_RAN_AreaConfigList;
+extern asn_SET_OF_specifics_t asn_SPC_PLMN_RAN_AreaConfigList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PLMN_RAN_AreaConfigList_1[1];
+extern asn_per_constraints_t asn_PER_type_PLMN_RAN_AreaConfigList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PLMN_RAN_AreaConfigList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.c b/src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.c
new file mode 100644 (file)
index 0000000..e3b69dd
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PRACH-ResourceDedicatedBFR.h"
+
+#include "BFR-SSB-Resource.h"
+#include "BFR-CSIRS-Resource.h"
+static asn_oer_constraints_t asn_OER_type_PRACH_ResourceDedicatedBFR_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PRACH_ResourceDedicatedBFR_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PRACH_ResourceDedicatedBFR_1[] = {
+       { ATF_POINTER, 0, offsetof(struct PRACH_ResourceDedicatedBFR, choice.ssb),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BFR_SSB_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb"
+               },
+       { ATF_POINTER, 0, offsetof(struct PRACH_ResourceDedicatedBFR, choice.csi_RS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BFR_CSIRS_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PRACH_ResourceDedicatedBFR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS */
+};
+asn_CHOICE_specifics_t asn_SPC_PRACH_ResourceDedicatedBFR_specs_1 = {
+       sizeof(struct PRACH_ResourceDedicatedBFR),
+       offsetof(struct PRACH_ResourceDedicatedBFR, _asn_ctx),
+       offsetof(struct PRACH_ResourceDedicatedBFR, present),
+       sizeof(((struct PRACH_ResourceDedicatedBFR *)0)->present),
+       asn_MAP_PRACH_ResourceDedicatedBFR_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PRACH_ResourceDedicatedBFR = {
+       "PRACH-ResourceDedicatedBFR",
+       "PRACH-ResourceDedicatedBFR",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_PRACH_ResourceDedicatedBFR_constr_1, &asn_PER_type_PRACH_ResourceDedicatedBFR_constr_1, CHOICE_constraint },
+       asn_MBR_PRACH_ResourceDedicatedBFR_1,
+       2,      /* Elements count */
+       &asn_SPC_PRACH_ResourceDedicatedBFR_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.h b/src/codec_utils/RRC/PRACH-ResourceDedicatedBFR.h
new file mode 100644 (file)
index 0000000..d42302d
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PRACH_ResourceDedicatedBFR_H_
+#define        _PRACH_ResourceDedicatedBFR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PRACH_ResourceDedicatedBFR_PR {
+       PRACH_ResourceDedicatedBFR_PR_NOTHING,  /* No components present */
+       PRACH_ResourceDedicatedBFR_PR_ssb,
+       PRACH_ResourceDedicatedBFR_PR_csi_RS
+} PRACH_ResourceDedicatedBFR_PR;
+
+/* Forward declarations */
+struct BFR_SSB_Resource;
+struct BFR_CSIRS_Resource;
+
+/* PRACH-ResourceDedicatedBFR */
+typedef struct PRACH_ResourceDedicatedBFR {
+       PRACH_ResourceDedicatedBFR_PR present;
+       union PRACH_ResourceDedicatedBFR_u {
+               struct BFR_SSB_Resource *ssb;
+               struct BFR_CSIRS_Resource       *csi_RS;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PRACH_ResourceDedicatedBFR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PRACH_ResourceDedicatedBFR;
+extern asn_CHOICE_specifics_t asn_SPC_PRACH_ResourceDedicatedBFR_specs_1;
+extern asn_TYPE_member_t asn_MBR_PRACH_ResourceDedicatedBFR_1[2];
+extern asn_per_constraints_t asn_PER_type_PRACH_ResourceDedicatedBFR_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PRACH_ResourceDedicatedBFR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PRB-Id.c b/src/codec_utils/RRC/PRB-Id.c
new file mode 100644 (file)
index 0000000..6b4d4fc
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PRB-Id.h"
+
+int
+PRB_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 <= 274)) {
+               /* 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_PRB_Id_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..274) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PRB_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PRB_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PRB_Id = {
+       "PRB-Id",
+       "PRB-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_PRB_Id_tags_1,
+       sizeof(asn_DEF_PRB_Id_tags_1)
+               /sizeof(asn_DEF_PRB_Id_tags_1[0]), /* 1 */
+       asn_DEF_PRB_Id_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PRB_Id_tags_1)
+               /sizeof(asn_DEF_PRB_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_PRB_Id_constr_1, &asn_PER_type_PRB_Id_constr_1, PRB_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PRB-Id.h b/src/codec_utils/RRC/PRB-Id.h
new file mode 100644 (file)
index 0000000..6d7484e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PRB_Id_H_
+#define        _PRB_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PRB-Id */
+typedef long    PRB_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PRB_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PRB_Id;
+asn_struct_free_f PRB_Id_free;
+asn_struct_print_f PRB_Id_print;
+asn_constr_check_f PRB_Id_constraint;
+ber_type_decoder_f PRB_Id_decode_ber;
+der_type_encoder_f PRB_Id_encode_der;
+xer_type_decoder_f PRB_Id_decode_xer;
+xer_type_encoder_f PRB_Id_encode_xer;
+oer_type_decoder_f PRB_Id_decode_oer;
+oer_type_encoder_f PRB_Id_encode_oer;
+per_type_decoder_f PRB_Id_decode_uper;
+per_type_encoder_f PRB_Id_encode_uper;
+per_type_decoder_f PRB_Id_decode_aper;
+per_type_encoder_f PRB_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PRB_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PTRS-DensityRecommendationDL.c b/src/codec_utils/RRC/PTRS-DensityRecommendationDL.c
new file mode 100644 (file)
index 0000000..9d14798
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PTRS-DensityRecommendationDL.h"
+
+static int
+memb_frequencyDensity1_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 <= 276)) {
+               /* 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_frequencyDensity2_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 <= 276)) {
+               /* 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_timeDensity1_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 >= 0 && value <= 29)) {
+               /* 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_timeDensity2_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 >= 0 && value <= 29)) {
+               /* 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_timeDensity3_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 >= 0 && value <= 29)) {
+               /* 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_frequencyDensity1_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyDensity2_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity2_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity1_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity1_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity2_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity2_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity3_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity3_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PTRS_DensityRecommendationDL_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationDL, frequencyDensity1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frequencyDensity1_constr_2, &asn_PER_memb_frequencyDensity1_constr_2,  memb_frequencyDensity1_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDensity1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationDL, frequencyDensity2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frequencyDensity2_constr_3, &asn_PER_memb_frequencyDensity2_constr_3,  memb_frequencyDensity2_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDensity2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationDL, timeDensity1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity1_constr_4, &asn_PER_memb_timeDensity1_constr_4,  memb_timeDensity1_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationDL, timeDensity2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity2_constr_5, &asn_PER_memb_timeDensity2_constr_5,  memb_timeDensity2_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationDL, timeDensity3),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity3_constr_6, &asn_PER_memb_timeDensity3_constr_6,  memb_timeDensity3_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity3"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PTRS_DensityRecommendationDL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PTRS_DensityRecommendationDL_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyDensity1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyDensity2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeDensity1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeDensity2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* timeDensity3 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PTRS_DensityRecommendationDL_specs_1 = {
+       sizeof(struct PTRS_DensityRecommendationDL),
+       offsetof(struct PTRS_DensityRecommendationDL, _asn_ctx),
+       asn_MAP_PTRS_DensityRecommendationDL_tag2el_1,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PTRS_DensityRecommendationDL = {
+       "PTRS-DensityRecommendationDL",
+       "PTRS-DensityRecommendationDL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PTRS_DensityRecommendationDL_tags_1,
+       sizeof(asn_DEF_PTRS_DensityRecommendationDL_tags_1)
+               /sizeof(asn_DEF_PTRS_DensityRecommendationDL_tags_1[0]), /* 1 */
+       asn_DEF_PTRS_DensityRecommendationDL_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PTRS_DensityRecommendationDL_tags_1)
+               /sizeof(asn_DEF_PTRS_DensityRecommendationDL_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PTRS_DensityRecommendationDL_1,
+       5,      /* Elements count */
+       &asn_SPC_PTRS_DensityRecommendationDL_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PTRS-DensityRecommendationDL.h b/src/codec_utils/RRC/PTRS-DensityRecommendationDL.h
new file mode 100644 (file)
index 0000000..e92f3f2
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PTRS_DensityRecommendationDL_H_
+#define        _PTRS_DensityRecommendationDL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PTRS-DensityRecommendationDL */
+typedef struct PTRS_DensityRecommendationDL {
+       long     frequencyDensity1;
+       long     frequencyDensity2;
+       long     timeDensity1;
+       long     timeDensity2;
+       long     timeDensity3;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PTRS_DensityRecommendationDL_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PTRS_DensityRecommendationDL;
+extern asn_SEQUENCE_specifics_t asn_SPC_PTRS_DensityRecommendationDL_specs_1;
+extern asn_TYPE_member_t asn_MBR_PTRS_DensityRecommendationDL_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTRS_DensityRecommendationDL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PTRS-DensityRecommendationUL.c b/src/codec_utils/RRC/PTRS-DensityRecommendationUL.c
new file mode 100644 (file)
index 0000000..5745fa4
--- /dev/null
@@ -0,0 +1,470 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PTRS-DensityRecommendationUL.h"
+
+static int
+memb_frequencyDensity1_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 <= 276)) {
+               /* 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_frequencyDensity2_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 <= 276)) {
+               /* 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_timeDensity1_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 >= 0 && value <= 29)) {
+               /* 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_timeDensity2_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 >= 0 && value <= 29)) {
+               /* 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_timeDensity3_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 >= 0 && value <= 29)) {
+               /* 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_sampleDensity1_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 <= 276)) {
+               /* 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_sampleDensity2_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 <= 276)) {
+               /* 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_sampleDensity3_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 <= 276)) {
+               /* 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_sampleDensity4_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 <= 276)) {
+               /* 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_sampleDensity5_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 <= 276)) {
+               /* 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_frequencyDensity1_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyDensity2_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity2_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity1_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity1_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity2_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity2_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity3_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDensity3_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sampleDensity1_constr_7 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sampleDensity1_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sampleDensity2_constr_8 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sampleDensity2_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sampleDensity3_constr_9 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sampleDensity3_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sampleDensity4_constr_10 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sampleDensity4_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sampleDensity5_constr_11 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sampleDensity5_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PTRS_DensityRecommendationUL_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, frequencyDensity1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frequencyDensity1_constr_2, &asn_PER_memb_frequencyDensity1_constr_2,  memb_frequencyDensity1_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDensity1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, frequencyDensity2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_frequencyDensity2_constr_3, &asn_PER_memb_frequencyDensity2_constr_3,  memb_frequencyDensity2_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDensity2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, timeDensity1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity1_constr_4, &asn_PER_memb_timeDensity1_constr_4,  memb_timeDensity1_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, timeDensity2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity2_constr_5, &asn_PER_memb_timeDensity2_constr_5,  memb_timeDensity2_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, timeDensity3),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDensity3_constr_6, &asn_PER_memb_timeDensity3_constr_6,  memb_timeDensity3_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, sampleDensity1),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sampleDensity1_constr_7, &asn_PER_memb_sampleDensity1_constr_7,  memb_sampleDensity1_constraint_1 },
+               0, 0, /* No default value */
+               "sampleDensity1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, sampleDensity2),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sampleDensity2_constr_8, &asn_PER_memb_sampleDensity2_constr_8,  memb_sampleDensity2_constraint_1 },
+               0, 0, /* No default value */
+               "sampleDensity2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, sampleDensity3),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sampleDensity3_constr_9, &asn_PER_memb_sampleDensity3_constr_9,  memb_sampleDensity3_constraint_1 },
+               0, 0, /* No default value */
+               "sampleDensity3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, sampleDensity4),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sampleDensity4_constr_10, &asn_PER_memb_sampleDensity4_constr_10,  memb_sampleDensity4_constraint_1 },
+               0, 0, /* No default value */
+               "sampleDensity4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_DensityRecommendationUL, sampleDensity5),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sampleDensity5_constr_11, &asn_PER_memb_sampleDensity5_constr_11,  memb_sampleDensity5_constraint_1 },
+               0, 0, /* No default value */
+               "sampleDensity5"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PTRS_DensityRecommendationUL_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PTRS_DensityRecommendationUL_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyDensity1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyDensity2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* timeDensity1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* timeDensity2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* timeDensity3 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sampleDensity1 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sampleDensity2 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sampleDensity3 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sampleDensity4 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* sampleDensity5 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PTRS_DensityRecommendationUL_specs_1 = {
+       sizeof(struct PTRS_DensityRecommendationUL),
+       offsetof(struct PTRS_DensityRecommendationUL, _asn_ctx),
+       asn_MAP_PTRS_DensityRecommendationUL_tag2el_1,
+       10,     /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PTRS_DensityRecommendationUL = {
+       "PTRS-DensityRecommendationUL",
+       "PTRS-DensityRecommendationUL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PTRS_DensityRecommendationUL_tags_1,
+       sizeof(asn_DEF_PTRS_DensityRecommendationUL_tags_1)
+               /sizeof(asn_DEF_PTRS_DensityRecommendationUL_tags_1[0]), /* 1 */
+       asn_DEF_PTRS_DensityRecommendationUL_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PTRS_DensityRecommendationUL_tags_1)
+               /sizeof(asn_DEF_PTRS_DensityRecommendationUL_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PTRS_DensityRecommendationUL_1,
+       10,     /* Elements count */
+       &asn_SPC_PTRS_DensityRecommendationUL_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PTRS-DensityRecommendationUL.h b/src/codec_utils/RRC/PTRS-DensityRecommendationUL.h
new file mode 100644 (file)
index 0000000..2686d76
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PTRS_DensityRecommendationUL_H_
+#define        _PTRS_DensityRecommendationUL_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PTRS-DensityRecommendationUL */
+typedef struct PTRS_DensityRecommendationUL {
+       long     frequencyDensity1;
+       long     frequencyDensity2;
+       long     timeDensity1;
+       long     timeDensity2;
+       long     timeDensity3;
+       long     sampleDensity1;
+       long     sampleDensity2;
+       long     sampleDensity3;
+       long     sampleDensity4;
+       long     sampleDensity5;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PTRS_DensityRecommendationUL_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PTRS_DensityRecommendationUL;
+extern asn_SEQUENCE_specifics_t asn_SPC_PTRS_DensityRecommendationUL_specs_1;
+extern asn_TYPE_member_t asn_MBR_PTRS_DensityRecommendationUL_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTRS_DensityRecommendationUL_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PTRS-DownlinkConfig.c b/src/codec_utils/RRC/PTRS-DownlinkConfig.c
new file mode 100644 (file)
index 0000000..5cfe1e3
--- /dev/null
@@ -0,0 +1,390 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PTRS-DownlinkConfig.h"
+
+static int
+memb_NativeInteger_constraint_2(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 <= 276)) {
+               /* 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_NativeInteger_constraint_4(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 <= 29)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_frequencyDensity_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 == 2)) {
+               /* 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_timeDensity_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 == 3)) {
+               /* 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_epre_Ratio_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 >= 0 && value <= 3)) {
+               /* 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_Member_constr_3 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyDensity_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_type_frequencyDensity_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_timeDensity_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_type_timeDensity_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceElementOffset_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceElementOffset_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyDensity_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_timeDensity_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_epre_Ratio_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_epre_Ratio_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_frequencyDensity_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_3, &asn_PER_memb_Member_constr_3,  memb_NativeInteger_constraint_2 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_frequencyDensity_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_frequencyDensity_specs_2 = {
+       sizeof(struct PTRS_DownlinkConfig__frequencyDensity),
+       offsetof(struct PTRS_DownlinkConfig__frequencyDensity, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyDensity_2 = {
+       "frequencyDensity",
+       "frequencyDensity",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_frequencyDensity_tags_2,
+       sizeof(asn_DEF_frequencyDensity_tags_2)
+               /sizeof(asn_DEF_frequencyDensity_tags_2[0]) - 1, /* 1 */
+       asn_DEF_frequencyDensity_tags_2,        /* Same as above */
+       sizeof(asn_DEF_frequencyDensity_tags_2)
+               /sizeof(asn_DEF_frequencyDensity_tags_2[0]), /* 2 */
+       { &asn_OER_type_frequencyDensity_constr_2, &asn_PER_type_frequencyDensity_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_frequencyDensity_2,
+       1,      /* Single element */
+       &asn_SPC_frequencyDensity_specs_2       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_timeDensity_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_5, &asn_PER_memb_Member_constr_5,  memb_NativeInteger_constraint_4 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_timeDensity_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_timeDensity_specs_4 = {
+       sizeof(struct PTRS_DownlinkConfig__timeDensity),
+       offsetof(struct PTRS_DownlinkConfig__timeDensity, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_timeDensity_4 = {
+       "timeDensity",
+       "timeDensity",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_timeDensity_tags_4,
+       sizeof(asn_DEF_timeDensity_tags_4)
+               /sizeof(asn_DEF_timeDensity_tags_4[0]) - 1, /* 1 */
+       asn_DEF_timeDensity_tags_4,     /* Same as above */
+       sizeof(asn_DEF_timeDensity_tags_4)
+               /sizeof(asn_DEF_timeDensity_tags_4[0]), /* 2 */
+       { &asn_OER_type_timeDensity_constr_4, &asn_PER_type_timeDensity_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_timeDensity_4,
+       1,      /* Single element */
+       &asn_SPC_timeDensity_specs_4    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceElementOffset_value2enum_7[] = {
+       { 0,    8,      "offset01" },
+       { 1,    8,      "offset10" },
+       { 2,    8,      "offset11" }
+};
+static const unsigned int asn_MAP_resourceElementOffset_enum2value_7[] = {
+       0,      /* offset01(0) */
+       1,      /* offset10(1) */
+       2       /* offset11(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceElementOffset_specs_7 = {
+       asn_MAP_resourceElementOffset_value2enum_7,     /* "tag" => N; sorted by tag */
+       asn_MAP_resourceElementOffset_enum2value_7,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceElementOffset_tags_7[] = {
+       (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_resourceElementOffset_7 = {
+       "resourceElementOffset",
+       "resourceElementOffset",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceElementOffset_tags_7,
+       sizeof(asn_DEF_resourceElementOffset_tags_7)
+               /sizeof(asn_DEF_resourceElementOffset_tags_7[0]) - 1, /* 1 */
+       asn_DEF_resourceElementOffset_tags_7,   /* Same as above */
+       sizeof(asn_DEF_resourceElementOffset_tags_7)
+               /sizeof(asn_DEF_resourceElementOffset_tags_7[0]), /* 2 */
+       { &asn_OER_type_resourceElementOffset_constr_7, &asn_PER_type_resourceElementOffset_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceElementOffset_specs_7  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PTRS_DownlinkConfig_1[] = {
+       { ATF_POINTER, 4, offsetof(struct PTRS_DownlinkConfig, frequencyDensity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_frequencyDensity_2,
+               0,
+               { &asn_OER_memb_frequencyDensity_constr_2, &asn_PER_memb_frequencyDensity_constr_2,  memb_frequencyDensity_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyDensity"
+               },
+       { ATF_POINTER, 3, offsetof(struct PTRS_DownlinkConfig, timeDensity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_timeDensity_4,
+               0,
+               { &asn_OER_memb_timeDensity_constr_4, &asn_PER_memb_timeDensity_constr_4,  memb_timeDensity_constraint_1 },
+               0, 0, /* No default value */
+               "timeDensity"
+               },
+       { ATF_POINTER, 2, offsetof(struct PTRS_DownlinkConfig, epre_Ratio),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_epre_Ratio_constr_6, &asn_PER_memb_epre_Ratio_constr_6,  memb_epre_Ratio_constraint_1 },
+               0, 0, /* No default value */
+               "epre-Ratio"
+               },
+       { ATF_POINTER, 1, offsetof(struct PTRS_DownlinkConfig, resourceElementOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceElementOffset_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceElementOffset"
+               },
+};
+static const int asn_MAP_PTRS_DownlinkConfig_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PTRS_DownlinkConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PTRS_DownlinkConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyDensity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeDensity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* epre-Ratio */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* resourceElementOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PTRS_DownlinkConfig_specs_1 = {
+       sizeof(struct PTRS_DownlinkConfig),
+       offsetof(struct PTRS_DownlinkConfig, _asn_ctx),
+       asn_MAP_PTRS_DownlinkConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PTRS_DownlinkConfig_oms_1,      /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PTRS_DownlinkConfig = {
+       "PTRS-DownlinkConfig",
+       "PTRS-DownlinkConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PTRS_DownlinkConfig_tags_1,
+       sizeof(asn_DEF_PTRS_DownlinkConfig_tags_1)
+               /sizeof(asn_DEF_PTRS_DownlinkConfig_tags_1[0]), /* 1 */
+       asn_DEF_PTRS_DownlinkConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PTRS_DownlinkConfig_tags_1)
+               /sizeof(asn_DEF_PTRS_DownlinkConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PTRS_DownlinkConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_PTRS_DownlinkConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PTRS-DownlinkConfig.h b/src/codec_utils/RRC/PTRS-DownlinkConfig.h
new file mode 100644 (file)
index 0000000..1a15e99
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PTRS_DownlinkConfig_H_
+#define        _PTRS_DownlinkConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PTRS_DownlinkConfig__resourceElementOffset {
+       PTRS_DownlinkConfig__resourceElementOffset_offset01     = 0,
+       PTRS_DownlinkConfig__resourceElementOffset_offset10     = 1,
+       PTRS_DownlinkConfig__resourceElementOffset_offset11     = 2
+} e_PTRS_DownlinkConfig__resourceElementOffset;
+
+/* PTRS-DownlinkConfig */
+typedef struct PTRS_DownlinkConfig {
+       struct PTRS_DownlinkConfig__frequencyDensity {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *frequencyDensity;
+       struct PTRS_DownlinkConfig__timeDensity {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *timeDensity;
+       long    *epre_Ratio;    /* OPTIONAL */
+       long    *resourceElementOffset; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PTRS_DownlinkConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceElementOffset_7;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PTRS_DownlinkConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PTRS_DownlinkConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PTRS_DownlinkConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTRS_DownlinkConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PTRS-UplinkConfig.c b/src/codec_utils/RRC/PTRS-UplinkConfig.c
new file mode 100644 (file)
index 0000000..e29a360
--- /dev/null
@@ -0,0 +1,738 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PTRS-UplinkConfig.h"
+
+static int
+memb_NativeInteger_constraint_3(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 <= 276)) {
+               /* 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_NativeInteger_constraint_5(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 <= 29)) {
+               /* 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 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_frequencyDensity_constraint_2(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 == 2)) {
+               /* 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_timeDensity_constraint_2(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 == 3)) {
+               /* 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_NativeInteger_constraint_20(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 <= 276)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_sampleDensity_constraint_19(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 == 5)) {
+               /* 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_memb_Member_constr_4 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyDensity_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_type_frequencyDensity_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..29) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  29 }       /* (0..29) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_timeDensity_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_type_timeDensity_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNrofPorts_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNrofPorts_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_resourceElementOffset_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceElementOffset_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ptrs_Power_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ptrs_Power_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyDensity_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_frequencyDensity_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDensity_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_timeDensity_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_21 CC_NOTUSED = {
+       { 2, 1 }        /* (1..276) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  276 }      /* (1..276) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sampleDensity_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_type_sampleDensity_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_timeDensityTransformPrecoding_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_timeDensityTransformPrecoding_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sampleDensity_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_memb_sampleDensity_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_frequencyDensity_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_4, &asn_PER_memb_Member_constr_4,  memb_NativeInteger_constraint_3 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_frequencyDensity_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_frequencyDensity_specs_3 = {
+       sizeof(struct PTRS_UplinkConfig__transformPrecoderDisabled__frequencyDensity),
+       offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled__frequencyDensity, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyDensity_3 = {
+       "frequencyDensity",
+       "frequencyDensity",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_frequencyDensity_tags_3,
+       sizeof(asn_DEF_frequencyDensity_tags_3)
+               /sizeof(asn_DEF_frequencyDensity_tags_3[0]) - 1, /* 1 */
+       asn_DEF_frequencyDensity_tags_3,        /* Same as above */
+       sizeof(asn_DEF_frequencyDensity_tags_3)
+               /sizeof(asn_DEF_frequencyDensity_tags_3[0]), /* 2 */
+       { &asn_OER_type_frequencyDensity_constr_3, &asn_PER_type_frequencyDensity_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_frequencyDensity_3,
+       1,      /* Single element */
+       &asn_SPC_frequencyDensity_specs_3       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_timeDensity_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_6, &asn_PER_memb_Member_constr_6,  memb_NativeInteger_constraint_5 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_timeDensity_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_timeDensity_specs_5 = {
+       sizeof(struct PTRS_UplinkConfig__transformPrecoderDisabled__timeDensity),
+       offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled__timeDensity, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_timeDensity_5 = {
+       "timeDensity",
+       "timeDensity",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_timeDensity_tags_5,
+       sizeof(asn_DEF_timeDensity_tags_5)
+               /sizeof(asn_DEF_timeDensity_tags_5[0]) - 1, /* 1 */
+       asn_DEF_timeDensity_tags_5,     /* Same as above */
+       sizeof(asn_DEF_timeDensity_tags_5)
+               /sizeof(asn_DEF_timeDensity_tags_5[0]), /* 2 */
+       { &asn_OER_type_timeDensity_constr_5, &asn_PER_type_timeDensity_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_timeDensity_5,
+       1,      /* Single element */
+       &asn_SPC_timeDensity_specs_5    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNrofPorts_value2enum_7[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_maxNrofPorts_enum2value_7[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNrofPorts_specs_7 = {
+       asn_MAP_maxNrofPorts_value2enum_7,      /* "tag" => N; sorted by tag */
+       asn_MAP_maxNrofPorts_enum2value_7,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNrofPorts_tags_7[] = {
+       (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_maxNrofPorts_7 = {
+       "maxNrofPorts",
+       "maxNrofPorts",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNrofPorts_tags_7,
+       sizeof(asn_DEF_maxNrofPorts_tags_7)
+               /sizeof(asn_DEF_maxNrofPorts_tags_7[0]) - 1, /* 1 */
+       asn_DEF_maxNrofPorts_tags_7,    /* Same as above */
+       sizeof(asn_DEF_maxNrofPorts_tags_7)
+               /sizeof(asn_DEF_maxNrofPorts_tags_7[0]), /* 2 */
+       { &asn_OER_type_maxNrofPorts_constr_7, &asn_PER_type_maxNrofPorts_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNrofPorts_specs_7   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceElementOffset_value2enum_10[] = {
+       { 0,    8,      "offset01" },
+       { 1,    8,      "offset10" },
+       { 2,    8,      "offset11" }
+};
+static const unsigned int asn_MAP_resourceElementOffset_enum2value_10[] = {
+       0,      /* offset01(0) */
+       1,      /* offset10(1) */
+       2       /* offset11(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceElementOffset_specs_10 = {
+       asn_MAP_resourceElementOffset_value2enum_10,    /* "tag" => N; sorted by tag */
+       asn_MAP_resourceElementOffset_enum2value_10,    /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceElementOffset_tags_10[] = {
+       (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_resourceElementOffset_10 = {
+       "resourceElementOffset",
+       "resourceElementOffset",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceElementOffset_tags_10,
+       sizeof(asn_DEF_resourceElementOffset_tags_10)
+               /sizeof(asn_DEF_resourceElementOffset_tags_10[0]) - 1, /* 1 */
+       asn_DEF_resourceElementOffset_tags_10,  /* Same as above */
+       sizeof(asn_DEF_resourceElementOffset_tags_10)
+               /sizeof(asn_DEF_resourceElementOffset_tags_10[0]), /* 2 */
+       { &asn_OER_type_resourceElementOffset_constr_10, &asn_PER_type_resourceElementOffset_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceElementOffset_specs_10 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ptrs_Power_value2enum_14[] = {
+       { 0,    3,      "p00" },
+       { 1,    3,      "p01" },
+       { 2,    3,      "p10" },
+       { 3,    3,      "p11" }
+};
+static const unsigned int asn_MAP_ptrs_Power_enum2value_14[] = {
+       0,      /* p00(0) */
+       1,      /* p01(1) */
+       2,      /* p10(2) */
+       3       /* p11(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ptrs_Power_specs_14 = {
+       asn_MAP_ptrs_Power_value2enum_14,       /* "tag" => N; sorted by tag */
+       asn_MAP_ptrs_Power_enum2value_14,       /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ptrs_Power_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_ptrs_Power_14 = {
+       "ptrs-Power",
+       "ptrs-Power",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ptrs_Power_tags_14,
+       sizeof(asn_DEF_ptrs_Power_tags_14)
+               /sizeof(asn_DEF_ptrs_Power_tags_14[0]) - 1, /* 1 */
+       asn_DEF_ptrs_Power_tags_14,     /* Same as above */
+       sizeof(asn_DEF_ptrs_Power_tags_14)
+               /sizeof(asn_DEF_ptrs_Power_tags_14[0]), /* 2 */
+       { &asn_OER_type_ptrs_Power_constr_14, &asn_PER_type_ptrs_Power_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ptrs_Power_specs_14    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_transformPrecoderDisabled_2[] = {
+       { ATF_POINTER, 2, offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, frequencyDensity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_frequencyDensity_3,
+               0,
+               { &asn_OER_memb_frequencyDensity_constr_3, &asn_PER_memb_frequencyDensity_constr_3,  memb_frequencyDensity_constraint_2 },
+               0, 0, /* No default value */
+               "frequencyDensity"
+               },
+       { ATF_POINTER, 1, offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, timeDensity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_timeDensity_5,
+               0,
+               { &asn_OER_memb_timeDensity_constr_5, &asn_PER_memb_timeDensity_constr_5,  memb_timeDensity_constraint_2 },
+               0, 0, /* No default value */
+               "timeDensity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, maxNrofPorts),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNrofPorts_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNrofPorts"
+               },
+       { ATF_POINTER, 1, offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, resourceElementOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceElementOffset_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceElementOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, ptrs_Power),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ptrs_Power_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ptrs-Power"
+               },
+};
+static const int asn_MAP_transformPrecoderDisabled_oms_2[] = { 0, 1, 3 };
+static const ber_tlv_tag_t asn_DEF_transformPrecoderDisabled_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_transformPrecoderDisabled_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyDensity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* timeDensity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxNrofPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resourceElementOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ptrs-Power */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_transformPrecoderDisabled_specs_2 = {
+       sizeof(struct PTRS_UplinkConfig__transformPrecoderDisabled),
+       offsetof(struct PTRS_UplinkConfig__transformPrecoderDisabled, _asn_ctx),
+       asn_MAP_transformPrecoderDisabled_tag2el_2,
+       5,      /* Count of tags in the map */
+       asn_MAP_transformPrecoderDisabled_oms_2,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transformPrecoderDisabled_2 = {
+       "transformPrecoderDisabled",
+       "transformPrecoderDisabled",
+       &asn_OP_SEQUENCE,
+       asn_DEF_transformPrecoderDisabled_tags_2,
+       sizeof(asn_DEF_transformPrecoderDisabled_tags_2)
+               /sizeof(asn_DEF_transformPrecoderDisabled_tags_2[0]) - 1, /* 1 */
+       asn_DEF_transformPrecoderDisabled_tags_2,       /* Same as above */
+       sizeof(asn_DEF_transformPrecoderDisabled_tags_2)
+               /sizeof(asn_DEF_transformPrecoderDisabled_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_transformPrecoderDisabled_2,
+       5,      /* Elements count */
+       &asn_SPC_transformPrecoderDisabled_specs_2      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sampleDensity_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_21, &asn_PER_memb_Member_constr_21,  memb_NativeInteger_constraint_20 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sampleDensity_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sampleDensity_specs_20 = {
+       sizeof(struct PTRS_UplinkConfig__transformPrecoderEnabled__sampleDensity),
+       offsetof(struct PTRS_UplinkConfig__transformPrecoderEnabled__sampleDensity, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sampleDensity_20 = {
+       "sampleDensity",
+       "sampleDensity",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sampleDensity_tags_20,
+       sizeof(asn_DEF_sampleDensity_tags_20)
+               /sizeof(asn_DEF_sampleDensity_tags_20[0]) - 1, /* 1 */
+       asn_DEF_sampleDensity_tags_20,  /* Same as above */
+       sizeof(asn_DEF_sampleDensity_tags_20)
+               /sizeof(asn_DEF_sampleDensity_tags_20[0]), /* 2 */
+       { &asn_OER_type_sampleDensity_constr_20, &asn_PER_type_sampleDensity_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_sampleDensity_20,
+       1,      /* Single element */
+       &asn_SPC_sampleDensity_specs_20 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_timeDensityTransformPrecoding_value2enum_22[] = {
+       { 0,    2,      "d2" }
+};
+static const unsigned int asn_MAP_timeDensityTransformPrecoding_enum2value_22[] = {
+       0       /* d2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_timeDensityTransformPrecoding_specs_22 = {
+       asn_MAP_timeDensityTransformPrecoding_value2enum_22,    /* "tag" => N; sorted by tag */
+       asn_MAP_timeDensityTransformPrecoding_enum2value_22,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_timeDensityTransformPrecoding_tags_22[] = {
+       (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_timeDensityTransformPrecoding_22 = {
+       "timeDensityTransformPrecoding",
+       "timeDensityTransformPrecoding",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_timeDensityTransformPrecoding_tags_22,
+       sizeof(asn_DEF_timeDensityTransformPrecoding_tags_22)
+               /sizeof(asn_DEF_timeDensityTransformPrecoding_tags_22[0]) - 1, /* 1 */
+       asn_DEF_timeDensityTransformPrecoding_tags_22,  /* Same as above */
+       sizeof(asn_DEF_timeDensityTransformPrecoding_tags_22)
+               /sizeof(asn_DEF_timeDensityTransformPrecoding_tags_22[0]), /* 2 */
+       { &asn_OER_type_timeDensityTransformPrecoding_constr_22, &asn_PER_type_timeDensityTransformPrecoding_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_timeDensityTransformPrecoding_specs_22 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_transformPrecoderEnabled_19[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PTRS_UplinkConfig__transformPrecoderEnabled, sampleDensity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_sampleDensity_20,
+               0,
+               { &asn_OER_memb_sampleDensity_constr_20, &asn_PER_memb_sampleDensity_constr_20,  memb_sampleDensity_constraint_19 },
+               0, 0, /* No default value */
+               "sampleDensity"
+               },
+       { ATF_POINTER, 1, offsetof(struct PTRS_UplinkConfig__transformPrecoderEnabled, timeDensityTransformPrecoding),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_timeDensityTransformPrecoding_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeDensityTransformPrecoding"
+               },
+};
+static const int asn_MAP_transformPrecoderEnabled_oms_19[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_transformPrecoderEnabled_tags_19[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_transformPrecoderEnabled_tag2el_19[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sampleDensity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* timeDensityTransformPrecoding */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_transformPrecoderEnabled_specs_19 = {
+       sizeof(struct PTRS_UplinkConfig__transformPrecoderEnabled),
+       offsetof(struct PTRS_UplinkConfig__transformPrecoderEnabled, _asn_ctx),
+       asn_MAP_transformPrecoderEnabled_tag2el_19,
+       2,      /* Count of tags in the map */
+       asn_MAP_transformPrecoderEnabled_oms_19,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transformPrecoderEnabled_19 = {
+       "transformPrecoderEnabled",
+       "transformPrecoderEnabled",
+       &asn_OP_SEQUENCE,
+       asn_DEF_transformPrecoderEnabled_tags_19,
+       sizeof(asn_DEF_transformPrecoderEnabled_tags_19)
+               /sizeof(asn_DEF_transformPrecoderEnabled_tags_19[0]) - 1, /* 1 */
+       asn_DEF_transformPrecoderEnabled_tags_19,       /* Same as above */
+       sizeof(asn_DEF_transformPrecoderEnabled_tags_19)
+               /sizeof(asn_DEF_transformPrecoderEnabled_tags_19[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_transformPrecoderEnabled_19,
+       2,      /* Elements count */
+       &asn_SPC_transformPrecoderEnabled_specs_19      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PTRS_UplinkConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct PTRS_UplinkConfig, transformPrecoderDisabled),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_transformPrecoderDisabled_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecoderDisabled"
+               },
+       { ATF_POINTER, 1, offsetof(struct PTRS_UplinkConfig, transformPrecoderEnabled),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_transformPrecoderEnabled_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecoderEnabled"
+               },
+};
+static const int asn_MAP_PTRS_UplinkConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_PTRS_UplinkConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PTRS_UplinkConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* transformPrecoderDisabled */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* transformPrecoderEnabled */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PTRS_UplinkConfig_specs_1 = {
+       sizeof(struct PTRS_UplinkConfig),
+       offsetof(struct PTRS_UplinkConfig, _asn_ctx),
+       asn_MAP_PTRS_UplinkConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PTRS_UplinkConfig_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PTRS_UplinkConfig = {
+       "PTRS-UplinkConfig",
+       "PTRS-UplinkConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PTRS_UplinkConfig_tags_1,
+       sizeof(asn_DEF_PTRS_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_PTRS_UplinkConfig_tags_1[0]), /* 1 */
+       asn_DEF_PTRS_UplinkConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PTRS_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_PTRS_UplinkConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PTRS_UplinkConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_PTRS_UplinkConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PTRS-UplinkConfig.h b/src/codec_utils/RRC/PTRS-UplinkConfig.h
new file mode 100644 (file)
index 0000000..b25c507
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PTRS_UplinkConfig_H_
+#define        _PTRS_UplinkConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PTRS_UplinkConfig__transformPrecoderDisabled__maxNrofPorts {
+       PTRS_UplinkConfig__transformPrecoderDisabled__maxNrofPorts_n1   = 0,
+       PTRS_UplinkConfig__transformPrecoderDisabled__maxNrofPorts_n2   = 1
+} e_PTRS_UplinkConfig__transformPrecoderDisabled__maxNrofPorts;
+typedef enum PTRS_UplinkConfig__transformPrecoderDisabled__resourceElementOffset {
+       PTRS_UplinkConfig__transformPrecoderDisabled__resourceElementOffset_offset01    = 0,
+       PTRS_UplinkConfig__transformPrecoderDisabled__resourceElementOffset_offset10    = 1,
+       PTRS_UplinkConfig__transformPrecoderDisabled__resourceElementOffset_offset11    = 2
+} e_PTRS_UplinkConfig__transformPrecoderDisabled__resourceElementOffset;
+typedef enum PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power {
+       PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power_p00    = 0,
+       PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power_p01    = 1,
+       PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power_p10    = 2,
+       PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power_p11    = 3
+} e_PTRS_UplinkConfig__transformPrecoderDisabled__ptrs_Power;
+typedef enum PTRS_UplinkConfig__transformPrecoderEnabled__timeDensityTransformPrecoding {
+       PTRS_UplinkConfig__transformPrecoderEnabled__timeDensityTransformPrecoding_d2   = 0
+} e_PTRS_UplinkConfig__transformPrecoderEnabled__timeDensityTransformPrecoding;
+
+/* PTRS-UplinkConfig */
+typedef struct PTRS_UplinkConfig {
+       struct PTRS_UplinkConfig__transformPrecoderDisabled {
+               struct PTRS_UplinkConfig__transformPrecoderDisabled__frequencyDensity {
+                       A_SEQUENCE_OF(long) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *frequencyDensity;
+               struct PTRS_UplinkConfig__transformPrecoderDisabled__timeDensity {
+                       A_SEQUENCE_OF(long) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *timeDensity;
+               long     maxNrofPorts;
+               long    *resourceElementOffset; /* OPTIONAL */
+               long     ptrs_Power;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *transformPrecoderDisabled;
+       struct PTRS_UplinkConfig__transformPrecoderEnabled {
+               struct PTRS_UplinkConfig__transformPrecoderEnabled__sampleDensity {
+                       A_SEQUENCE_OF(long) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } sampleDensity;
+               long    *timeDensityTransformPrecoding; /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *transformPrecoderEnabled;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PTRS_UplinkConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNrofPorts_7;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceElementOffset_10;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ptrs_Power_14; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_timeDensityTransformPrecoding_22;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PTRS_UplinkConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PTRS_UplinkConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PTRS_UplinkConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PTRS_UplinkConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-CSI-Resource.c b/src/codec_utils/RRC/PUCCH-CSI-Resource.c
new file mode 100644 (file)
index 0000000..fa365ba
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-CSI-Resource.h"
+
+asn_TYPE_member_t asn_MBR_PUCCH_CSI_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_CSI_Resource, uplinkBandwidthPartId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkBandwidthPartId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_CSI_Resource, pucch_Resource),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-Resource"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_CSI_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_CSI_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uplinkBandwidthPartId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pucch-Resource */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_CSI_Resource_specs_1 = {
+       sizeof(struct PUCCH_CSI_Resource),
+       offsetof(struct PUCCH_CSI_Resource, _asn_ctx),
+       asn_MAP_PUCCH_CSI_Resource_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_CSI_Resource = {
+       "PUCCH-CSI-Resource",
+       "PUCCH-CSI-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_CSI_Resource_tags_1,
+       sizeof(asn_DEF_PUCCH_CSI_Resource_tags_1)
+               /sizeof(asn_DEF_PUCCH_CSI_Resource_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_CSI_Resource_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUCCH_CSI_Resource_tags_1)
+               /sizeof(asn_DEF_PUCCH_CSI_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_CSI_Resource_1,
+       2,      /* Elements count */
+       &asn_SPC_PUCCH_CSI_Resource_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-CSI-Resource.h b/src/codec_utils/RRC/PUCCH-CSI-Resource.h
new file mode 100644 (file)
index 0000000..def1233
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_CSI_Resource_H_
+#define        _PUCCH_CSI_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include "PUCCH-ResourceId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-CSI-Resource */
+typedef struct PUCCH_CSI_Resource {
+       BWP_Id_t         uplinkBandwidthPartId;
+       PUCCH_ResourceId_t       pucch_Resource;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_CSI_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_CSI_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_CSI_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_CSI_Resource_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_CSI_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-Config.c b/src/codec_utils/RRC/PUCCH-Config.c
new file mode 100644 (file)
index 0000000..a1821b1
--- /dev/null
@@ -0,0 +1,1249 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-Config.h"
+
+#include "PUCCH-PowerControl.h"
+#include "PUCCH-ResourceSet.h"
+#include "PUCCH-Resource.h"
+#include "PUCCH-FormatConfig.h"
+#include "SchedulingRequestResourceConfig.h"
+#include "PUCCH-SpatialRelationInfo.h"
+static int
+memb_NativeInteger_constraint_28(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 <= 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_resourceSetToAddModList_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 <= 4)) {
+               /* 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_resourceSetToReleaseList_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 <= 4)) {
+               /* 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_resourceToAddModList_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 <= 128)) {
+               /* 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_resourceToReleaseList_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 <= 128)) {
+               /* 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_schedulingRequestResourceToAddModList_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 <= 8)) {
+               /* 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_schedulingRequestResourceToReleaseList_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 <= 8)) {
+               /* 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_multi_CSI_PUCCH_ResourceList_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 <= 2)) {
+               /* 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_dl_DataToUL_ACK_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 <= 8)) {
+               /* 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_spatialRelationInfoToAddModList_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 <= 8)) {
+               /* 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_spatialRelationInfoToReleaseList_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 <= 8)) {
+               /* 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_resourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_resourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_resourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_resourceToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_type_resourceToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_format1_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_format1_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_format2_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_format2_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_format3_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_format3_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_format4_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_format4_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_schedulingRequestResourceToAddModList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_schedulingRequestResourceToAddModList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_schedulingRequestResourceToReleaseList_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_schedulingRequestResourceToReleaseList_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_multi_CSI_PUCCH_ResourceList_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_type_multi_CSI_PUCCH_ResourceList_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_29 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dl_DataToUL_ACK_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_dl_DataToUL_ACK_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_spatialRelationInfoToAddModList_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_spatialRelationInfoToAddModList_constr_30 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_spatialRelationInfoToReleaseList_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_spatialRelationInfoToReleaseList_constr_32 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_resourceSetToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_resourceSetToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_resourceToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceToReleaseList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..128)) */};
+static asn_per_constraints_t asn_PER_memb_resourceToReleaseList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (SIZE(1..128)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_schedulingRequestResourceToAddModList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_schedulingRequestResourceToAddModList_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_schedulingRequestResourceToReleaseList_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_schedulingRequestResourceToReleaseList_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_multi_CSI_PUCCH_ResourceList_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_memb_multi_CSI_PUCCH_ResourceList_constr_26 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dl_DataToUL_ACK_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_dl_DataToUL_ACK_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spatialRelationInfoToAddModList_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_spatialRelationInfoToAddModList_constr_30 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spatialRelationInfoToReleaseList_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_spatialRelationInfoToReleaseList_constr_32 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resourceSetToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceSetToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resourceSetToAddModList_specs_2 = {
+       sizeof(struct PUCCH_Config__resourceSetToAddModList),
+       offsetof(struct PUCCH_Config__resourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceSetToAddModList_2 = {
+       "resourceSetToAddModList",
+       "resourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_resourceSetToAddModList_tags_2,
+       sizeof(asn_DEF_resourceSetToAddModList_tags_2)
+               /sizeof(asn_DEF_resourceSetToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_resourceSetToAddModList_tags_2, /* Same as above */
+       sizeof(asn_DEF_resourceSetToAddModList_tags_2)
+               /sizeof(asn_DEF_resourceSetToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_resourceSetToAddModList_constr_2, &asn_PER_type_resourceSetToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_resourceSetToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_resourceSetToAddModList_specs_2        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceSetToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUCCH_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceSetToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resourceSetToReleaseList_specs_4 = {
+       sizeof(struct PUCCH_Config__resourceSetToReleaseList),
+       offsetof(struct PUCCH_Config__resourceSetToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceSetToReleaseList_4 = {
+       "resourceSetToReleaseList",
+       "resourceSetToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_resourceSetToReleaseList_tags_4,
+       sizeof(asn_DEF_resourceSetToReleaseList_tags_4)
+               /sizeof(asn_DEF_resourceSetToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_resourceSetToReleaseList_tags_4,        /* Same as above */
+       sizeof(asn_DEF_resourceSetToReleaseList_tags_4)
+               /sizeof(asn_DEF_resourceSetToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_resourceSetToReleaseList_constr_4, &asn_PER_type_resourceSetToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_resourceSetToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_resourceSetToReleaseList_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceToAddModList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceToAddModList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resourceToAddModList_specs_6 = {
+       sizeof(struct PUCCH_Config__resourceToAddModList),
+       offsetof(struct PUCCH_Config__resourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceToAddModList_6 = {
+       "resourceToAddModList",
+       "resourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_resourceToAddModList_tags_6,
+       sizeof(asn_DEF_resourceToAddModList_tags_6)
+               /sizeof(asn_DEF_resourceToAddModList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_resourceToAddModList_tags_6,    /* Same as above */
+       sizeof(asn_DEF_resourceToAddModList_tags_6)
+               /sizeof(asn_DEF_resourceToAddModList_tags_6[0]), /* 2 */
+       { &asn_OER_type_resourceToAddModList_constr_6, &asn_PER_type_resourceToAddModList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_resourceToAddModList_6,
+       1,      /* Single element */
+       &asn_SPC_resourceToAddModList_specs_6   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceToReleaseList_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceToReleaseList_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resourceToReleaseList_specs_8 = {
+       sizeof(struct PUCCH_Config__resourceToReleaseList),
+       offsetof(struct PUCCH_Config__resourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceToReleaseList_8 = {
+       "resourceToReleaseList",
+       "resourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_resourceToReleaseList_tags_8,
+       sizeof(asn_DEF_resourceToReleaseList_tags_8)
+               /sizeof(asn_DEF_resourceToReleaseList_tags_8[0]) - 1, /* 1 */
+       asn_DEF_resourceToReleaseList_tags_8,   /* Same as above */
+       sizeof(asn_DEF_resourceToReleaseList_tags_8)
+               /sizeof(asn_DEF_resourceToReleaseList_tags_8[0]), /* 2 */
+       { &asn_OER_type_resourceToReleaseList_constr_8, &asn_PER_type_resourceToReleaseList_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_resourceToReleaseList_8,
+       1,      /* Single element */
+       &asn_SPC_resourceToReleaseList_specs_8  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_format1_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Config__format1, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Config__format1, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_FormatConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_format1_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_format1_specs_10 = {
+       sizeof(struct PUCCH_Config__format1),
+       offsetof(struct PUCCH_Config__format1, _asn_ctx),
+       offsetof(struct PUCCH_Config__format1, present),
+       sizeof(((struct PUCCH_Config__format1 *)0)->present),
+       asn_MAP_format1_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_format1_10 = {
+       "format1",
+       "format1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_format1_constr_10, &asn_PER_type_format1_constr_10, CHOICE_constraint },
+       asn_MBR_format1_10,
+       2,      /* Elements count */
+       &asn_SPC_format1_specs_10       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_format2_13[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Config__format2, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Config__format2, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_FormatConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_format2_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_format2_specs_13 = {
+       sizeof(struct PUCCH_Config__format2),
+       offsetof(struct PUCCH_Config__format2, _asn_ctx),
+       offsetof(struct PUCCH_Config__format2, present),
+       sizeof(((struct PUCCH_Config__format2 *)0)->present),
+       asn_MAP_format2_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_format2_13 = {
+       "format2",
+       "format2",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_format2_constr_13, &asn_PER_type_format2_constr_13, CHOICE_constraint },
+       asn_MBR_format2_13,
+       2,      /* Elements count */
+       &asn_SPC_format2_specs_13       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_format3_16[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Config__format3, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Config__format3, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_FormatConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_format3_tag2el_16[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_format3_specs_16 = {
+       sizeof(struct PUCCH_Config__format3),
+       offsetof(struct PUCCH_Config__format3, _asn_ctx),
+       offsetof(struct PUCCH_Config__format3, present),
+       sizeof(((struct PUCCH_Config__format3 *)0)->present),
+       asn_MAP_format3_tag2el_16,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_format3_16 = {
+       "format3",
+       "format3",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_format3_constr_16, &asn_PER_type_format3_constr_16, CHOICE_constraint },
+       asn_MBR_format3_16,
+       2,      /* Elements count */
+       &asn_SPC_format3_specs_16       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_format4_19[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Config__format4, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Config__format4, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_FormatConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_format4_tag2el_19[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_format4_specs_19 = {
+       sizeof(struct PUCCH_Config__format4),
+       offsetof(struct PUCCH_Config__format4, _asn_ctx),
+       offsetof(struct PUCCH_Config__format4, present),
+       sizeof(((struct PUCCH_Config__format4 *)0)->present),
+       asn_MAP_format4_tag2el_19,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_format4_19 = {
+       "format4",
+       "format4",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_format4_constr_19, &asn_PER_type_format4_constr_19, CHOICE_constraint },
+       asn_MBR_format4_19,
+       2,      /* Elements count */
+       &asn_SPC_format4_specs_19       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_schedulingRequestResourceToAddModList_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SchedulingRequestResourceConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_schedulingRequestResourceToAddModList_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_schedulingRequestResourceToAddModList_specs_22 = {
+       sizeof(struct PUCCH_Config__schedulingRequestResourceToAddModList),
+       offsetof(struct PUCCH_Config__schedulingRequestResourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingRequestResourceToAddModList_22 = {
+       "schedulingRequestResourceToAddModList",
+       "schedulingRequestResourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_schedulingRequestResourceToAddModList_tags_22,
+       sizeof(asn_DEF_schedulingRequestResourceToAddModList_tags_22)
+               /sizeof(asn_DEF_schedulingRequestResourceToAddModList_tags_22[0]) - 1, /* 1 */
+       asn_DEF_schedulingRequestResourceToAddModList_tags_22,  /* Same as above */
+       sizeof(asn_DEF_schedulingRequestResourceToAddModList_tags_22)
+               /sizeof(asn_DEF_schedulingRequestResourceToAddModList_tags_22[0]), /* 2 */
+       { &asn_OER_type_schedulingRequestResourceToAddModList_constr_22, &asn_PER_type_schedulingRequestResourceToAddModList_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_schedulingRequestResourceToAddModList_22,
+       1,      /* Single element */
+       &asn_SPC_schedulingRequestResourceToAddModList_specs_22 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_schedulingRequestResourceToReleaseList_24[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SchedulingRequestResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_schedulingRequestResourceToReleaseList_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_schedulingRequestResourceToReleaseList_specs_24 = {
+       sizeof(struct PUCCH_Config__schedulingRequestResourceToReleaseList),
+       offsetof(struct PUCCH_Config__schedulingRequestResourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingRequestResourceToReleaseList_24 = {
+       "schedulingRequestResourceToReleaseList",
+       "schedulingRequestResourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_schedulingRequestResourceToReleaseList_tags_24,
+       sizeof(asn_DEF_schedulingRequestResourceToReleaseList_tags_24)
+               /sizeof(asn_DEF_schedulingRequestResourceToReleaseList_tags_24[0]) - 1, /* 1 */
+       asn_DEF_schedulingRequestResourceToReleaseList_tags_24, /* Same as above */
+       sizeof(asn_DEF_schedulingRequestResourceToReleaseList_tags_24)
+               /sizeof(asn_DEF_schedulingRequestResourceToReleaseList_tags_24[0]), /* 2 */
+       { &asn_OER_type_schedulingRequestResourceToReleaseList_constr_24, &asn_PER_type_schedulingRequestResourceToReleaseList_constr_24, SEQUENCE_OF_constraint },
+       asn_MBR_schedulingRequestResourceToReleaseList_24,
+       1,      /* Single element */
+       &asn_SPC_schedulingRequestResourceToReleaseList_specs_24        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_multi_CSI_PUCCH_ResourceList_26[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_multi_CSI_PUCCH_ResourceList_specs_26 = {
+       sizeof(struct PUCCH_Config__multi_CSI_PUCCH_ResourceList),
+       offsetof(struct PUCCH_Config__multi_CSI_PUCCH_ResourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_multi_CSI_PUCCH_ResourceList_26 = {
+       "multi-CSI-PUCCH-ResourceList",
+       "multi-CSI-PUCCH-ResourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26,
+       sizeof(asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26)
+               /sizeof(asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26[0]) - 1, /* 1 */
+       asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26,   /* Same as above */
+       sizeof(asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26)
+               /sizeof(asn_DEF_multi_CSI_PUCCH_ResourceList_tags_26[0]), /* 2 */
+       { &asn_OER_type_multi_CSI_PUCCH_ResourceList_constr_26, &asn_PER_type_multi_CSI_PUCCH_ResourceList_constr_26, SEQUENCE_OF_constraint },
+       asn_MBR_multi_CSI_PUCCH_ResourceList_26,
+       1,      /* Single element */
+       &asn_SPC_multi_CSI_PUCCH_ResourceList_specs_26  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dl_DataToUL_ACK_28[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_29, &asn_PER_memb_Member_constr_29,  memb_NativeInteger_constraint_28 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_dl_DataToUL_ACK_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dl_DataToUL_ACK_specs_28 = {
+       sizeof(struct PUCCH_Config__dl_DataToUL_ACK),
+       offsetof(struct PUCCH_Config__dl_DataToUL_ACK, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dl_DataToUL_ACK_28 = {
+       "dl-DataToUL-ACK",
+       "dl-DataToUL-ACK",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_dl_DataToUL_ACK_tags_28,
+       sizeof(asn_DEF_dl_DataToUL_ACK_tags_28)
+               /sizeof(asn_DEF_dl_DataToUL_ACK_tags_28[0]) - 1, /* 1 */
+       asn_DEF_dl_DataToUL_ACK_tags_28,        /* Same as above */
+       sizeof(asn_DEF_dl_DataToUL_ACK_tags_28)
+               /sizeof(asn_DEF_dl_DataToUL_ACK_tags_28[0]), /* 2 */
+       { &asn_OER_type_dl_DataToUL_ACK_constr_28, &asn_PER_type_dl_DataToUL_ACK_constr_28, SEQUENCE_OF_constraint },
+       asn_MBR_dl_DataToUL_ACK_28,
+       1,      /* Single element */
+       &asn_SPC_dl_DataToUL_ACK_specs_28       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spatialRelationInfoToAddModList_30[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_SpatialRelationInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_spatialRelationInfoToAddModList_tags_30[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_spatialRelationInfoToAddModList_specs_30 = {
+       sizeof(struct PUCCH_Config__spatialRelationInfoToAddModList),
+       offsetof(struct PUCCH_Config__spatialRelationInfoToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spatialRelationInfoToAddModList_30 = {
+       "spatialRelationInfoToAddModList",
+       "spatialRelationInfoToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_spatialRelationInfoToAddModList_tags_30,
+       sizeof(asn_DEF_spatialRelationInfoToAddModList_tags_30)
+               /sizeof(asn_DEF_spatialRelationInfoToAddModList_tags_30[0]) - 1, /* 1 */
+       asn_DEF_spatialRelationInfoToAddModList_tags_30,        /* Same as above */
+       sizeof(asn_DEF_spatialRelationInfoToAddModList_tags_30)
+               /sizeof(asn_DEF_spatialRelationInfoToAddModList_tags_30[0]), /* 2 */
+       { &asn_OER_type_spatialRelationInfoToAddModList_constr_30, &asn_PER_type_spatialRelationInfoToAddModList_constr_30, SEQUENCE_OF_constraint },
+       asn_MBR_spatialRelationInfoToAddModList_30,
+       1,      /* Single element */
+       &asn_SPC_spatialRelationInfoToAddModList_specs_30       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_spatialRelationInfoToReleaseList_32[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUCCH_SpatialRelationInfoId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_spatialRelationInfoToReleaseList_tags_32[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_spatialRelationInfoToReleaseList_specs_32 = {
+       sizeof(struct PUCCH_Config__spatialRelationInfoToReleaseList),
+       offsetof(struct PUCCH_Config__spatialRelationInfoToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_spatialRelationInfoToReleaseList_32 = {
+       "spatialRelationInfoToReleaseList",
+       "spatialRelationInfoToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_spatialRelationInfoToReleaseList_tags_32,
+       sizeof(asn_DEF_spatialRelationInfoToReleaseList_tags_32)
+               /sizeof(asn_DEF_spatialRelationInfoToReleaseList_tags_32[0]) - 1, /* 1 */
+       asn_DEF_spatialRelationInfoToReleaseList_tags_32,       /* Same as above */
+       sizeof(asn_DEF_spatialRelationInfoToReleaseList_tags_32)
+               /sizeof(asn_DEF_spatialRelationInfoToReleaseList_tags_32[0]), /* 2 */
+       { &asn_OER_type_spatialRelationInfoToReleaseList_constr_32, &asn_PER_type_spatialRelationInfoToReleaseList_constr_32, SEQUENCE_OF_constraint },
+       asn_MBR_spatialRelationInfoToReleaseList_32,
+       1,      /* Single element */
+       &asn_SPC_spatialRelationInfoToReleaseList_specs_32      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_Config_1[] = {
+       { ATF_POINTER, 15, offsetof(struct PUCCH_Config, resourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_resourceSetToAddModList_2,
+               0,
+               { &asn_OER_memb_resourceSetToAddModList_constr_2, &asn_PER_memb_resourceSetToAddModList_constr_2,  memb_resourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "resourceSetToAddModList"
+               },
+       { ATF_POINTER, 14, offsetof(struct PUCCH_Config, resourceSetToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_resourceSetToReleaseList_4,
+               0,
+               { &asn_OER_memb_resourceSetToReleaseList_constr_4, &asn_PER_memb_resourceSetToReleaseList_constr_4,  memb_resourceSetToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "resourceSetToReleaseList"
+               },
+       { ATF_POINTER, 13, offsetof(struct PUCCH_Config, resourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_resourceToAddModList_6,
+               0,
+               { &asn_OER_memb_resourceToAddModList_constr_6, &asn_PER_memb_resourceToAddModList_constr_6,  memb_resourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "resourceToAddModList"
+               },
+       { ATF_POINTER, 12, offsetof(struct PUCCH_Config, resourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_resourceToReleaseList_8,
+               0,
+               { &asn_OER_memb_resourceToReleaseList_constr_8, &asn_PER_memb_resourceToReleaseList_constr_8,  memb_resourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "resourceToReleaseList"
+               },
+       { ATF_POINTER, 11, offsetof(struct PUCCH_Config, format1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_format1_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format1"
+               },
+       { ATF_POINTER, 10, offsetof(struct PUCCH_Config, format2),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_format2_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format2"
+               },
+       { ATF_POINTER, 9, offsetof(struct PUCCH_Config, format3),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_format3_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format3"
+               },
+       { ATF_POINTER, 8, offsetof(struct PUCCH_Config, format4),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_format4_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format4"
+               },
+       { ATF_POINTER, 7, offsetof(struct PUCCH_Config, schedulingRequestResourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_schedulingRequestResourceToAddModList_22,
+               0,
+               { &asn_OER_memb_schedulingRequestResourceToAddModList_constr_22, &asn_PER_memb_schedulingRequestResourceToAddModList_constr_22,  memb_schedulingRequestResourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "schedulingRequestResourceToAddModList"
+               },
+       { ATF_POINTER, 6, offsetof(struct PUCCH_Config, schedulingRequestResourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_schedulingRequestResourceToReleaseList_24,
+               0,
+               { &asn_OER_memb_schedulingRequestResourceToReleaseList_constr_24, &asn_PER_memb_schedulingRequestResourceToReleaseList_constr_24,  memb_schedulingRequestResourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "schedulingRequestResourceToReleaseList"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUCCH_Config, multi_CSI_PUCCH_ResourceList),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_multi_CSI_PUCCH_ResourceList_26,
+               0,
+               { &asn_OER_memb_multi_CSI_PUCCH_ResourceList_constr_26, &asn_PER_memb_multi_CSI_PUCCH_ResourceList_constr_26,  memb_multi_CSI_PUCCH_ResourceList_constraint_1 },
+               0, 0, /* No default value */
+               "multi-CSI-PUCCH-ResourceList"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUCCH_Config, dl_DataToUL_ACK),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               0,
+               &asn_DEF_dl_DataToUL_ACK_28,
+               0,
+               { &asn_OER_memb_dl_DataToUL_ACK_constr_28, &asn_PER_memb_dl_DataToUL_ACK_constr_28,  memb_dl_DataToUL_ACK_constraint_1 },
+               0, 0, /* No default value */
+               "dl-DataToUL-ACK"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUCCH_Config, spatialRelationInfoToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               0,
+               &asn_DEF_spatialRelationInfoToAddModList_30,
+               0,
+               { &asn_OER_memb_spatialRelationInfoToAddModList_constr_30, &asn_PER_memb_spatialRelationInfoToAddModList_constr_30,  memb_spatialRelationInfoToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "spatialRelationInfoToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUCCH_Config, spatialRelationInfoToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_spatialRelationInfoToReleaseList_32,
+               0,
+               { &asn_OER_memb_spatialRelationInfoToReleaseList_constr_32, &asn_PER_memb_spatialRelationInfoToReleaseList_constr_32,  memb_spatialRelationInfoToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "spatialRelationInfoToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_Config, pucch_PowerControl),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_PowerControl,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-PowerControl"
+               },
+};
+static const int asn_MAP_PUCCH_Config_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resourceSetToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* resourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* format3 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* format4 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* schedulingRequestResourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* schedulingRequestResourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* multi-CSI-PUCCH-ResourceList */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* dl-DataToUL-ACK */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* spatialRelationInfoToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* spatialRelationInfoToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 } /* pucch-PowerControl */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_Config_specs_1 = {
+       sizeof(struct PUCCH_Config),
+       offsetof(struct PUCCH_Config, _asn_ctx),
+       asn_MAP_PUCCH_Config_tag2el_1,
+       15,     /* Count of tags in the map */
+       asn_MAP_PUCCH_Config_oms_1,     /* Optional members */
+       15, 0,  /* Root/Additions */
+       15,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_Config = {
+       "PUCCH-Config",
+       "PUCCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_Config_tags_1,
+       sizeof(asn_DEF_PUCCH_Config_tags_1)
+               /sizeof(asn_DEF_PUCCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_Config_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PUCCH_Config_tags_1)
+               /sizeof(asn_DEF_PUCCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_Config_1,
+       15,     /* Elements count */
+       &asn_SPC_PUCCH_Config_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-Config.h b/src/codec_utils/RRC/PUCCH-Config.h
new file mode 100644 (file)
index 0000000..30976fd
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_Config_H_
+#define        _PUCCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "PUCCH-ResourceSetId.h"
+#include "PUCCH-ResourceId.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include "SchedulingRequestResourceId.h"
+#include <NativeInteger.h>
+#include "PUCCH-SpatialRelationInfoId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_Config__format1_PR {
+       PUCCH_Config__format1_PR_NOTHING,       /* No components present */
+       PUCCH_Config__format1_PR_release,
+       PUCCH_Config__format1_PR_setup
+} PUCCH_Config__format1_PR;
+typedef enum PUCCH_Config__format2_PR {
+       PUCCH_Config__format2_PR_NOTHING,       /* No components present */
+       PUCCH_Config__format2_PR_release,
+       PUCCH_Config__format2_PR_setup
+} PUCCH_Config__format2_PR;
+typedef enum PUCCH_Config__format3_PR {
+       PUCCH_Config__format3_PR_NOTHING,       /* No components present */
+       PUCCH_Config__format3_PR_release,
+       PUCCH_Config__format3_PR_setup
+} PUCCH_Config__format3_PR;
+typedef enum PUCCH_Config__format4_PR {
+       PUCCH_Config__format4_PR_NOTHING,       /* No components present */
+       PUCCH_Config__format4_PR_release,
+       PUCCH_Config__format4_PR_setup
+} PUCCH_Config__format4_PR;
+
+/* Forward declarations */
+struct PUCCH_PowerControl;
+struct PUCCH_ResourceSet;
+struct PUCCH_Resource;
+struct PUCCH_FormatConfig;
+struct SchedulingRequestResourceConfig;
+struct PUCCH_SpatialRelationInfo;
+
+/* PUCCH-Config */
+typedef struct PUCCH_Config {
+       struct PUCCH_Config__resourceSetToAddModList {
+               A_SEQUENCE_OF(struct PUCCH_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *resourceSetToAddModList;
+       struct PUCCH_Config__resourceSetToReleaseList {
+               A_SEQUENCE_OF(PUCCH_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *resourceSetToReleaseList;
+       struct PUCCH_Config__resourceToAddModList {
+               A_SEQUENCE_OF(struct PUCCH_Resource) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *resourceToAddModList;
+       struct PUCCH_Config__resourceToReleaseList {
+               A_SEQUENCE_OF(PUCCH_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *resourceToReleaseList;
+       struct PUCCH_Config__format1 {
+               PUCCH_Config__format1_PR present;
+               union PUCCH_Config__format1_u {
+                       NULL_t   release;
+                       struct PUCCH_FormatConfig       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *format1;
+       struct PUCCH_Config__format2 {
+               PUCCH_Config__format2_PR present;
+               union PUCCH_Config__format2_u {
+                       NULL_t   release;
+                       struct PUCCH_FormatConfig       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *format2;
+       struct PUCCH_Config__format3 {
+               PUCCH_Config__format3_PR present;
+               union PUCCH_Config__format3_u {
+                       NULL_t   release;
+                       struct PUCCH_FormatConfig       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *format3;
+       struct PUCCH_Config__format4 {
+               PUCCH_Config__format4_PR present;
+               union PUCCH_Config__format4_u {
+                       NULL_t   release;
+                       struct PUCCH_FormatConfig       *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *format4;
+       struct PUCCH_Config__schedulingRequestResourceToAddModList {
+               A_SEQUENCE_OF(struct SchedulingRequestResourceConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *schedulingRequestResourceToAddModList;
+       struct PUCCH_Config__schedulingRequestResourceToReleaseList {
+               A_SEQUENCE_OF(SchedulingRequestResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *schedulingRequestResourceToReleaseList;
+       struct PUCCH_Config__multi_CSI_PUCCH_ResourceList {
+               A_SEQUENCE_OF(PUCCH_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *multi_CSI_PUCCH_ResourceList;
+       struct PUCCH_Config__dl_DataToUL_ACK {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dl_DataToUL_ACK;
+       struct PUCCH_Config__spatialRelationInfoToAddModList {
+               A_SEQUENCE_OF(struct PUCCH_SpatialRelationInfo) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *spatialRelationInfoToAddModList;
+       struct PUCCH_Config__spatialRelationInfoToReleaseList {
+               A_SEQUENCE_OF(PUCCH_SpatialRelationInfoId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *spatialRelationInfoToReleaseList;
+       struct PUCCH_PowerControl       *pucch_PowerControl;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_Config_1[15];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-ConfigCommon.c b/src/codec_utils/RRC/PUCCH-ConfigCommon.c
new file mode 100644 (file)
index 0000000..5e646c5
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-ConfigCommon.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_pucch_ResourceCommon_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 >= 0 && 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_hoppingId_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 >= 0 && value <= 1023)) {
+               /* 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_p0_nominal_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 >= -202 && value <= 24)) {
+               /* 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_pucch_GroupHopping_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_GroupHopping_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pucch_ResourceCommon_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_pucch_ResourceCommon_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_hoppingId_constr_7 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_hoppingId_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_nominal_constr_8 CC_NOTUSED = {
+       { 2, 0 }        /* (-202..24) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_nominal_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_GroupHopping_value2enum_3[] = {
+       { 0,    7,      "neither" },
+       { 1,    6,      "enable" },
+       { 2,    7,      "disable" }
+};
+static const unsigned int asn_MAP_pucch_GroupHopping_enum2value_3[] = {
+       2,      /* disable(2) */
+       1,      /* enable(1) */
+       0       /* neither(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_GroupHopping_specs_3 = {
+       asn_MAP_pucch_GroupHopping_value2enum_3,        /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_GroupHopping_enum2value_3,        /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_GroupHopping_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_pucch_GroupHopping_3 = {
+       "pucch-GroupHopping",
+       "pucch-GroupHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_GroupHopping_tags_3,
+       sizeof(asn_DEF_pucch_GroupHopping_tags_3)
+               /sizeof(asn_DEF_pucch_GroupHopping_tags_3[0]) - 1, /* 1 */
+       asn_DEF_pucch_GroupHopping_tags_3,      /* Same as above */
+       sizeof(asn_DEF_pucch_GroupHopping_tags_3)
+               /sizeof(asn_DEF_pucch_GroupHopping_tags_3[0]), /* 2 */
+       { &asn_OER_type_pucch_GroupHopping_constr_3, &asn_PER_type_pucch_GroupHopping_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_GroupHopping_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_ConfigCommon_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PUCCH_ConfigCommon, pucch_ResourceCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_pucch_ResourceCommon_constr_2, &asn_PER_memb_pucch_ResourceCommon_constr_2,  memb_pucch_ResourceCommon_constraint_1 },
+               0, 0, /* No default value */
+               "pucch-ResourceCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_ConfigCommon, pucch_GroupHopping),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_GroupHopping_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-GroupHopping"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUCCH_ConfigCommon, hoppingId),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_hoppingId_constr_7, &asn_PER_memb_hoppingId_constr_7,  memb_hoppingId_constraint_1 },
+               0, 0, /* No default value */
+               "hoppingId"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_ConfigCommon, p0_nominal),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_nominal_constr_8, &asn_PER_memb_p0_nominal_constr_8,  memb_p0_nominal_constraint_1 },
+               0, 0, /* No default value */
+               "p0-nominal"
+               },
+};
+static const int asn_MAP_PUCCH_ConfigCommon_oms_1[] = { 0, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-ResourceCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pucch-GroupHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hoppingId */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* p0-nominal */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ConfigCommon_specs_1 = {
+       sizeof(struct PUCCH_ConfigCommon),
+       offsetof(struct PUCCH_ConfigCommon, _asn_ctx),
+       asn_MAP_PUCCH_ConfigCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PUCCH_ConfigCommon_oms_1,       /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_ConfigCommon = {
+       "PUCCH-ConfigCommon",
+       "PUCCH-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_ConfigCommon_tags_1,
+       sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_ConfigCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_ConfigCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_PUCCH_ConfigCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-ConfigCommon.h b/src/codec_utils/RRC/PUCCH-ConfigCommon.h
new file mode 100644 (file)
index 0000000..0fc4a7b
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_ConfigCommon_H_
+#define        _PUCCH_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_ConfigCommon__pucch_GroupHopping {
+       PUCCH_ConfigCommon__pucch_GroupHopping_neither  = 0,
+       PUCCH_ConfigCommon__pucch_GroupHopping_enable   = 1,
+       PUCCH_ConfigCommon__pucch_GroupHopping_disable  = 2
+} e_PUCCH_ConfigCommon__pucch_GroupHopping;
+
+/* PUCCH-ConfigCommon */
+typedef struct PUCCH_ConfigCommon {
+       long    *pucch_ResourceCommon;  /* OPTIONAL */
+       long     pucch_GroupHopping;
+       long    *hoppingId;     /* OPTIONAL */
+       long    *p0_nominal;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_ConfigCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_GroupHopping_3;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_ConfigCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-FormatConfig.c b/src/codec_utils/RRC/PUCCH-FormatConfig.c
new file mode 100644 (file)
index 0000000..bd66527
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-FormatConfig.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.
+ */
+static asn_oer_constraints_t asn_OER_type_interslotFrequencyHopping_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_interslotFrequencyHopping_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_additionalDMRS_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_additionalDMRS_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nrofSlots_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofSlots_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pi2BPSK_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pi2BPSK_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_simultaneousHARQ_ACK_CSI_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_simultaneousHARQ_ACK_CSI_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_interslotFrequencyHopping_value2enum_2[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_interslotFrequencyHopping_enum2value_2[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interslotFrequencyHopping_specs_2 = {
+       asn_MAP_interslotFrequencyHopping_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_interslotFrequencyHopping_enum2value_2, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_interslotFrequencyHopping_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_interslotFrequencyHopping_2 = {
+       "interslotFrequencyHopping",
+       "interslotFrequencyHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_interslotFrequencyHopping_tags_2,
+       sizeof(asn_DEF_interslotFrequencyHopping_tags_2)
+               /sizeof(asn_DEF_interslotFrequencyHopping_tags_2[0]) - 1, /* 1 */
+       asn_DEF_interslotFrequencyHopping_tags_2,       /* Same as above */
+       sizeof(asn_DEF_interslotFrequencyHopping_tags_2)
+               /sizeof(asn_DEF_interslotFrequencyHopping_tags_2[0]), /* 2 */
+       { &asn_OER_type_interslotFrequencyHopping_constr_2, &asn_PER_type_interslotFrequencyHopping_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_interslotFrequencyHopping_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_additionalDMRS_value2enum_4[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_additionalDMRS_enum2value_4[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_additionalDMRS_specs_4 = {
+       asn_MAP_additionalDMRS_value2enum_4,    /* "tag" => N; sorted by tag */
+       asn_MAP_additionalDMRS_enum2value_4,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_additionalDMRS_tags_4[] = {
+       (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_additionalDMRS_4 = {
+       "additionalDMRS",
+       "additionalDMRS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_additionalDMRS_tags_4,
+       sizeof(asn_DEF_additionalDMRS_tags_4)
+               /sizeof(asn_DEF_additionalDMRS_tags_4[0]) - 1, /* 1 */
+       asn_DEF_additionalDMRS_tags_4,  /* Same as above */
+       sizeof(asn_DEF_additionalDMRS_tags_4)
+               /sizeof(asn_DEF_additionalDMRS_tags_4[0]), /* 2 */
+       { &asn_OER_type_additionalDMRS_constr_4, &asn_PER_type_additionalDMRS_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_additionalDMRS_specs_4 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofSlots_value2enum_7[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" }
+};
+static const unsigned int asn_MAP_nrofSlots_enum2value_7[] = {
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofSlots_specs_7 = {
+       asn_MAP_nrofSlots_value2enum_7, /* "tag" => N; sorted by tag */
+       asn_MAP_nrofSlots_enum2value_7, /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofSlots_tags_7[] = {
+       (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_nrofSlots_7 = {
+       "nrofSlots",
+       "nrofSlots",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofSlots_tags_7,
+       sizeof(asn_DEF_nrofSlots_tags_7)
+               /sizeof(asn_DEF_nrofSlots_tags_7[0]) - 1, /* 1 */
+       asn_DEF_nrofSlots_tags_7,       /* Same as above */
+       sizeof(asn_DEF_nrofSlots_tags_7)
+               /sizeof(asn_DEF_nrofSlots_tags_7[0]), /* 2 */
+       { &asn_OER_type_nrofSlots_constr_7, &asn_PER_type_nrofSlots_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofSlots_specs_7      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pi2BPSK_value2enum_11[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_pi2BPSK_enum2value_11[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pi2BPSK_specs_11 = {
+       asn_MAP_pi2BPSK_value2enum_11,  /* "tag" => N; sorted by tag */
+       asn_MAP_pi2BPSK_enum2value_11,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pi2BPSK_tags_11[] = {
+       (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_pi2BPSK_11 = {
+       "pi2BPSK",
+       "pi2BPSK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pi2BPSK_tags_11,
+       sizeof(asn_DEF_pi2BPSK_tags_11)
+               /sizeof(asn_DEF_pi2BPSK_tags_11[0]) - 1, /* 1 */
+       asn_DEF_pi2BPSK_tags_11,        /* Same as above */
+       sizeof(asn_DEF_pi2BPSK_tags_11)
+               /sizeof(asn_DEF_pi2BPSK_tags_11[0]), /* 2 */
+       { &asn_OER_type_pi2BPSK_constr_11, &asn_PER_type_pi2BPSK_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pi2BPSK_specs_11       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_simultaneousHARQ_ACK_CSI_value2enum_13[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_simultaneousHARQ_ACK_CSI_enum2value_13[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_simultaneousHARQ_ACK_CSI_specs_13 = {
+       asn_MAP_simultaneousHARQ_ACK_CSI_value2enum_13, /* "tag" => N; sorted by tag */
+       asn_MAP_simultaneousHARQ_ACK_CSI_enum2value_13, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_simultaneousHARQ_ACK_CSI_tags_13[] = {
+       (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_simultaneousHARQ_ACK_CSI_13 = {
+       "simultaneousHARQ-ACK-CSI",
+       "simultaneousHARQ-ACK-CSI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_simultaneousHARQ_ACK_CSI_tags_13,
+       sizeof(asn_DEF_simultaneousHARQ_ACK_CSI_tags_13)
+               /sizeof(asn_DEF_simultaneousHARQ_ACK_CSI_tags_13[0]) - 1, /* 1 */
+       asn_DEF_simultaneousHARQ_ACK_CSI_tags_13,       /* Same as above */
+       sizeof(asn_DEF_simultaneousHARQ_ACK_CSI_tags_13)
+               /sizeof(asn_DEF_simultaneousHARQ_ACK_CSI_tags_13[0]), /* 2 */
+       { &asn_OER_type_simultaneousHARQ_ACK_CSI_constr_13, &asn_PER_type_simultaneousHARQ_ACK_CSI_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_simultaneousHARQ_ACK_CSI_specs_13      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_FormatConfig_1[] = {
+       { ATF_POINTER, 6, offsetof(struct PUCCH_FormatConfig, interslotFrequencyHopping),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_interslotFrequencyHopping_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interslotFrequencyHopping"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUCCH_FormatConfig, additionalDMRS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_additionalDMRS_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalDMRS"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUCCH_FormatConfig, maxCodeRate),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_MaxCodeRate,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxCodeRate"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUCCH_FormatConfig, nrofSlots),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofSlots_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofSlots"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUCCH_FormatConfig, pi2BPSK),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pi2BPSK_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pi2BPSK"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_FormatConfig, simultaneousHARQ_ACK_CSI),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_simultaneousHARQ_ACK_CSI_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "simultaneousHARQ-ACK-CSI"
+               },
+};
+static const int asn_MAP_PUCCH_FormatConfig_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_FormatConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_FormatConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interslotFrequencyHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* additionalDMRS */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxCodeRate */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrofSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pi2BPSK */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* simultaneousHARQ-ACK-CSI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_FormatConfig_specs_1 = {
+       sizeof(struct PUCCH_FormatConfig),
+       offsetof(struct PUCCH_FormatConfig, _asn_ctx),
+       asn_MAP_PUCCH_FormatConfig_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_PUCCH_FormatConfig_oms_1,       /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_FormatConfig = {
+       "PUCCH-FormatConfig",
+       "PUCCH-FormatConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_FormatConfig_tags_1,
+       sizeof(asn_DEF_PUCCH_FormatConfig_tags_1)
+               /sizeof(asn_DEF_PUCCH_FormatConfig_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_FormatConfig_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUCCH_FormatConfig_tags_1)
+               /sizeof(asn_DEF_PUCCH_FormatConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_FormatConfig_1,
+       6,      /* Elements count */
+       &asn_SPC_PUCCH_FormatConfig_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-FormatConfig.h b/src/codec_utils/RRC/PUCCH-FormatConfig.h
new file mode 100644 (file)
index 0000000..c55d9f4
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_FormatConfig_H_
+#define        _PUCCH_FormatConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "PUCCH-MaxCodeRate.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_FormatConfig__interslotFrequencyHopping {
+       PUCCH_FormatConfig__interslotFrequencyHopping_enabled   = 0
+} e_PUCCH_FormatConfig__interslotFrequencyHopping;
+typedef enum PUCCH_FormatConfig__additionalDMRS {
+       PUCCH_FormatConfig__additionalDMRS_true = 0
+} e_PUCCH_FormatConfig__additionalDMRS;
+typedef enum PUCCH_FormatConfig__nrofSlots {
+       PUCCH_FormatConfig__nrofSlots_n2        = 0,
+       PUCCH_FormatConfig__nrofSlots_n4        = 1,
+       PUCCH_FormatConfig__nrofSlots_n8        = 2
+} e_PUCCH_FormatConfig__nrofSlots;
+typedef enum PUCCH_FormatConfig__pi2BPSK {
+       PUCCH_FormatConfig__pi2BPSK_enabled     = 0
+} e_PUCCH_FormatConfig__pi2BPSK;
+typedef enum PUCCH_FormatConfig__simultaneousHARQ_ACK_CSI {
+       PUCCH_FormatConfig__simultaneousHARQ_ACK_CSI_true       = 0
+} e_PUCCH_FormatConfig__simultaneousHARQ_ACK_CSI;
+
+/* PUCCH-FormatConfig */
+typedef struct PUCCH_FormatConfig {
+       long    *interslotFrequencyHopping;     /* OPTIONAL */
+       long    *additionalDMRS;        /* OPTIONAL */
+       PUCCH_MaxCodeRate_t     *maxCodeRate;   /* OPTIONAL */
+       long    *nrofSlots;     /* OPTIONAL */
+       long    *pi2BPSK;       /* OPTIONAL */
+       long    *simultaneousHARQ_ACK_CSI;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_FormatConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_interslotFrequencyHopping_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_additionalDMRS_4;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofSlots_7;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pi2BPSK_11;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_simultaneousHARQ_ACK_CSI_13;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_FormatConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_FormatConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_FormatConfig_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_FormatConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-MaxCodeRate.c b/src/codec_utils/RRC/PUCCH-MaxCodeRate.c
new file mode 100644 (file)
index 0000000..f9c12d9
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-MaxCodeRate.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PUCCH_MaxCodeRate_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PUCCH_MaxCodeRate_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_PUCCH_MaxCodeRate_value2enum_1[] = {
+       { 0,    9,      "zeroDot08" },
+       { 1,    9,      "zeroDot15" },
+       { 2,    9,      "zeroDot25" },
+       { 3,    9,      "zeroDot35" },
+       { 4,    9,      "zeroDot45" },
+       { 5,    9,      "zeroDot60" },
+       { 6,    9,      "zeroDot80" }
+};
+static const unsigned int asn_MAP_PUCCH_MaxCodeRate_enum2value_1[] = {
+       0,      /* zeroDot08(0) */
+       1,      /* zeroDot15(1) */
+       2,      /* zeroDot25(2) */
+       3,      /* zeroDot35(3) */
+       4,      /* zeroDot45(4) */
+       5,      /* zeroDot60(5) */
+       6       /* zeroDot80(6) */
+};
+const asn_INTEGER_specifics_t asn_SPC_PUCCH_MaxCodeRate_specs_1 = {
+       asn_MAP_PUCCH_MaxCodeRate_value2enum_1, /* "tag" => N; sorted by tag */
+       asn_MAP_PUCCH_MaxCodeRate_enum2value_1, /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_MaxCodeRate_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_MaxCodeRate = {
+       "PUCCH-MaxCodeRate",
+       "PUCCH-MaxCodeRate",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_PUCCH_MaxCodeRate_tags_1,
+       sizeof(asn_DEF_PUCCH_MaxCodeRate_tags_1)
+               /sizeof(asn_DEF_PUCCH_MaxCodeRate_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_MaxCodeRate_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PUCCH_MaxCodeRate_tags_1)
+               /sizeof(asn_DEF_PUCCH_MaxCodeRate_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUCCH_MaxCodeRate_constr_1, &asn_PER_type_PUCCH_MaxCodeRate_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_PUCCH_MaxCodeRate_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-MaxCodeRate.h b/src/codec_utils/RRC/PUCCH-MaxCodeRate.h
new file mode 100644 (file)
index 0000000..307e4c7
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_MaxCodeRate_H_
+#define        _PUCCH_MaxCodeRate_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_MaxCodeRate {
+       PUCCH_MaxCodeRate_zeroDot08     = 0,
+       PUCCH_MaxCodeRate_zeroDot15     = 1,
+       PUCCH_MaxCodeRate_zeroDot25     = 2,
+       PUCCH_MaxCodeRate_zeroDot35     = 3,
+       PUCCH_MaxCodeRate_zeroDot45     = 4,
+       PUCCH_MaxCodeRate_zeroDot60     = 5,
+       PUCCH_MaxCodeRate_zeroDot80     = 6
+} e_PUCCH_MaxCodeRate;
+
+/* PUCCH-MaxCodeRate */
+typedef long    PUCCH_MaxCodeRate_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUCCH_MaxCodeRate_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_MaxCodeRate;
+extern const asn_INTEGER_specifics_t asn_SPC_PUCCH_MaxCodeRate_specs_1;
+asn_struct_free_f PUCCH_MaxCodeRate_free;
+asn_struct_print_f PUCCH_MaxCodeRate_print;
+asn_constr_check_f PUCCH_MaxCodeRate_constraint;
+ber_type_decoder_f PUCCH_MaxCodeRate_decode_ber;
+der_type_encoder_f PUCCH_MaxCodeRate_encode_der;
+xer_type_decoder_f PUCCH_MaxCodeRate_decode_xer;
+xer_type_encoder_f PUCCH_MaxCodeRate_encode_xer;
+oer_type_decoder_f PUCCH_MaxCodeRate_decode_oer;
+oer_type_encoder_f PUCCH_MaxCodeRate_encode_oer;
+per_type_decoder_f PUCCH_MaxCodeRate_decode_uper;
+per_type_encoder_f PUCCH_MaxCodeRate_encode_uper;
+per_type_decoder_f PUCCH_MaxCodeRate_decode_aper;
+per_type_encoder_f PUCCH_MaxCodeRate_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_MaxCodeRate_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.c b/src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.c
new file mode 100644 (file)
index 0000000..b63d805
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-PathlossReferenceRS-Id.h"
+
+int
+PUCCH_PathlossReferenceRS_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PUCCH_PathlossReferenceRS_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PUCCH_PathlossReferenceRS_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_PathlossReferenceRS_Id = {
+       "PUCCH-PathlossReferenceRS-Id",
+       "PUCCH-PathlossReferenceRS-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1,
+       sizeof(asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1)
+               /sizeof(asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1)
+               /sizeof(asn_DEF_PUCCH_PathlossReferenceRS_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUCCH_PathlossReferenceRS_Id_constr_1, &asn_PER_type_PUCCH_PathlossReferenceRS_Id_constr_1, PUCCH_PathlossReferenceRS_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.h b/src/codec_utils/RRC/PUCCH-PathlossReferenceRS-Id.h
new file mode 100644 (file)
index 0000000..e8055d5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_PathlossReferenceRS_Id_H_
+#define        _PUCCH_PathlossReferenceRS_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-PathlossReferenceRS-Id */
+typedef long    PUCCH_PathlossReferenceRS_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUCCH_PathlossReferenceRS_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_PathlossReferenceRS_Id;
+asn_struct_free_f PUCCH_PathlossReferenceRS_Id_free;
+asn_struct_print_f PUCCH_PathlossReferenceRS_Id_print;
+asn_constr_check_f PUCCH_PathlossReferenceRS_Id_constraint;
+ber_type_decoder_f PUCCH_PathlossReferenceRS_Id_decode_ber;
+der_type_encoder_f PUCCH_PathlossReferenceRS_Id_encode_der;
+xer_type_decoder_f PUCCH_PathlossReferenceRS_Id_decode_xer;
+xer_type_encoder_f PUCCH_PathlossReferenceRS_Id_encode_xer;
+oer_type_decoder_f PUCCH_PathlossReferenceRS_Id_decode_oer;
+oer_type_encoder_f PUCCH_PathlossReferenceRS_Id_encode_oer;
+per_type_decoder_f PUCCH_PathlossReferenceRS_Id_decode_uper;
+per_type_encoder_f PUCCH_PathlossReferenceRS_Id_encode_uper;
+per_type_decoder_f PUCCH_PathlossReferenceRS_Id_decode_aper;
+per_type_encoder_f PUCCH_PathlossReferenceRS_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_PathlossReferenceRS_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-PathlossReferenceRS.c b/src/codec_utils/RRC/PUCCH-PathlossReferenceRS.c
new file mode 100644 (file)
index 0000000..4b920b4
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-PathlossReferenceRS.h"
+
+static asn_oer_constraints_t asn_OER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_referenceSignal_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_PathlossReferenceRS__referenceSignal, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_PathlossReferenceRS__referenceSignal, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_referenceSignal_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Index */
+};
+static asn_CHOICE_specifics_t asn_SPC_referenceSignal_specs_3 = {
+       sizeof(struct PUCCH_PathlossReferenceRS__referenceSignal),
+       offsetof(struct PUCCH_PathlossReferenceRS__referenceSignal, _asn_ctx),
+       offsetof(struct PUCCH_PathlossReferenceRS__referenceSignal, present),
+       sizeof(((struct PUCCH_PathlossReferenceRS__referenceSignal *)0)->present),
+       asn_MAP_referenceSignal_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_referenceSignal_3 = {
+       "referenceSignal",
+       "referenceSignal",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_referenceSignal_constr_3, &asn_PER_type_referenceSignal_constr_3, CHOICE_constraint },
+       asn_MBR_referenceSignal_3,
+       2,      /* Elements count */
+       &asn_SPC_referenceSignal_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_PathlossReferenceRS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_PathlossReferenceRS, pucch_PathlossReferenceRS_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_PathlossReferenceRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-PathlossReferenceRS-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_PathlossReferenceRS, referenceSignal),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_referenceSignal_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignal"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_PathlossReferenceRS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_PathlossReferenceRS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-PathlossReferenceRS-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* referenceSignal */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_PathlossReferenceRS_specs_1 = {
+       sizeof(struct PUCCH_PathlossReferenceRS),
+       offsetof(struct PUCCH_PathlossReferenceRS, _asn_ctx),
+       asn_MAP_PUCCH_PathlossReferenceRS_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_PathlossReferenceRS = {
+       "PUCCH-PathlossReferenceRS",
+       "PUCCH-PathlossReferenceRS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_PathlossReferenceRS_tags_1,
+       sizeof(asn_DEF_PUCCH_PathlossReferenceRS_tags_1)
+               /sizeof(asn_DEF_PUCCH_PathlossReferenceRS_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_PathlossReferenceRS_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PUCCH_PathlossReferenceRS_tags_1)
+               /sizeof(asn_DEF_PUCCH_PathlossReferenceRS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_PathlossReferenceRS_1,
+       2,      /* Elements count */
+       &asn_SPC_PUCCH_PathlossReferenceRS_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-PathlossReferenceRS.h b/src/codec_utils/RRC/PUCCH-PathlossReferenceRS.h
new file mode 100644 (file)
index 0000000..2356175
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_PathlossReferenceRS_H_
+#define        _PUCCH_PathlossReferenceRS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PUCCH-PathlossReferenceRS-Id.h"
+#include "SSB-Index.h"
+#include "NZP-CSI-RS-ResourceId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_PathlossReferenceRS__referenceSignal_PR {
+       PUCCH_PathlossReferenceRS__referenceSignal_PR_NOTHING,  /* No components present */
+       PUCCH_PathlossReferenceRS__referenceSignal_PR_ssb_Index,
+       PUCCH_PathlossReferenceRS__referenceSignal_PR_csi_RS_Index
+} PUCCH_PathlossReferenceRS__referenceSignal_PR;
+
+/* PUCCH-PathlossReferenceRS */
+typedef struct PUCCH_PathlossReferenceRS {
+       PUCCH_PathlossReferenceRS_Id_t   pucch_PathlossReferenceRS_Id;
+       struct PUCCH_PathlossReferenceRS__referenceSignal {
+               PUCCH_PathlossReferenceRS__referenceSignal_PR present;
+               union PUCCH_PathlossReferenceRS__referenceSignal_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } referenceSignal;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_PathlossReferenceRS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_PathlossReferenceRS;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_PathlossReferenceRS_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_PathlossReferenceRS_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_PathlossReferenceRS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-PowerControl.c b/src/codec_utils/RRC/PUCCH-PowerControl.c
new file mode 100644 (file)
index 0000000..d2fc513
--- /dev/null
@@ -0,0 +1,494 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-PowerControl.h"
+
+#include "P0-PUCCH.h"
+#include "PUCCH-PathlossReferenceRS.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_deltaF_PUCCH_f0_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 >= -16 && 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_deltaF_PUCCH_f1_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 >= -16 && 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_deltaF_PUCCH_f2_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 >= -16 && 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_deltaF_PUCCH_f3_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 >= -16 && 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_deltaF_PUCCH_f4_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 >= -16 && 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_p0_Set_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 <= 8)) {
+               /* 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_pathlossReferenceRSs_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 <= 4)) {
+               /* 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_p0_Set_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_p0_Set_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pathlossReferenceRSs_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_pathlossReferenceRSs_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_twoPUCCH_PC_AdjustmentStates_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUCCH_PC_AdjustmentStates_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_deltaF_PUCCH_f0_constr_2 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_deltaF_PUCCH_f0_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_deltaF_PUCCH_f1_constr_3 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_deltaF_PUCCH_f1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_deltaF_PUCCH_f2_constr_4 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_deltaF_PUCCH_f2_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_deltaF_PUCCH_f3_constr_5 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_deltaF_PUCCH_f3_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_deltaF_PUCCH_f4_constr_6 CC_NOTUSED = {
+       { 1, 0 }        /* (-16..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_deltaF_PUCCH_f4_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -16,  15 }      /* (-16..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_Set_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_p0_Set_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pathlossReferenceRSs_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_pathlossReferenceRSs_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_p0_Set_7[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_P0_PUCCH,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_p0_Set_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_p0_Set_specs_7 = {
+       sizeof(struct PUCCH_PowerControl__p0_Set),
+       offsetof(struct PUCCH_PowerControl__p0_Set, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_p0_Set_7 = {
+       "p0-Set",
+       "p0-Set",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_p0_Set_tags_7,
+       sizeof(asn_DEF_p0_Set_tags_7)
+               /sizeof(asn_DEF_p0_Set_tags_7[0]) - 1, /* 1 */
+       asn_DEF_p0_Set_tags_7,  /* Same as above */
+       sizeof(asn_DEF_p0_Set_tags_7)
+               /sizeof(asn_DEF_p0_Set_tags_7[0]), /* 2 */
+       { &asn_OER_type_p0_Set_constr_7, &asn_PER_type_p0_Set_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_p0_Set_7,
+       1,      /* Single element */
+       &asn_SPC_p0_Set_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pathlossReferenceRSs_9[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUCCH_PathlossReferenceRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pathlossReferenceRSs_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pathlossReferenceRSs_specs_9 = {
+       sizeof(struct PUCCH_PowerControl__pathlossReferenceRSs),
+       offsetof(struct PUCCH_PowerControl__pathlossReferenceRSs, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pathlossReferenceRSs_9 = {
+       "pathlossReferenceRSs",
+       "pathlossReferenceRSs",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pathlossReferenceRSs_tags_9,
+       sizeof(asn_DEF_pathlossReferenceRSs_tags_9)
+               /sizeof(asn_DEF_pathlossReferenceRSs_tags_9[0]) - 1, /* 1 */
+       asn_DEF_pathlossReferenceRSs_tags_9,    /* Same as above */
+       sizeof(asn_DEF_pathlossReferenceRSs_tags_9)
+               /sizeof(asn_DEF_pathlossReferenceRSs_tags_9[0]), /* 2 */
+       { &asn_OER_type_pathlossReferenceRSs_constr_9, &asn_PER_type_pathlossReferenceRSs_constr_9, SEQUENCE_OF_constraint },
+       asn_MBR_pathlossReferenceRSs_9,
+       1,      /* Single element */
+       &asn_SPC_pathlossReferenceRSs_specs_9   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUCCH_PC_AdjustmentStates_value2enum_11[] = {
+       { 0,    9,      "twoStates" }
+};
+static const unsigned int asn_MAP_twoPUCCH_PC_AdjustmentStates_enum2value_11[] = {
+       0       /* twoStates(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUCCH_PC_AdjustmentStates_specs_11 = {
+       asn_MAP_twoPUCCH_PC_AdjustmentStates_value2enum_11,     /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUCCH_PC_AdjustmentStates_enum2value_11,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11[] = {
+       (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_twoPUCCH_PC_AdjustmentStates_11 = {
+       "twoPUCCH-PC-AdjustmentStates",
+       "twoPUCCH-PC-AdjustmentStates",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11,
+       sizeof(asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11)
+               /sizeof(asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11[0]) - 1, /* 1 */
+       asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11,   /* Same as above */
+       sizeof(asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11)
+               /sizeof(asn_DEF_twoPUCCH_PC_AdjustmentStates_tags_11[0]), /* 2 */
+       { &asn_OER_type_twoPUCCH_PC_AdjustmentStates_constr_11, &asn_PER_type_twoPUCCH_PC_AdjustmentStates_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUCCH_PC_AdjustmentStates_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_PowerControl_1[] = {
+       { ATF_POINTER, 8, offsetof(struct PUCCH_PowerControl, deltaF_PUCCH_f0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_deltaF_PUCCH_f0_constr_2, &asn_PER_memb_deltaF_PUCCH_f0_constr_2,  memb_deltaF_PUCCH_f0_constraint_1 },
+               0, 0, /* No default value */
+               "deltaF-PUCCH-f0"
+               },
+       { ATF_POINTER, 7, offsetof(struct PUCCH_PowerControl, deltaF_PUCCH_f1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_deltaF_PUCCH_f1_constr_3, &asn_PER_memb_deltaF_PUCCH_f1_constr_3,  memb_deltaF_PUCCH_f1_constraint_1 },
+               0, 0, /* No default value */
+               "deltaF-PUCCH-f1"
+               },
+       { ATF_POINTER, 6, offsetof(struct PUCCH_PowerControl, deltaF_PUCCH_f2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_deltaF_PUCCH_f2_constr_4, &asn_PER_memb_deltaF_PUCCH_f2_constr_4,  memb_deltaF_PUCCH_f2_constraint_1 },
+               0, 0, /* No default value */
+               "deltaF-PUCCH-f2"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUCCH_PowerControl, deltaF_PUCCH_f3),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_deltaF_PUCCH_f3_constr_5, &asn_PER_memb_deltaF_PUCCH_f3_constr_5,  memb_deltaF_PUCCH_f3_constraint_1 },
+               0, 0, /* No default value */
+               "deltaF-PUCCH-f3"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUCCH_PowerControl, deltaF_PUCCH_f4),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_deltaF_PUCCH_f4_constr_6, &asn_PER_memb_deltaF_PUCCH_f4_constr_6,  memb_deltaF_PUCCH_f4_constraint_1 },
+               0, 0, /* No default value */
+               "deltaF-PUCCH-f4"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUCCH_PowerControl, p0_Set),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_p0_Set_7,
+               0,
+               { &asn_OER_memb_p0_Set_constr_7, &asn_PER_memb_p0_Set_constr_7,  memb_p0_Set_constraint_1 },
+               0, 0, /* No default value */
+               "p0-Set"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUCCH_PowerControl, pathlossReferenceRSs),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_pathlossReferenceRSs_9,
+               0,
+               { &asn_OER_memb_pathlossReferenceRSs_constr_9, &asn_PER_memb_pathlossReferenceRSs_constr_9,  memb_pathlossReferenceRSs_constraint_1 },
+               0, 0, /* No default value */
+               "pathlossReferenceRSs"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_PowerControl, twoPUCCH_PC_AdjustmentStates),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUCCH_PC_AdjustmentStates_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUCCH-PC-AdjustmentStates"
+               },
+};
+static const int asn_MAP_PUCCH_PowerControl_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_PowerControl_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_PowerControl_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* deltaF-PUCCH-f0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* deltaF-PUCCH-f1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* deltaF-PUCCH-f2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* deltaF-PUCCH-f3 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* deltaF-PUCCH-f4 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* p0-Set */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* pathlossReferenceRSs */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* twoPUCCH-PC-AdjustmentStates */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_PowerControl_specs_1 = {
+       sizeof(struct PUCCH_PowerControl),
+       offsetof(struct PUCCH_PowerControl, _asn_ctx),
+       asn_MAP_PUCCH_PowerControl_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_PUCCH_PowerControl_oms_1,       /* Optional members */
+       8, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_PowerControl = {
+       "PUCCH-PowerControl",
+       "PUCCH-PowerControl",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_PowerControl_tags_1,
+       sizeof(asn_DEF_PUCCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_PUCCH_PowerControl_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_PowerControl_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUCCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_PUCCH_PowerControl_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_PowerControl_1,
+       8,      /* Elements count */
+       &asn_SPC_PUCCH_PowerControl_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-PowerControl.h b/src/codec_utils/RRC/PUCCH-PowerControl.h
new file mode 100644 (file)
index 0000000..4efbef3
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_PowerControl_H_
+#define        _PUCCH_PowerControl_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_PowerControl__twoPUCCH_PC_AdjustmentStates {
+       PUCCH_PowerControl__twoPUCCH_PC_AdjustmentStates_twoStates      = 0
+} e_PUCCH_PowerControl__twoPUCCH_PC_AdjustmentStates;
+
+/* Forward declarations */
+struct P0_PUCCH;
+struct PUCCH_PathlossReferenceRS;
+
+/* PUCCH-PowerControl */
+typedef struct PUCCH_PowerControl {
+       long    *deltaF_PUCCH_f0;       /* OPTIONAL */
+       long    *deltaF_PUCCH_f1;       /* OPTIONAL */
+       long    *deltaF_PUCCH_f2;       /* OPTIONAL */
+       long    *deltaF_PUCCH_f3;       /* OPTIONAL */
+       long    *deltaF_PUCCH_f4;       /* OPTIONAL */
+       struct PUCCH_PowerControl__p0_Set {
+               A_SEQUENCE_OF(struct P0_PUCCH) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *p0_Set;
+       struct PUCCH_PowerControl__pathlossReferenceRSs {
+               A_SEQUENCE_OF(struct PUCCH_PathlossReferenceRS) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pathlossReferenceRSs;
+       long    *twoPUCCH_PC_AdjustmentStates;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_PowerControl_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUCCH_PC_AdjustmentStates_11;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_PowerControl;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_PowerControl_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_PowerControl_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_PowerControl_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-Resource.c b/src/codec_utils/RRC/PUCCH-Resource.c
new file mode 100644 (file)
index 0000000..5796115
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-Resource.h"
+
+#include "PUCCH-format0.h"
+#include "PUCCH-format1.h"
+#include "PUCCH-format2.h"
+#include "PUCCH-format3.h"
+#include "PUCCH-format4.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_intraSlotFrequencyHopping_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_intraSlotFrequencyHopping_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_format_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_format_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_intraSlotFrequencyHopping_value2enum_4[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_intraSlotFrequencyHopping_enum2value_4[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_intraSlotFrequencyHopping_specs_4 = {
+       asn_MAP_intraSlotFrequencyHopping_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_intraSlotFrequencyHopping_enum2value_4, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_intraSlotFrequencyHopping_tags_4[] = {
+       (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_intraSlotFrequencyHopping_4 = {
+       "intraSlotFrequencyHopping",
+       "intraSlotFrequencyHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_intraSlotFrequencyHopping_tags_4,
+       sizeof(asn_DEF_intraSlotFrequencyHopping_tags_4)
+               /sizeof(asn_DEF_intraSlotFrequencyHopping_tags_4[0]) - 1, /* 1 */
+       asn_DEF_intraSlotFrequencyHopping_tags_4,       /* Same as above */
+       sizeof(asn_DEF_intraSlotFrequencyHopping_tags_4)
+               /sizeof(asn_DEF_intraSlotFrequencyHopping_tags_4[0]), /* 2 */
+       { &asn_OER_type_intraSlotFrequencyHopping_constr_4, &asn_PER_type_intraSlotFrequencyHopping_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_intraSlotFrequencyHopping_specs_4      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_format_7[] = {
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Resource__format, choice.format0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_format0,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format0"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Resource__format, choice.format1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_format1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format1"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Resource__format, choice.format2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_format2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format2"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Resource__format, choice.format3),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_format3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format3"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_Resource__format, choice.format4),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_format4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format4"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_format_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* format0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* format1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* format2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* format3 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* format4 */
+};
+static asn_CHOICE_specifics_t asn_SPC_format_specs_7 = {
+       sizeof(struct PUCCH_Resource__format),
+       offsetof(struct PUCCH_Resource__format, _asn_ctx),
+       offsetof(struct PUCCH_Resource__format, present),
+       sizeof(((struct PUCCH_Resource__format *)0)->present),
+       asn_MAP_format_tag2el_7,
+       5,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_format_7 = {
+       "format",
+       "format",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_format_constr_7, &asn_PER_type_format_constr_7, CHOICE_constraint },
+       asn_MBR_format_7,
+       5,      /* Elements count */
+       &asn_SPC_format_specs_7 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Resource, pucch_ResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-ResourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Resource, startingPRB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PRB_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "startingPRB"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUCCH_Resource, intraSlotFrequencyHopping),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_intraSlotFrequencyHopping_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraSlotFrequencyHopping"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_Resource, secondHopPRB),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PRB_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "secondHopPRB"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_Resource, format),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_format_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "format"
+               },
+};
+static const int asn_MAP_PUCCH_Resource_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-ResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* startingPRB */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* intraSlotFrequencyHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* secondHopPRB */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* format */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_Resource_specs_1 = {
+       sizeof(struct PUCCH_Resource),
+       offsetof(struct PUCCH_Resource, _asn_ctx),
+       asn_MAP_PUCCH_Resource_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_PUCCH_Resource_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_Resource = {
+       "PUCCH-Resource",
+       "PUCCH-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_Resource_tags_1,
+       sizeof(asn_DEF_PUCCH_Resource_tags_1)
+               /sizeof(asn_DEF_PUCCH_Resource_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_Resource_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PUCCH_Resource_tags_1)
+               /sizeof(asn_DEF_PUCCH_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_Resource_1,
+       5,      /* Elements count */
+       &asn_SPC_PUCCH_Resource_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-Resource.h b/src/codec_utils/RRC/PUCCH-Resource.h
new file mode 100644 (file)
index 0000000..a7dfb4a
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_Resource_H_
+#define        _PUCCH_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PUCCH-ResourceId.h"
+#include "PRB-Id.h"
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_Resource__intraSlotFrequencyHopping {
+       PUCCH_Resource__intraSlotFrequencyHopping_enabled       = 0
+} e_PUCCH_Resource__intraSlotFrequencyHopping;
+typedef enum PUCCH_Resource__format_PR {
+       PUCCH_Resource__format_PR_NOTHING,      /* No components present */
+       PUCCH_Resource__format_PR_format0,
+       PUCCH_Resource__format_PR_format1,
+       PUCCH_Resource__format_PR_format2,
+       PUCCH_Resource__format_PR_format3,
+       PUCCH_Resource__format_PR_format4
+} PUCCH_Resource__format_PR;
+
+/* Forward declarations */
+struct PUCCH_format0;
+struct PUCCH_format1;
+struct PUCCH_format2;
+struct PUCCH_format3;
+struct PUCCH_format4;
+
+/* PUCCH-Resource */
+typedef struct PUCCH_Resource {
+       PUCCH_ResourceId_t       pucch_ResourceId;
+       PRB_Id_t         startingPRB;
+       long    *intraSlotFrequencyHopping;     /* OPTIONAL */
+       PRB_Id_t        *secondHopPRB;  /* OPTIONAL */
+       struct PUCCH_Resource__format {
+               PUCCH_Resource__format_PR present;
+               union PUCCH_Resource__format_u {
+                       struct PUCCH_format0    *format0;
+                       struct PUCCH_format1    *format1;
+                       struct PUCCH_format2    *format2;
+                       struct PUCCH_format3    *format3;
+                       struct PUCCH_format4    *format4;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } format;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_Resource_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_intraSlotFrequencyHopping_4;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_Resource_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-ResourceId.c b/src/codec_utils/RRC/PUCCH-ResourceId.c
new file mode 100644 (file)
index 0000000..c337063
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-ResourceId.h"
+
+int
+PUCCH_ResourceId_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 <= 127)) {
+               /* 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_PUCCH_ResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PUCCH_ResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_ResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceId = {
+       "PUCCH-ResourceId",
+       "PUCCH-ResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_PUCCH_ResourceId_tags_1,
+       sizeof(asn_DEF_PUCCH_ResourceId_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceId_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_ResourceId_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PUCCH_ResourceId_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUCCH_ResourceId_constr_1, &asn_PER_type_PUCCH_ResourceId_constr_1, PUCCH_ResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-ResourceId.h b/src/codec_utils/RRC/PUCCH-ResourceId.h
new file mode 100644 (file)
index 0000000..7849f67
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_ResourceId_H_
+#define        _PUCCH_ResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-ResourceId */
+typedef long    PUCCH_ResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUCCH_ResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceId;
+asn_struct_free_f PUCCH_ResourceId_free;
+asn_struct_print_f PUCCH_ResourceId_print;
+asn_constr_check_f PUCCH_ResourceId_constraint;
+ber_type_decoder_f PUCCH_ResourceId_decode_ber;
+der_type_encoder_f PUCCH_ResourceId_encode_der;
+xer_type_decoder_f PUCCH_ResourceId_decode_xer;
+xer_type_encoder_f PUCCH_ResourceId_encode_xer;
+oer_type_decoder_f PUCCH_ResourceId_decode_oer;
+oer_type_encoder_f PUCCH_ResourceId_encode_oer;
+per_type_decoder_f PUCCH_ResourceId_decode_uper;
+per_type_encoder_f PUCCH_ResourceId_encode_uper;
+per_type_decoder_f PUCCH_ResourceId_decode_aper;
+per_type_encoder_f PUCCH_ResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_ResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-ResourceSet.c b/src/codec_utils/RRC/PUCCH-ResourceSet.c
new file mode 100644 (file)
index 0000000..f244f81
--- /dev/null
@@ -0,0 +1,184 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-ResourceSet.h"
+
+static int
+memb_resourceList_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 <= 32)) {
+               /* 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_maxPayloadMinus1_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 >= 4 && value <= 256)) {
+               /* 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_resourceList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_resourceList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_resourceList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxPayloadMinus1_constr_5 CC_NOTUSED = {
+       { 2, 1 }        /* (4..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxPayloadMinus1_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  4,  256 }      /* (4..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_resourceList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_resourceList_specs_3 = {
+       sizeof(struct PUCCH_ResourceSet__resourceList),
+       offsetof(struct PUCCH_ResourceSet__resourceList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceList_3 = {
+       "resourceList",
+       "resourceList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_resourceList_tags_3,
+       sizeof(asn_DEF_resourceList_tags_3)
+               /sizeof(asn_DEF_resourceList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_resourceList_tags_3,    /* Same as above */
+       sizeof(asn_DEF_resourceList_tags_3)
+               /sizeof(asn_DEF_resourceList_tags_3[0]), /* 2 */
+       { &asn_OER_type_resourceList_constr_3, &asn_PER_type_resourceList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_resourceList_3,
+       1,      /* Single element */
+       &asn_SPC_resourceList_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_ResourceSet, pucch_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-ResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_ResourceSet, resourceList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_resourceList_3,
+               0,
+               { &asn_OER_memb_resourceList_constr_3, &asn_PER_memb_resourceList_constr_3,  memb_resourceList_constraint_1 },
+               0, 0, /* No default value */
+               "resourceList"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_ResourceSet, maxPayloadMinus1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxPayloadMinus1_constr_5, &asn_PER_memb_maxPayloadMinus1_constr_5,  memb_maxPayloadMinus1_constraint_1 },
+               0, 0, /* No default value */
+               "maxPayloadMinus1"
+               },
+};
+static const int asn_MAP_PUCCH_ResourceSet_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resourceList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* maxPayloadMinus1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ResourceSet_specs_1 = {
+       sizeof(struct PUCCH_ResourceSet),
+       offsetof(struct PUCCH_ResourceSet, _asn_ctx),
+       asn_MAP_PUCCH_ResourceSet_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_PUCCH_ResourceSet_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceSet = {
+       "PUCCH-ResourceSet",
+       "PUCCH-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_ResourceSet_tags_1,
+       sizeof(asn_DEF_PUCCH_ResourceSet_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_ResourceSet_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PUCCH_ResourceSet_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_ResourceSet_1,
+       3,      /* Elements count */
+       &asn_SPC_PUCCH_ResourceSet_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-ResourceSet.h b/src/codec_utils/RRC/PUCCH-ResourceSet.h
new file mode 100644 (file)
index 0000000..87fadd2
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_ResourceSet_H_
+#define        _PUCCH_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PUCCH-ResourceSetId.h"
+#include <NativeInteger.h>
+#include "PUCCH-ResourceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-ResourceSet */
+typedef struct PUCCH_ResourceSet {
+       PUCCH_ResourceSetId_t    pucch_ResourceSetId;
+       struct PUCCH_ResourceSet__resourceList {
+               A_SEQUENCE_OF(PUCCH_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resourceList;
+       long    *maxPayloadMinus1;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_ResourceSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_ResourceSet_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-ResourceSetId.c b/src/codec_utils/RRC/PUCCH-ResourceSetId.c
new file mode 100644 (file)
index 0000000..b18f7be
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-ResourceSetId.h"
+
+int
+PUCCH_ResourceSetId_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PUCCH_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PUCCH_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceSetId = {
+       "PUCCH-ResourceSetId",
+       "PUCCH-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_PUCCH_ResourceSetId_tags_1,
+       sizeof(asn_DEF_PUCCH_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_ResourceSetId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PUCCH_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_PUCCH_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUCCH_ResourceSetId_constr_1, &asn_PER_type_PUCCH_ResourceSetId_constr_1, PUCCH_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-ResourceSetId.h b/src/codec_utils/RRC/PUCCH-ResourceSetId.h
new file mode 100644 (file)
index 0000000..7aedb9b
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_ResourceSetId_H_
+#define        _PUCCH_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-ResourceSetId */
+typedef long    PUCCH_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUCCH_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_ResourceSetId;
+asn_struct_free_f PUCCH_ResourceSetId_free;
+asn_struct_print_f PUCCH_ResourceSetId_print;
+asn_constr_check_f PUCCH_ResourceSetId_constraint;
+ber_type_decoder_f PUCCH_ResourceSetId_decode_ber;
+der_type_encoder_f PUCCH_ResourceSetId_encode_der;
+xer_type_decoder_f PUCCH_ResourceSetId_decode_xer;
+xer_type_encoder_f PUCCH_ResourceSetId_encode_xer;
+oer_type_decoder_f PUCCH_ResourceSetId_decode_oer;
+oer_type_encoder_f PUCCH_ResourceSetId_encode_oer;
+per_type_decoder_f PUCCH_ResourceSetId_decode_uper;
+per_type_encoder_f PUCCH_ResourceSetId_encode_uper;
+per_type_decoder_f PUCCH_ResourceSetId_decode_aper;
+per_type_encoder_f PUCCH_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-SpatialRelationInfo.c b/src/codec_utils/RRC/PUCCH-SpatialRelationInfo.c
new file mode 100644 (file)
index 0000000..79cb91c
--- /dev/null
@@ -0,0 +1,271 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-SpatialRelationInfo.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_referenceSignal_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_referenceSignal_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_closedLoopIndex_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_closedLoopIndex_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal__srs, resource),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resource"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal__srs, uplinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkBWP"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_srs_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resource */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkBWP */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_srs_specs_7 = {
+       sizeof(struct PUCCH_SpatialRelationInfo__referenceSignal__srs),
+       offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal__srs, _asn_ctx),
+       asn_MAP_srs_tag2el_7,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_7 = {
+       "srs",
+       "srs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_srs_tags_7,
+       sizeof(asn_DEF_srs_tags_7)
+               /sizeof(asn_DEF_srs_tags_7[0]) - 1, /* 1 */
+       asn_DEF_srs_tags_7,     /* Same as above */
+       sizeof(asn_DEF_srs_tags_7)
+               /sizeof(asn_DEF_srs_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_srs_7,
+       2,      /* Elements count */
+       &asn_SPC_srs_specs_7    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_referenceSignal_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal, choice.srs),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_srs_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_referenceSignal_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RS-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* srs */
+};
+static asn_CHOICE_specifics_t asn_SPC_referenceSignal_specs_4 = {
+       sizeof(struct PUCCH_SpatialRelationInfo__referenceSignal),
+       offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal, _asn_ctx),
+       offsetof(struct PUCCH_SpatialRelationInfo__referenceSignal, present),
+       sizeof(((struct PUCCH_SpatialRelationInfo__referenceSignal *)0)->present),
+       asn_MAP_referenceSignal_tag2el_4,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_referenceSignal_4 = {
+       "referenceSignal",
+       "referenceSignal",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_referenceSignal_constr_4, &asn_PER_type_referenceSignal_constr_4, CHOICE_constraint },
+       asn_MBR_referenceSignal_4,
+       3,      /* Elements count */
+       &asn_SPC_referenceSignal_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_closedLoopIndex_value2enum_12[] = {
+       { 0,    2,      "i0" },
+       { 1,    2,      "i1" }
+};
+static const unsigned int asn_MAP_closedLoopIndex_enum2value_12[] = {
+       0,      /* i0(0) */
+       1       /* i1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_closedLoopIndex_specs_12 = {
+       asn_MAP_closedLoopIndex_value2enum_12,  /* "tag" => N; sorted by tag */
+       asn_MAP_closedLoopIndex_enum2value_12,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_closedLoopIndex_tags_12[] = {
+       (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_closedLoopIndex_12 = {
+       "closedLoopIndex",
+       "closedLoopIndex",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_closedLoopIndex_tags_12,
+       sizeof(asn_DEF_closedLoopIndex_tags_12)
+               /sizeof(asn_DEF_closedLoopIndex_tags_12[0]) - 1, /* 1 */
+       asn_DEF_closedLoopIndex_tags_12,        /* Same as above */
+       sizeof(asn_DEF_closedLoopIndex_tags_12)
+               /sizeof(asn_DEF_closedLoopIndex_tags_12[0]), /* 2 */
+       { &asn_OER_type_closedLoopIndex_constr_12, &asn_PER_type_closedLoopIndex_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_closedLoopIndex_specs_12       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_SpatialRelationInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo, pucch_SpatialRelationInfoId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_SpatialRelationInfoId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-SpatialRelationInfoId"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_SpatialRelationInfo, servingCellId),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo, referenceSignal),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_referenceSignal_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignal"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo, pucch_PathlossReferenceRS_Id),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_PathlossReferenceRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-PathlossReferenceRS-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo, p0_PUCCH_Id),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUCCH_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p0-PUCCH-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_SpatialRelationInfo, closedLoopIndex),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_closedLoopIndex_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "closedLoopIndex"
+               },
+};
+static const int asn_MAP_PUCCH_SpatialRelationInfo_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_SpatialRelationInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_SpatialRelationInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-SpatialRelationInfoId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servingCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* referenceSignal */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pucch-PathlossReferenceRS-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* p0-PUCCH-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* closedLoopIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_SpatialRelationInfo_specs_1 = {
+       sizeof(struct PUCCH_SpatialRelationInfo),
+       offsetof(struct PUCCH_SpatialRelationInfo, _asn_ctx),
+       asn_MAP_PUCCH_SpatialRelationInfo_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_PUCCH_SpatialRelationInfo_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_SpatialRelationInfo = {
+       "PUCCH-SpatialRelationInfo",
+       "PUCCH-SpatialRelationInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_SpatialRelationInfo_tags_1,
+       sizeof(asn_DEF_PUCCH_SpatialRelationInfo_tags_1)
+               /sizeof(asn_DEF_PUCCH_SpatialRelationInfo_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_SpatialRelationInfo_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PUCCH_SpatialRelationInfo_tags_1)
+               /sizeof(asn_DEF_PUCCH_SpatialRelationInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_SpatialRelationInfo_1,
+       6,      /* Elements count */
+       &asn_SPC_PUCCH_SpatialRelationInfo_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-SpatialRelationInfo.h b/src/codec_utils/RRC/PUCCH-SpatialRelationInfo.h
new file mode 100644 (file)
index 0000000..588169a
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_SpatialRelationInfo_H_
+#define        _PUCCH_SpatialRelationInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PUCCH-SpatialRelationInfoId.h"
+#include "ServCellIndex.h"
+#include "PUCCH-PathlossReferenceRS-Id.h"
+#include "P0-PUCCH-Id.h"
+#include <NativeEnumerated.h>
+#include "SSB-Index.h"
+#include "NZP-CSI-RS-ResourceId.h"
+#include "SRS-ResourceId.h"
+#include "BWP-Id.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_SpatialRelationInfo__referenceSignal_PR {
+       PUCCH_SpatialRelationInfo__referenceSignal_PR_NOTHING,  /* No components present */
+       PUCCH_SpatialRelationInfo__referenceSignal_PR_ssb_Index,
+       PUCCH_SpatialRelationInfo__referenceSignal_PR_csi_RS_Index,
+       PUCCH_SpatialRelationInfo__referenceSignal_PR_srs
+} PUCCH_SpatialRelationInfo__referenceSignal_PR;
+typedef enum PUCCH_SpatialRelationInfo__closedLoopIndex {
+       PUCCH_SpatialRelationInfo__closedLoopIndex_i0   = 0,
+       PUCCH_SpatialRelationInfo__closedLoopIndex_i1   = 1
+} e_PUCCH_SpatialRelationInfo__closedLoopIndex;
+
+/* PUCCH-SpatialRelationInfo */
+typedef struct PUCCH_SpatialRelationInfo {
+       PUCCH_SpatialRelationInfoId_t    pucch_SpatialRelationInfoId;
+       ServCellIndex_t *servingCellId; /* OPTIONAL */
+       struct PUCCH_SpatialRelationInfo__referenceSignal {
+               PUCCH_SpatialRelationInfo__referenceSignal_PR present;
+               union PUCCH_SpatialRelationInfo__referenceSignal_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+                       struct PUCCH_SpatialRelationInfo__referenceSignal__srs {
+                               SRS_ResourceId_t         resource;
+                               BWP_Id_t         uplinkBWP;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *srs;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } referenceSignal;
+       PUCCH_PathlossReferenceRS_Id_t   pucch_PathlossReferenceRS_Id;
+       P0_PUCCH_Id_t    p0_PUCCH_Id;
+       long     closedLoopIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_SpatialRelationInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_closedLoopIndex_12;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_SpatialRelationInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_SpatialRelationInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_SpatialRelationInfo_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_SpatialRelationInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.c b/src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.c
new file mode 100644 (file)
index 0000000..6468d42
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-SpatialRelationInfoId.h"
+
+int
+PUCCH_SpatialRelationInfoId_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PUCCH_SpatialRelationInfoId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PUCCH_SpatialRelationInfoId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_SpatialRelationInfoId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_SpatialRelationInfoId = {
+       "PUCCH-SpatialRelationInfoId",
+       "PUCCH-SpatialRelationInfoId",
+       &asn_OP_NativeInteger,
+       asn_DEF_PUCCH_SpatialRelationInfoId_tags_1,
+       sizeof(asn_DEF_PUCCH_SpatialRelationInfoId_tags_1)
+               /sizeof(asn_DEF_PUCCH_SpatialRelationInfoId_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_SpatialRelationInfoId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PUCCH_SpatialRelationInfoId_tags_1)
+               /sizeof(asn_DEF_PUCCH_SpatialRelationInfoId_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUCCH_SpatialRelationInfoId_constr_1, &asn_PER_type_PUCCH_SpatialRelationInfoId_constr_1, PUCCH_SpatialRelationInfoId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.h b/src/codec_utils/RRC/PUCCH-SpatialRelationInfoId.h
new file mode 100644 (file)
index 0000000..19dcf7d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_SpatialRelationInfoId_H_
+#define        _PUCCH_SpatialRelationInfoId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-SpatialRelationInfoId */
+typedef long    PUCCH_SpatialRelationInfoId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUCCH_SpatialRelationInfoId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_SpatialRelationInfoId;
+asn_struct_free_f PUCCH_SpatialRelationInfoId_free;
+asn_struct_print_f PUCCH_SpatialRelationInfoId_print;
+asn_constr_check_f PUCCH_SpatialRelationInfoId_constraint;
+ber_type_decoder_f PUCCH_SpatialRelationInfoId_decode_ber;
+der_type_encoder_f PUCCH_SpatialRelationInfoId_encode_der;
+xer_type_decoder_f PUCCH_SpatialRelationInfoId_decode_xer;
+xer_type_encoder_f PUCCH_SpatialRelationInfoId_encode_xer;
+oer_type_decoder_f PUCCH_SpatialRelationInfoId_decode_oer;
+oer_type_encoder_f PUCCH_SpatialRelationInfoId_encode_oer;
+per_type_decoder_f PUCCH_SpatialRelationInfoId_decode_uper;
+per_type_encoder_f PUCCH_SpatialRelationInfoId_encode_uper;
+per_type_decoder_f PUCCH_SpatialRelationInfoId_decode_aper;
+per_type_encoder_f PUCCH_SpatialRelationInfoId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_SpatialRelationInfoId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-TPC-CommandConfig.c b/src/codec_utils/RRC/PUCCH-TPC-CommandConfig.c
new file mode 100644 (file)
index 0000000..698d21f
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-TPC-CommandConfig.h"
+
+static int
+memb_tpc_IndexPCell_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_tpc_IndexPUCCH_SCell_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 asn_oer_constraints_t asn_OER_memb_tpc_IndexPCell_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_tpc_IndexPCell_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_IndexPUCCH_SCell_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_tpc_IndexPUCCH_SCell_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  15 }       /* (1..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUCCH_TPC_CommandConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct PUCCH_TPC_CommandConfig, tpc_IndexPCell),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_tpc_IndexPCell_constr_2, &asn_PER_memb_tpc_IndexPCell_constr_2,  memb_tpc_IndexPCell_constraint_1 },
+               0, 0, /* No default value */
+               "tpc-IndexPCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUCCH_TPC_CommandConfig, tpc_IndexPUCCH_SCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_tpc_IndexPUCCH_SCell_constr_3, &asn_PER_memb_tpc_IndexPUCCH_SCell_constr_3,  memb_tpc_IndexPUCCH_SCell_constraint_1 },
+               0, 0, /* No default value */
+               "tpc-IndexPUCCH-SCell"
+               },
+};
+static const int asn_MAP_PUCCH_TPC_CommandConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_PUCCH_TPC_CommandConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_TPC_CommandConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tpc-IndexPCell */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tpc-IndexPUCCH-SCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_TPC_CommandConfig_specs_1 = {
+       sizeof(struct PUCCH_TPC_CommandConfig),
+       offsetof(struct PUCCH_TPC_CommandConfig, _asn_ctx),
+       asn_MAP_PUCCH_TPC_CommandConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PUCCH_TPC_CommandConfig_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_TPC_CommandConfig = {
+       "PUCCH-TPC-CommandConfig",
+       "PUCCH-TPC-CommandConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_TPC_CommandConfig_tags_1,
+       sizeof(asn_DEF_PUCCH_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_PUCCH_TPC_CommandConfig_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_TPC_CommandConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PUCCH_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_PUCCH_TPC_CommandConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_TPC_CommandConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_PUCCH_TPC_CommandConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-TPC-CommandConfig.h b/src/codec_utils/RRC/PUCCH-TPC-CommandConfig.h
new file mode 100644 (file)
index 0000000..91966f0
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_TPC_CommandConfig_H_
+#define        _PUCCH_TPC_CommandConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-TPC-CommandConfig */
+typedef struct PUCCH_TPC_CommandConfig {
+       long    *tpc_IndexPCell;        /* OPTIONAL */
+       long    *tpc_IndexPUCCH_SCell;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_TPC_CommandConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_TPC_CommandConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_TPC_CommandConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_TPC_CommandConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_TPC_CommandConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-format0.c b/src/codec_utils/RRC/PUCCH-format0.c
new file mode 100644 (file)
index 0000000..a2c7bf3
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-format0.h"
+
+static int
+memb_initialCyclicShift_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 >= 0 && value <= 11)) {
+               /* 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_nrofSymbols_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 int
+memb_startingSymbolIndex_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 >= 0 && value <= 13)) {
+               /* 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_initialCyclicShift_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..11) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_initialCyclicShift_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (1..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUCCH_format0_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format0, initialCyclicShift),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_initialCyclicShift_constr_2, &asn_PER_memb_initialCyclicShift_constr_2,  memb_initialCyclicShift_constraint_1 },
+               0, 0, /* No default value */
+               "initialCyclicShift"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format0, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSymbols_constr_3, &asn_PER_memb_nrofSymbols_constr_3,  memb_nrofSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format0, startingSymbolIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingSymbolIndex_constr_4, &asn_PER_memb_startingSymbolIndex_constr_4,  memb_startingSymbolIndex_constraint_1 },
+               0, 0, /* No default value */
+               "startingSymbolIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_format0_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_format0_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initialCyclicShift */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startingSymbolIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format0_specs_1 = {
+       sizeof(struct PUCCH_format0),
+       offsetof(struct PUCCH_format0, _asn_ctx),
+       asn_MAP_PUCCH_format0_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_format0 = {
+       "PUCCH-format0",
+       "PUCCH-format0",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_format0_tags_1,
+       sizeof(asn_DEF_PUCCH_format0_tags_1)
+               /sizeof(asn_DEF_PUCCH_format0_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_format0_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PUCCH_format0_tags_1)
+               /sizeof(asn_DEF_PUCCH_format0_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_format0_1,
+       3,      /* Elements count */
+       &asn_SPC_PUCCH_format0_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-format0.h b/src/codec_utils/RRC/PUCCH-format0.h
new file mode 100644 (file)
index 0000000..e70d9fa
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_format0_H_
+#define        _PUCCH_format0_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-format0 */
+typedef struct PUCCH_format0 {
+       long     initialCyclicShift;
+       long     nrofSymbols;
+       long     startingSymbolIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_format0_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_format0;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format0_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_format0_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_format0_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-format1.c b/src/codec_utils/RRC/PUCCH-format1.c
new file mode 100644 (file)
index 0000000..8f77a97
--- /dev/null
@@ -0,0 +1,212 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-format1.h"
+
+static int
+memb_initialCyclicShift_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 >= 0 && value <= 11)) {
+               /* 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_nrofSymbols_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 >= 4 && value <= 14)) {
+               /* 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_startingSymbolIndex_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 >= 0 && value <= 10)) {
+               /* 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_timeDomainOCC_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 >= 0 && value <= 6)) {
+               /* 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_initialCyclicShift_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..11) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_initialCyclicShift_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (4..14) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  4,  14 }       /* (4..14) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..10) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_timeDomainOCC_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeDomainOCC_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUCCH_format1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format1, initialCyclicShift),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_initialCyclicShift_constr_2, &asn_PER_memb_initialCyclicShift_constr_2,  memb_initialCyclicShift_constraint_1 },
+               0, 0, /* No default value */
+               "initialCyclicShift"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format1, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSymbols_constr_3, &asn_PER_memb_nrofSymbols_constr_3,  memb_nrofSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format1, startingSymbolIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingSymbolIndex_constr_4, &asn_PER_memb_startingSymbolIndex_constr_4,  memb_startingSymbolIndex_constraint_1 },
+               0, 0, /* No default value */
+               "startingSymbolIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format1, timeDomainOCC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_timeDomainOCC_constr_5, &asn_PER_memb_timeDomainOCC_constr_5,  memb_timeDomainOCC_constraint_1 },
+               0, 0, /* No default value */
+               "timeDomainOCC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_format1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_format1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initialCyclicShift */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* startingSymbolIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* timeDomainOCC */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format1_specs_1 = {
+       sizeof(struct PUCCH_format1),
+       offsetof(struct PUCCH_format1, _asn_ctx),
+       asn_MAP_PUCCH_format1_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_format1 = {
+       "PUCCH-format1",
+       "PUCCH-format1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_format1_tags_1,
+       sizeof(asn_DEF_PUCCH_format1_tags_1)
+               /sizeof(asn_DEF_PUCCH_format1_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_format1_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PUCCH_format1_tags_1)
+               /sizeof(asn_DEF_PUCCH_format1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_format1_1,
+       4,      /* Elements count */
+       &asn_SPC_PUCCH_format1_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-format1.h b/src/codec_utils/RRC/PUCCH-format1.h
new file mode 100644 (file)
index 0000000..ff7db03
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_format1_H_
+#define        _PUCCH_format1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-format1 */
+typedef struct PUCCH_format1 {
+       long     initialCyclicShift;
+       long     nrofSymbols;
+       long     startingSymbolIndex;
+       long     timeDomainOCC;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_format1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_format1;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format1_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_format1_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_format1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-format2.c b/src/codec_utils/RRC/PUCCH-format2.c
new file mode 100644 (file)
index 0000000..a8d7765
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-format2.h"
+
+static int
+memb_nrofPRBs_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 <= 16)) {
+               /* 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_nrofSymbols_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 int
+memb_startingSymbolIndex_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 >= 0 && value <= 13)) {
+               /* 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_nrofPRBs_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofPRBs_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..2) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (1..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUCCH_format2_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format2, nrofPRBs),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofPRBs_constr_2, &asn_PER_memb_nrofPRBs_constr_2,  memb_nrofPRBs_constraint_1 },
+               0, 0, /* No default value */
+               "nrofPRBs"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format2, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSymbols_constr_3, &asn_PER_memb_nrofSymbols_constr_3,  memb_nrofSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format2, startingSymbolIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingSymbolIndex_constr_4, &asn_PER_memb_startingSymbolIndex_constr_4,  memb_startingSymbolIndex_constraint_1 },
+               0, 0, /* No default value */
+               "startingSymbolIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_format2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_format2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofPRBs */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startingSymbolIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format2_specs_1 = {
+       sizeof(struct PUCCH_format2),
+       offsetof(struct PUCCH_format2, _asn_ctx),
+       asn_MAP_PUCCH_format2_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_format2 = {
+       "PUCCH-format2",
+       "PUCCH-format2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_format2_tags_1,
+       sizeof(asn_DEF_PUCCH_format2_tags_1)
+               /sizeof(asn_DEF_PUCCH_format2_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_format2_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PUCCH_format2_tags_1)
+               /sizeof(asn_DEF_PUCCH_format2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_format2_1,
+       3,      /* Elements count */
+       &asn_SPC_PUCCH_format2_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-format2.h b/src/codec_utils/RRC/PUCCH-format2.h
new file mode 100644 (file)
index 0000000..de2b021
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_format2_H_
+#define        _PUCCH_format2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-format2 */
+typedef struct PUCCH_format2 {
+       long     nrofPRBs;
+       long     nrofSymbols;
+       long     startingSymbolIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_format2_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_format2;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format2_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_format2_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_format2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-format3.c b/src/codec_utils/RRC/PUCCH-format3.c
new file mode 100644 (file)
index 0000000..4f79096
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-format3.h"
+
+static int
+memb_nrofPRBs_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 <= 16)) {
+               /* 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_nrofSymbols_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 >= 4 && value <= 14)) {
+               /* 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_startingSymbolIndex_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 >= 0 && value <= 10)) {
+               /* 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_nrofPRBs_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofPRBs_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (4..14) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSymbols_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  4,  14 }       /* (4..14) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..10) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingSymbolIndex_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUCCH_format3_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format3, nrofPRBs),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofPRBs_constr_2, &asn_PER_memb_nrofPRBs_constr_2,  memb_nrofPRBs_constraint_1 },
+               0, 0, /* No default value */
+               "nrofPRBs"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format3, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSymbols_constr_3, &asn_PER_memb_nrofSymbols_constr_3,  memb_nrofSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format3, startingSymbolIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingSymbolIndex_constr_4, &asn_PER_memb_startingSymbolIndex_constr_4,  memb_startingSymbolIndex_constraint_1 },
+               0, 0, /* No default value */
+               "startingSymbolIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_format3_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_format3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofPRBs */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startingSymbolIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format3_specs_1 = {
+       sizeof(struct PUCCH_format3),
+       offsetof(struct PUCCH_format3, _asn_ctx),
+       asn_MAP_PUCCH_format3_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_format3 = {
+       "PUCCH-format3",
+       "PUCCH-format3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_format3_tags_1,
+       sizeof(asn_DEF_PUCCH_format3_tags_1)
+               /sizeof(asn_DEF_PUCCH_format3_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_format3_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PUCCH_format3_tags_1)
+               /sizeof(asn_DEF_PUCCH_format3_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_format3_1,
+       3,      /* Elements count */
+       &asn_SPC_PUCCH_format3_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-format3.h b/src/codec_utils/RRC/PUCCH-format3.h
new file mode 100644 (file)
index 0000000..eb9e03a
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_format3_H_
+#define        _PUCCH_format3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUCCH-format3 */
+typedef struct PUCCH_format3 {
+       long     nrofPRBs;
+       long     nrofSymbols;
+       long     startingSymbolIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_format3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_format3;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format3_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_format3_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_format3_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUCCH-format4.c b/src/codec_utils/RRC/PUCCH-format4.c
new file mode 100644 (file)
index 0000000..f55b265
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUCCH-format4.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.
+ */
+static int
+memb_nrofSymbols_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 >= 4 && value <= 14)) {
+               /* 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_startingSymbolIndex_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 >= 0 && value <= 10)) {
+               /* 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_occ_Length_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_occ_Length_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_occ_Index_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_occ_Index_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSymbols_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (4..14) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSymbols_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  4,  14 }       /* (4..14) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingSymbolIndex_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..10) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingSymbolIndex_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_occ_Length_value2enum_3[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" }
+};
+static const unsigned int asn_MAP_occ_Length_enum2value_3[] = {
+       0,      /* n2(0) */
+       1       /* n4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_occ_Length_specs_3 = {
+       asn_MAP_occ_Length_value2enum_3,        /* "tag" => N; sorted by tag */
+       asn_MAP_occ_Length_enum2value_3,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_occ_Length_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_occ_Length_3 = {
+       "occ-Length",
+       "occ-Length",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_occ_Length_tags_3,
+       sizeof(asn_DEF_occ_Length_tags_3)
+               /sizeof(asn_DEF_occ_Length_tags_3[0]) - 1, /* 1 */
+       asn_DEF_occ_Length_tags_3,      /* Same as above */
+       sizeof(asn_DEF_occ_Length_tags_3)
+               /sizeof(asn_DEF_occ_Length_tags_3[0]), /* 2 */
+       { &asn_OER_type_occ_Length_constr_3, &asn_PER_type_occ_Length_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_occ_Length_specs_3     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_occ_Index_value2enum_6[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" }
+};
+static const unsigned int asn_MAP_occ_Index_enum2value_6[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3       /* n3(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_occ_Index_specs_6 = {
+       asn_MAP_occ_Index_value2enum_6, /* "tag" => N; sorted by tag */
+       asn_MAP_occ_Index_enum2value_6, /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_occ_Index_tags_6[] = {
+       (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_occ_Index_6 = {
+       "occ-Index",
+       "occ-Index",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_occ_Index_tags_6,
+       sizeof(asn_DEF_occ_Index_tags_6)
+               /sizeof(asn_DEF_occ_Index_tags_6[0]) - 1, /* 1 */
+       asn_DEF_occ_Index_tags_6,       /* Same as above */
+       sizeof(asn_DEF_occ_Index_tags_6)
+               /sizeof(asn_DEF_occ_Index_tags_6[0]), /* 2 */
+       { &asn_OER_type_occ_Index_constr_6, &asn_PER_type_occ_Index_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_occ_Index_specs_6      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUCCH_format4_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format4, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSymbols_constr_2, &asn_PER_memb_nrofSymbols_constr_2,  memb_nrofSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format4, occ_Length),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_occ_Length_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "occ-Length"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format4, occ_Index),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_occ_Index_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "occ-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_format4, startingSymbolIndex),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingSymbolIndex_constr_11, &asn_PER_memb_startingSymbolIndex_constr_11,  memb_startingSymbolIndex_constraint_1 },
+               0, 0, /* No default value */
+               "startingSymbolIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUCCH_format4_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUCCH_format4_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* occ-Length */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* occ-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* startingSymbolIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format4_specs_1 = {
+       sizeof(struct PUCCH_format4),
+       offsetof(struct PUCCH_format4, _asn_ctx),
+       asn_MAP_PUCCH_format4_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUCCH_format4 = {
+       "PUCCH-format4",
+       "PUCCH-format4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUCCH_format4_tags_1,
+       sizeof(asn_DEF_PUCCH_format4_tags_1)
+               /sizeof(asn_DEF_PUCCH_format4_tags_1[0]), /* 1 */
+       asn_DEF_PUCCH_format4_tags_1,   /* Same as above */
+       sizeof(asn_DEF_PUCCH_format4_tags_1)
+               /sizeof(asn_DEF_PUCCH_format4_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUCCH_format4_1,
+       4,      /* Elements count */
+       &asn_SPC_PUCCH_format4_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUCCH-format4.h b/src/codec_utils/RRC/PUCCH-format4.h
new file mode 100644 (file)
index 0000000..85fbe11
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUCCH_format4_H_
+#define        _PUCCH_format4_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUCCH_format4__occ_Length {
+       PUCCH_format4__occ_Length_n2    = 0,
+       PUCCH_format4__occ_Length_n4    = 1
+} e_PUCCH_format4__occ_Length;
+typedef enum PUCCH_format4__occ_Index {
+       PUCCH_format4__occ_Index_n0     = 0,
+       PUCCH_format4__occ_Index_n1     = 1,
+       PUCCH_format4__occ_Index_n2     = 2,
+       PUCCH_format4__occ_Index_n3     = 3
+} e_PUCCH_format4__occ_Index;
+
+/* PUCCH-format4 */
+typedef struct PUCCH_format4 {
+       long     nrofSymbols;
+       long     occ_Length;
+       long     occ_Index;
+       long     startingSymbolIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUCCH_format4_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_occ_Length_3;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_occ_Index_6;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUCCH_format4;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_format4_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUCCH_format4_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUCCH_format4_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.c b/src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.c
new file mode 100644 (file)
index 0000000..fb65356
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-CodeBlockGroupTransmission.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_maxCodeBlockGroupsPerTransportBlock_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxCodeBlockGroupsPerTransportBlock_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxCodeBlockGroupsPerTransportBlock_value2enum_2[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n6" },
+       { 3,    2,      "n8" }
+};
+static const unsigned int asn_MAP_maxCodeBlockGroupsPerTransportBlock_enum2value_2[] = {
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2,      /* n6(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxCodeBlockGroupsPerTransportBlock_specs_2 = {
+       asn_MAP_maxCodeBlockGroupsPerTransportBlock_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxCodeBlockGroupsPerTransportBlock_enum2value_2,       /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxCodeBlockGroupsPerTransportBlock_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_maxCodeBlockGroupsPerTransportBlock_2 = {
+       "maxCodeBlockGroupsPerTransportBlock",
+       "maxCodeBlockGroupsPerTransportBlock",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2,
+       sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2)
+               /sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2)
+               /sizeof(asn_DEF_maxCodeBlockGroupsPerTransportBlock_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxCodeBlockGroupsPerTransportBlock_constr_2, &asn_PER_type_maxCodeBlockGroupsPerTransportBlock_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxCodeBlockGroupsPerTransportBlock_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_CodeBlockGroupTransmission_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_CodeBlockGroupTransmission, maxCodeBlockGroupsPerTransportBlock),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxCodeBlockGroupsPerTransportBlock_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxCodeBlockGroupsPerTransportBlock"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_CodeBlockGroupTransmission_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* maxCodeBlockGroupsPerTransportBlock */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_CodeBlockGroupTransmission_specs_1 = {
+       sizeof(struct PUSCH_CodeBlockGroupTransmission),
+       offsetof(struct PUSCH_CodeBlockGroupTransmission, _asn_ctx),
+       asn_MAP_PUSCH_CodeBlockGroupTransmission_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_PUSCH_CodeBlockGroupTransmission = {
+       "PUSCH-CodeBlockGroupTransmission",
+       "PUSCH-CodeBlockGroupTransmission",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1,
+       sizeof(asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1)
+               /sizeof(asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1)
+               /sizeof(asn_DEF_PUSCH_CodeBlockGroupTransmission_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_CodeBlockGroupTransmission_1,
+       1,      /* Elements count */
+       &asn_SPC_PUSCH_CodeBlockGroupTransmission_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.h b/src/codec_utils/RRC/PUSCH-CodeBlockGroupTransmission.h
new file mode 100644 (file)
index 0000000..90d7be5
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_CodeBlockGroupTransmission_H_
+#define        _PUSCH_CodeBlockGroupTransmission_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock {
+       PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n2        = 0,
+       PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n4        = 1,
+       PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n6        = 2,
+       PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock_n8        = 3
+} e_PUSCH_CodeBlockGroupTransmission__maxCodeBlockGroupsPerTransportBlock;
+
+/* PUSCH-CodeBlockGroupTransmission */
+typedef struct PUSCH_CodeBlockGroupTransmission {
+       long     maxCodeBlockGroupsPerTransportBlock;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_CodeBlockGroupTransmission_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxCodeBlockGroupsPerTransportBlock_2; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_CodeBlockGroupTransmission;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_CodeBlockGroupTransmission_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_CodeBlockGroupTransmission_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_CodeBlockGroupTransmission_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-Config.c b/src/codec_utils/RRC/PUSCH-Config.c
new file mode 100644 (file)
index 0000000..87338d8
--- /dev/null
@@ -0,0 +1,1124 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-Config.h"
+
+#include "PUSCH-PowerControl.h"
+#include "DMRS-UplinkConfig.h"
+#include "PUSCH-TimeDomainResourceAllocationList.h"
+#include "UCI-OnPUSCH.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.
+ */
+static int
+memb_NativeInteger_constraint_16(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 <= 274)) {
+               /* 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 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 int
+memb_dataScramblingIdentityPUSCH_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 >= 0 && value <= 1023)) {
+               /* 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_frequencyHoppingOffsetLists_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 <= 4)) {
+               /* 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_maxRank_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 <= 4)) {
+               /* 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_txConfig_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_txConfig_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_UplinkForPUSCH_MappingTypeA_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_UplinkForPUSCH_MappingTypeA_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dmrs_UplinkForPUSCH_MappingTypeB_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_UplinkForPUSCH_MappingTypeB_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_frequencyHopping_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_frequencyHopping_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_Member_constr_17 CC_NOTUSED = {
+       { 2, 1 }        /* (1..274) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  274 }      /* (1..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_frequencyHoppingOffsetLists_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_frequencyHoppingOffsetLists_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceAllocation_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceAllocation_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pusch_TimeDomainAllocationList_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_TimeDomainAllocationList_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_AggregationFactor_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_AggregationFactor_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_mcs_Table_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_Table_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mcs_TableTransformPrecoder_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_TableTransformPrecoder_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_transformPrecoder_constr_35 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_transformPrecoder_constr_35 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_codebookSubset_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_codebookSubset_constr_38 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rbg_Size_constr_43 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rbg_Size_constr_43 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_uci_OnPUSCH_constr_45 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uci_OnPUSCH_constr_45 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tp_pi2BPSK_constr_48 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tp_pi2BPSK_constr_48 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dataScramblingIdentityPUSCH_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_dataScramblingIdentityPUSCH_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_frequencyHoppingOffsetLists_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_frequencyHoppingOffsetLists_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxRank_constr_42 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxRank_constr_42 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_txConfig_value2enum_3[] = {
+       { 0,    8,      "codebook" },
+       { 1,    11,     "nonCodebook" }
+};
+static const unsigned int asn_MAP_txConfig_enum2value_3[] = {
+       0,      /* codebook(0) */
+       1       /* nonCodebook(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_txConfig_specs_3 = {
+       asn_MAP_txConfig_value2enum_3,  /* "tag" => N; sorted by tag */
+       asn_MAP_txConfig_enum2value_3,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_txConfig_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_txConfig_3 = {
+       "txConfig",
+       "txConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_txConfig_tags_3,
+       sizeof(asn_DEF_txConfig_tags_3)
+               /sizeof(asn_DEF_txConfig_tags_3[0]) - 1, /* 1 */
+       asn_DEF_txConfig_tags_3,        /* Same as above */
+       sizeof(asn_DEF_txConfig_tags_3)
+               /sizeof(asn_DEF_txConfig_tags_3[0]), /* 2 */
+       { &asn_OER_type_txConfig_constr_3, &asn_PER_type_txConfig_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_txConfig_specs_3       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dmrs_UplinkForPUSCH_MappingTypeA_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DMRS_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_dmrs_UplinkForPUSCH_MappingTypeA_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_dmrs_UplinkForPUSCH_MappingTypeA_specs_6 = {
+       sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA),
+       offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA, _asn_ctx),
+       offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA, present),
+       sizeof(((struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA *)0)->present),
+       asn_MAP_dmrs_UplinkForPUSCH_MappingTypeA_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dmrs_UplinkForPUSCH_MappingTypeA_6 = {
+       "dmrs-UplinkForPUSCH-MappingTypeA",
+       "dmrs-UplinkForPUSCH-MappingTypeA",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_dmrs_UplinkForPUSCH_MappingTypeA_constr_6, &asn_PER_type_dmrs_UplinkForPUSCH_MappingTypeA_constr_6, CHOICE_constraint },
+       asn_MBR_dmrs_UplinkForPUSCH_MappingTypeA_6,
+       2,      /* Elements count */
+       &asn_SPC_dmrs_UplinkForPUSCH_MappingTypeA_specs_6       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dmrs_UplinkForPUSCH_MappingTypeB_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DMRS_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_dmrs_UplinkForPUSCH_MappingTypeB_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_dmrs_UplinkForPUSCH_MappingTypeB_specs_9 = {
+       sizeof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB),
+       offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB, _asn_ctx),
+       offsetof(struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB, present),
+       sizeof(((struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB *)0)->present),
+       asn_MAP_dmrs_UplinkForPUSCH_MappingTypeB_tag2el_9,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dmrs_UplinkForPUSCH_MappingTypeB_9 = {
+       "dmrs-UplinkForPUSCH-MappingTypeB",
+       "dmrs-UplinkForPUSCH-MappingTypeB",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_dmrs_UplinkForPUSCH_MappingTypeB_constr_9, &asn_PER_type_dmrs_UplinkForPUSCH_MappingTypeB_constr_9, CHOICE_constraint },
+       asn_MBR_dmrs_UplinkForPUSCH_MappingTypeB_9,
+       2,      /* Elements count */
+       &asn_SPC_dmrs_UplinkForPUSCH_MappingTypeB_specs_9       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_frequencyHopping_value2enum_13[] = {
+       { 0,    9,      "intraSlot" },
+       { 1,    9,      "interSlot" }
+};
+static const unsigned int asn_MAP_frequencyHopping_enum2value_13[] = {
+       1,      /* interSlot(1) */
+       0       /* intraSlot(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_frequencyHopping_specs_13 = {
+       asn_MAP_frequencyHopping_value2enum_13, /* "tag" => N; sorted by tag */
+       asn_MAP_frequencyHopping_enum2value_13, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_frequencyHopping_tags_13[] = {
+       (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_frequencyHopping_13 = {
+       "frequencyHopping",
+       "frequencyHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_frequencyHopping_tags_13,
+       sizeof(asn_DEF_frequencyHopping_tags_13)
+               /sizeof(asn_DEF_frequencyHopping_tags_13[0]) - 1, /* 1 */
+       asn_DEF_frequencyHopping_tags_13,       /* Same as above */
+       sizeof(asn_DEF_frequencyHopping_tags_13)
+               /sizeof(asn_DEF_frequencyHopping_tags_13[0]), /* 2 */
+       { &asn_OER_type_frequencyHopping_constr_13, &asn_PER_type_frequencyHopping_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_frequencyHopping_specs_13      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_frequencyHoppingOffsetLists_16[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_17, &asn_PER_memb_Member_constr_17,  memb_NativeInteger_constraint_16 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_frequencyHoppingOffsetLists_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_frequencyHoppingOffsetLists_specs_16 = {
+       sizeof(struct PUSCH_Config__frequencyHoppingOffsetLists),
+       offsetof(struct PUSCH_Config__frequencyHoppingOffsetLists, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_frequencyHoppingOffsetLists_16 = {
+       "frequencyHoppingOffsetLists",
+       "frequencyHoppingOffsetLists",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_frequencyHoppingOffsetLists_tags_16,
+       sizeof(asn_DEF_frequencyHoppingOffsetLists_tags_16)
+               /sizeof(asn_DEF_frequencyHoppingOffsetLists_tags_16[0]) - 1, /* 1 */
+       asn_DEF_frequencyHoppingOffsetLists_tags_16,    /* Same as above */
+       sizeof(asn_DEF_frequencyHoppingOffsetLists_tags_16)
+               /sizeof(asn_DEF_frequencyHoppingOffsetLists_tags_16[0]), /* 2 */
+       { &asn_OER_type_frequencyHoppingOffsetLists_constr_16, &asn_PER_type_frequencyHoppingOffsetLists_constr_16, SEQUENCE_OF_constraint },
+       asn_MBR_frequencyHoppingOffsetLists_16,
+       1,      /* Single element */
+       &asn_SPC_frequencyHoppingOffsetLists_specs_16   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_resourceAllocation_value2enum_18[] = {
+       { 0,    23,     "resourceAllocationType0" },
+       { 1,    23,     "resourceAllocationType1" },
+       { 2,    13,     "dynamicSwitch" }
+};
+static const unsigned int asn_MAP_resourceAllocation_enum2value_18[] = {
+       2,      /* dynamicSwitch(2) */
+       0,      /* resourceAllocationType0(0) */
+       1       /* resourceAllocationType1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_resourceAllocation_specs_18 = {
+       asn_MAP_resourceAllocation_value2enum_18,       /* "tag" => N; sorted by tag */
+       asn_MAP_resourceAllocation_enum2value_18,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_resourceAllocation_tags_18[] = {
+       (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_resourceAllocation_18 = {
+       "resourceAllocation",
+       "resourceAllocation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_resourceAllocation_tags_18,
+       sizeof(asn_DEF_resourceAllocation_tags_18)
+               /sizeof(asn_DEF_resourceAllocation_tags_18[0]) - 1, /* 1 */
+       asn_DEF_resourceAllocation_tags_18,     /* Same as above */
+       sizeof(asn_DEF_resourceAllocation_tags_18)
+               /sizeof(asn_DEF_resourceAllocation_tags_18[0]), /* 2 */
+       { &asn_OER_type_resourceAllocation_constr_18, &asn_PER_type_resourceAllocation_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_resourceAllocation_specs_18    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pusch_TimeDomainAllocationList_22[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_Config__pusch_TimeDomainAllocationList, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUSCH_Config__pusch_TimeDomainAllocationList, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_TimeDomainResourceAllocationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pusch_TimeDomainAllocationList_tag2el_22[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pusch_TimeDomainAllocationList_specs_22 = {
+       sizeof(struct PUSCH_Config__pusch_TimeDomainAllocationList),
+       offsetof(struct PUSCH_Config__pusch_TimeDomainAllocationList, _asn_ctx),
+       offsetof(struct PUSCH_Config__pusch_TimeDomainAllocationList, present),
+       sizeof(((struct PUSCH_Config__pusch_TimeDomainAllocationList *)0)->present),
+       asn_MAP_pusch_TimeDomainAllocationList_tag2el_22,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_TimeDomainAllocationList_22 = {
+       "pusch-TimeDomainAllocationList",
+       "pusch-TimeDomainAllocationList",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pusch_TimeDomainAllocationList_constr_22, &asn_PER_type_pusch_TimeDomainAllocationList_constr_22, CHOICE_constraint },
+       asn_MBR_pusch_TimeDomainAllocationList_22,
+       2,      /* Elements count */
+       &asn_SPC_pusch_TimeDomainAllocationList_specs_22        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_AggregationFactor_value2enum_25[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n8" }
+};
+static const unsigned int asn_MAP_pusch_AggregationFactor_enum2value_25[] = {
+       0,      /* n2(0) */
+       1,      /* n4(1) */
+       2       /* n8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_AggregationFactor_specs_25 = {
+       asn_MAP_pusch_AggregationFactor_value2enum_25,  /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_AggregationFactor_enum2value_25,  /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_AggregationFactor_tags_25[] = {
+       (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_pusch_AggregationFactor_25 = {
+       "pusch-AggregationFactor",
+       "pusch-AggregationFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_AggregationFactor_tags_25,
+       sizeof(asn_DEF_pusch_AggregationFactor_tags_25)
+               /sizeof(asn_DEF_pusch_AggregationFactor_tags_25[0]) - 1, /* 1 */
+       asn_DEF_pusch_AggregationFactor_tags_25,        /* Same as above */
+       sizeof(asn_DEF_pusch_AggregationFactor_tags_25)
+               /sizeof(asn_DEF_pusch_AggregationFactor_tags_25[0]), /* 2 */
+       { &asn_OER_type_pusch_AggregationFactor_constr_25, &asn_PER_type_pusch_AggregationFactor_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_AggregationFactor_specs_25       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_Table_value2enum_29[] = {
+       { 0,    6,      "qam256" },
+       { 1,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_Table_enum2value_29[] = {
+       0,      /* qam256(0) */
+       1       /* qam64LowSE(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_Table_specs_29 = {
+       asn_MAP_mcs_Table_value2enum_29,        /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_Table_enum2value_29,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_Table_tags_29[] = {
+       (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_mcs_Table_29 = {
+       "mcs-Table",
+       "mcs-Table",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_Table_tags_29,
+       sizeof(asn_DEF_mcs_Table_tags_29)
+               /sizeof(asn_DEF_mcs_Table_tags_29[0]) - 1, /* 1 */
+       asn_DEF_mcs_Table_tags_29,      /* Same as above */
+       sizeof(asn_DEF_mcs_Table_tags_29)
+               /sizeof(asn_DEF_mcs_Table_tags_29[0]), /* 2 */
+       { &asn_OER_type_mcs_Table_constr_29, &asn_PER_type_mcs_Table_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_Table_specs_29     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_TableTransformPrecoder_value2enum_32[] = {
+       { 0,    6,      "qam256" },
+       { 1,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_TableTransformPrecoder_enum2value_32[] = {
+       0,      /* qam256(0) */
+       1       /* qam64LowSE(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_TableTransformPrecoder_specs_32 = {
+       asn_MAP_mcs_TableTransformPrecoder_value2enum_32,       /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_TableTransformPrecoder_enum2value_32,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_TableTransformPrecoder_tags_32[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mcs_TableTransformPrecoder_32 = {
+       "mcs-TableTransformPrecoder",
+       "mcs-TableTransformPrecoder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_TableTransformPrecoder_tags_32,
+       sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_32)
+               /sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_32[0]) - 1, /* 1 */
+       asn_DEF_mcs_TableTransformPrecoder_tags_32,     /* Same as above */
+       sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_32)
+               /sizeof(asn_DEF_mcs_TableTransformPrecoder_tags_32[0]), /* 2 */
+       { &asn_OER_type_mcs_TableTransformPrecoder_constr_32, &asn_PER_type_mcs_TableTransformPrecoder_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_TableTransformPrecoder_specs_32    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_transformPrecoder_value2enum_35[] = {
+       { 0,    7,      "enabled" },
+       { 1,    8,      "disabled" }
+};
+static const unsigned int asn_MAP_transformPrecoder_enum2value_35[] = {
+       1,      /* disabled(1) */
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_transformPrecoder_specs_35 = {
+       asn_MAP_transformPrecoder_value2enum_35,        /* "tag" => N; sorted by tag */
+       asn_MAP_transformPrecoder_enum2value_35,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_transformPrecoder_tags_35[] = {
+       (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_transformPrecoder_35 = {
+       "transformPrecoder",
+       "transformPrecoder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_transformPrecoder_tags_35,
+       sizeof(asn_DEF_transformPrecoder_tags_35)
+               /sizeof(asn_DEF_transformPrecoder_tags_35[0]) - 1, /* 1 */
+       asn_DEF_transformPrecoder_tags_35,      /* Same as above */
+       sizeof(asn_DEF_transformPrecoder_tags_35)
+               /sizeof(asn_DEF_transformPrecoder_tags_35[0]), /* 2 */
+       { &asn_OER_type_transformPrecoder_constr_35, &asn_PER_type_transformPrecoder_constr_35, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_transformPrecoder_specs_35     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_codebookSubset_value2enum_38[] = {
+       { 0,    29,     "fullyAndPartialAndNonCoherent" },
+       { 1,    21,     "partialAndNonCoherent" },
+       { 2,    11,     "nonCoherent" }
+};
+static const unsigned int asn_MAP_codebookSubset_enum2value_38[] = {
+       0,      /* fullyAndPartialAndNonCoherent(0) */
+       2,      /* nonCoherent(2) */
+       1       /* partialAndNonCoherent(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_codebookSubset_specs_38 = {
+       asn_MAP_codebookSubset_value2enum_38,   /* "tag" => N; sorted by tag */
+       asn_MAP_codebookSubset_enum2value_38,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_codebookSubset_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_codebookSubset_38 = {
+       "codebookSubset",
+       "codebookSubset",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_codebookSubset_tags_38,
+       sizeof(asn_DEF_codebookSubset_tags_38)
+               /sizeof(asn_DEF_codebookSubset_tags_38[0]) - 1, /* 1 */
+       asn_DEF_codebookSubset_tags_38, /* Same as above */
+       sizeof(asn_DEF_codebookSubset_tags_38)
+               /sizeof(asn_DEF_codebookSubset_tags_38[0]), /* 2 */
+       { &asn_OER_type_codebookSubset_constr_38, &asn_PER_type_codebookSubset_constr_38, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_codebookSubset_specs_38        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rbg_Size_value2enum_43[] = {
+       { 0,    7,      "config2" }
+};
+static const unsigned int asn_MAP_rbg_Size_enum2value_43[] = {
+       0       /* config2(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rbg_Size_specs_43 = {
+       asn_MAP_rbg_Size_value2enum_43, /* "tag" => N; sorted by tag */
+       asn_MAP_rbg_Size_enum2value_43, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rbg_Size_tags_43[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rbg_Size_43 = {
+       "rbg-Size",
+       "rbg-Size",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rbg_Size_tags_43,
+       sizeof(asn_DEF_rbg_Size_tags_43)
+               /sizeof(asn_DEF_rbg_Size_tags_43[0]) - 1, /* 1 */
+       asn_DEF_rbg_Size_tags_43,       /* Same as above */
+       sizeof(asn_DEF_rbg_Size_tags_43)
+               /sizeof(asn_DEF_rbg_Size_tags_43[0]), /* 2 */
+       { &asn_OER_type_rbg_Size_constr_43, &asn_PER_type_rbg_Size_constr_43, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rbg_Size_specs_43      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uci_OnPUSCH_45[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_Config__uci_OnPUSCH, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUSCH_Config__uci_OnPUSCH, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UCI_OnPUSCH,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_uci_OnPUSCH_tag2el_45[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_uci_OnPUSCH_specs_45 = {
+       sizeof(struct PUSCH_Config__uci_OnPUSCH),
+       offsetof(struct PUSCH_Config__uci_OnPUSCH, _asn_ctx),
+       offsetof(struct PUSCH_Config__uci_OnPUSCH, present),
+       sizeof(((struct PUSCH_Config__uci_OnPUSCH *)0)->present),
+       asn_MAP_uci_OnPUSCH_tag2el_45,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uci_OnPUSCH_45 = {
+       "uci-OnPUSCH",
+       "uci-OnPUSCH",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_uci_OnPUSCH_constr_45, &asn_PER_type_uci_OnPUSCH_constr_45, CHOICE_constraint },
+       asn_MBR_uci_OnPUSCH_45,
+       2,      /* Elements count */
+       &asn_SPC_uci_OnPUSCH_specs_45   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tp_pi2BPSK_value2enum_48[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_tp_pi2BPSK_enum2value_48[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tp_pi2BPSK_specs_48 = {
+       asn_MAP_tp_pi2BPSK_value2enum_48,       /* "tag" => N; sorted by tag */
+       asn_MAP_tp_pi2BPSK_enum2value_48,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tp_pi2BPSK_tags_48[] = {
+       (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_tp_pi2BPSK_48 = {
+       "tp-pi2BPSK",
+       "tp-pi2BPSK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tp_pi2BPSK_tags_48,
+       sizeof(asn_DEF_tp_pi2BPSK_tags_48)
+               /sizeof(asn_DEF_tp_pi2BPSK_tags_48[0]) - 1, /* 1 */
+       asn_DEF_tp_pi2BPSK_tags_48,     /* Same as above */
+       sizeof(asn_DEF_tp_pi2BPSK_tags_48)
+               /sizeof(asn_DEF_tp_pi2BPSK_tags_48[0]), /* 2 */
+       { &asn_OER_type_tp_pi2BPSK_constr_48, &asn_PER_type_tp_pi2BPSK_constr_48, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tp_pi2BPSK_specs_48    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_Config_1[] = {
+       { ATF_POINTER, 7, offsetof(struct PUSCH_Config, dataScramblingIdentityPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_dataScramblingIdentityPUSCH_constr_2, &asn_PER_memb_dataScramblingIdentityPUSCH_constr_2,  memb_dataScramblingIdentityPUSCH_constraint_1 },
+               0, 0, /* No default value */
+               "dataScramblingIdentityPUSCH"
+               },
+       { ATF_POINTER, 6, offsetof(struct PUSCH_Config, txConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_txConfig_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "txConfig"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUSCH_Config, dmrs_UplinkForPUSCH_MappingTypeA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_dmrs_UplinkForPUSCH_MappingTypeA_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-UplinkForPUSCH-MappingTypeA"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUSCH_Config, dmrs_UplinkForPUSCH_MappingTypeB),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_dmrs_UplinkForPUSCH_MappingTypeB_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-UplinkForPUSCH-MappingTypeB"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUSCH_Config, pusch_PowerControl),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_PowerControl,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-PowerControl"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_Config, frequencyHopping),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_frequencyHopping_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyHopping"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_Config, frequencyHoppingOffsetLists),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_frequencyHoppingOffsetLists_16,
+               0,
+               { &asn_OER_memb_frequencyHoppingOffsetLists_constr_16, &asn_PER_memb_frequencyHoppingOffsetLists_constr_16,  memb_frequencyHoppingOffsetLists_constraint_1 },
+               0, 0, /* No default value */
+               "frequencyHoppingOffsetLists"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_Config, resourceAllocation),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_resourceAllocation_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceAllocation"
+               },
+       { ATF_POINTER, 10, offsetof(struct PUSCH_Config, pusch_TimeDomainAllocationList),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pusch_TimeDomainAllocationList_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-TimeDomainAllocationList"
+               },
+       { ATF_POINTER, 9, offsetof(struct PUSCH_Config, pusch_AggregationFactor),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_AggregationFactor_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-AggregationFactor"
+               },
+       { ATF_POINTER, 8, offsetof(struct PUSCH_Config, mcs_Table),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_Table_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-Table"
+               },
+       { ATF_POINTER, 7, offsetof(struct PUSCH_Config, mcs_TableTransformPrecoder),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_TableTransformPrecoder_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-TableTransformPrecoder"
+               },
+       { ATF_POINTER, 6, offsetof(struct PUSCH_Config, transformPrecoder),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_transformPrecoder_35,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transformPrecoder"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUSCH_Config, codebookSubset),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_codebookSubset_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codebookSubset"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUSCH_Config, maxRank),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxRank_constr_42, &asn_PER_memb_maxRank_constr_42,  memb_maxRank_constraint_1 },
+               0, 0, /* No default value */
+               "maxRank"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUSCH_Config, rbg_Size),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rbg_Size_43,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rbg-Size"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_Config, uci_OnPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_uci_OnPUSCH_45,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uci-OnPUSCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_Config, tp_pi2BPSK),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tp_pi2BPSK_48,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tp-pi2BPSK"
+               },
+};
+static const int asn_MAP_PUSCH_Config_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dataScramblingIdentityPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* txConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dmrs-UplinkForPUSCH-MappingTypeA */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dmrs-UplinkForPUSCH-MappingTypeB */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pusch-PowerControl */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* frequencyHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* frequencyHoppingOffsetLists */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* resourceAllocation */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* pusch-TimeDomainAllocationList */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pusch-AggregationFactor */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* mcs-Table */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* mcs-TableTransformPrecoder */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* transformPrecoder */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* codebookSubset */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* maxRank */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* rbg-Size */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* uci-OnPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 } /* tp-pi2BPSK */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_Config_specs_1 = {
+       sizeof(struct PUSCH_Config),
+       offsetof(struct PUSCH_Config, _asn_ctx),
+       asn_MAP_PUSCH_Config_tag2el_1,
+       18,     /* Count of tags in the map */
+       asn_MAP_PUSCH_Config_oms_1,     /* Optional members */
+       17, 0,  /* Root/Additions */
+       18,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_Config = {
+       "PUSCH-Config",
+       "PUSCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_Config_tags_1,
+       sizeof(asn_DEF_PUSCH_Config_tags_1)
+               /sizeof(asn_DEF_PUSCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_Config_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PUSCH_Config_tags_1)
+               /sizeof(asn_DEF_PUSCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_Config_1,
+       18,     /* Elements count */
+       &asn_SPC_PUSCH_Config_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-Config.h b/src/codec_utils/RRC/PUSCH-Config.h
new file mode 100644 (file)
index 0000000..bddadaa
--- /dev/null
@@ -0,0 +1,186 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_Config_H_
+#define        _PUSCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_Config__txConfig {
+       PUSCH_Config__txConfig_codebook = 0,
+       PUSCH_Config__txConfig_nonCodebook      = 1
+} e_PUSCH_Config__txConfig;
+typedef enum PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR {
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR_NOTHING,      /* No components present */
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR_release,
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR_setup
+} PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR;
+typedef enum PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR {
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR_NOTHING,      /* No components present */
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR_release,
+       PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR_setup
+} PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR;
+typedef enum PUSCH_Config__frequencyHopping {
+       PUSCH_Config__frequencyHopping_intraSlot        = 0,
+       PUSCH_Config__frequencyHopping_interSlot        = 1
+} e_PUSCH_Config__frequencyHopping;
+typedef enum PUSCH_Config__resourceAllocation {
+       PUSCH_Config__resourceAllocation_resourceAllocationType0        = 0,
+       PUSCH_Config__resourceAllocation_resourceAllocationType1        = 1,
+       PUSCH_Config__resourceAllocation_dynamicSwitch  = 2
+} e_PUSCH_Config__resourceAllocation;
+typedef enum PUSCH_Config__pusch_TimeDomainAllocationList_PR {
+       PUSCH_Config__pusch_TimeDomainAllocationList_PR_NOTHING,        /* No components present */
+       PUSCH_Config__pusch_TimeDomainAllocationList_PR_release,
+       PUSCH_Config__pusch_TimeDomainAllocationList_PR_setup
+} PUSCH_Config__pusch_TimeDomainAllocationList_PR;
+typedef enum PUSCH_Config__pusch_AggregationFactor {
+       PUSCH_Config__pusch_AggregationFactor_n2        = 0,
+       PUSCH_Config__pusch_AggregationFactor_n4        = 1,
+       PUSCH_Config__pusch_AggregationFactor_n8        = 2
+} e_PUSCH_Config__pusch_AggregationFactor;
+typedef enum PUSCH_Config__mcs_Table {
+       PUSCH_Config__mcs_Table_qam256  = 0,
+       PUSCH_Config__mcs_Table_qam64LowSE      = 1
+} e_PUSCH_Config__mcs_Table;
+typedef enum PUSCH_Config__mcs_TableTransformPrecoder {
+       PUSCH_Config__mcs_TableTransformPrecoder_qam256 = 0,
+       PUSCH_Config__mcs_TableTransformPrecoder_qam64LowSE     = 1
+} e_PUSCH_Config__mcs_TableTransformPrecoder;
+typedef enum PUSCH_Config__transformPrecoder {
+       PUSCH_Config__transformPrecoder_enabled = 0,
+       PUSCH_Config__transformPrecoder_disabled        = 1
+} e_PUSCH_Config__transformPrecoder;
+typedef enum PUSCH_Config__codebookSubset {
+       PUSCH_Config__codebookSubset_fullyAndPartialAndNonCoherent      = 0,
+       PUSCH_Config__codebookSubset_partialAndNonCoherent      = 1,
+       PUSCH_Config__codebookSubset_nonCoherent        = 2
+} e_PUSCH_Config__codebookSubset;
+typedef enum PUSCH_Config__rbg_Size {
+       PUSCH_Config__rbg_Size_config2  = 0
+} e_PUSCH_Config__rbg_Size;
+typedef enum PUSCH_Config__uci_OnPUSCH_PR {
+       PUSCH_Config__uci_OnPUSCH_PR_NOTHING,   /* No components present */
+       PUSCH_Config__uci_OnPUSCH_PR_release,
+       PUSCH_Config__uci_OnPUSCH_PR_setup
+} PUSCH_Config__uci_OnPUSCH_PR;
+typedef enum PUSCH_Config__tp_pi2BPSK {
+       PUSCH_Config__tp_pi2BPSK_enabled        = 0
+} e_PUSCH_Config__tp_pi2BPSK;
+
+/* Forward declarations */
+struct PUSCH_PowerControl;
+struct DMRS_UplinkConfig;
+struct PUSCH_TimeDomainResourceAllocationList;
+struct UCI_OnPUSCH;
+
+/* PUSCH-Config */
+typedef struct PUSCH_Config {
+       long    *dataScramblingIdentityPUSCH;   /* OPTIONAL */
+       long    *txConfig;      /* OPTIONAL */
+       struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA {
+               PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_PR present;
+               union PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeA_u {
+                       NULL_t   release;
+                       struct DMRS_UplinkConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dmrs_UplinkForPUSCH_MappingTypeA;
+       struct PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB {
+               PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_PR present;
+               union PUSCH_Config__dmrs_UplinkForPUSCH_MappingTypeB_u {
+                       NULL_t   release;
+                       struct DMRS_UplinkConfig        *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dmrs_UplinkForPUSCH_MappingTypeB;
+       struct PUSCH_PowerControl       *pusch_PowerControl;    /* OPTIONAL */
+       long    *frequencyHopping;      /* OPTIONAL */
+       struct PUSCH_Config__frequencyHoppingOffsetLists {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *frequencyHoppingOffsetLists;
+       long     resourceAllocation;
+       struct PUSCH_Config__pusch_TimeDomainAllocationList {
+               PUSCH_Config__pusch_TimeDomainAllocationList_PR present;
+               union PUSCH_Config__pusch_TimeDomainAllocationList_u {
+                       NULL_t   release;
+                       struct PUSCH_TimeDomainResourceAllocationList   *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pusch_TimeDomainAllocationList;
+       long    *pusch_AggregationFactor;       /* OPTIONAL */
+       long    *mcs_Table;     /* OPTIONAL */
+       long    *mcs_TableTransformPrecoder;    /* OPTIONAL */
+       long    *transformPrecoder;     /* OPTIONAL */
+       long    *codebookSubset;        /* OPTIONAL */
+       long    *maxRank;       /* OPTIONAL */
+       long    *rbg_Size;      /* OPTIONAL */
+       struct PUSCH_Config__uci_OnPUSCH {
+               PUSCH_Config__uci_OnPUSCH_PR present;
+               union PUSCH_Config__uci_OnPUSCH_u {
+                       NULL_t   release;
+                       struct UCI_OnPUSCH      *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uci_OnPUSCH;
+       long    *tp_pi2BPSK;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_txConfig_3;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_frequencyHopping_13;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_resourceAllocation_18; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_AggregationFactor_25;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_Table_29;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_TableTransformPrecoder_32; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_transformPrecoder_35;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_codebookSubset_38;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rbg_Size_43;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tp_pi2BPSK_48; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_Config_1[18];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-ConfigCommon.c b/src/codec_utils/RRC/PUSCH-ConfigCommon.c
new file mode 100644 (file)
index 0000000..d41d72d
--- /dev/null
@@ -0,0 +1,196 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-ConfigCommon.h"
+
+#include "PUSCH-TimeDomainResourceAllocationList.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_msg3_DeltaPreamble_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 <= 6)) {
+               /* 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_p0_NominalWithGrant_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 >= -202 && value <= 24)) {
+               /* 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_groupHoppingEnabledTransformPrecoding_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_groupHoppingEnabledTransformPrecoding_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_msg3_DeltaPreamble_constr_5 CC_NOTUSED = {
+       { 1, 0 }        /* (-1..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_msg3_DeltaPreamble_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3, -1,  6 }        /* (-1..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_NominalWithGrant_constr_6 CC_NOTUSED = {
+       { 2, 0 }        /* (-202..24) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_NominalWithGrant_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_groupHoppingEnabledTransformPrecoding_value2enum_2[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_groupHoppingEnabledTransformPrecoding_enum2value_2[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_groupHoppingEnabledTransformPrecoding_specs_2 = {
+       asn_MAP_groupHoppingEnabledTransformPrecoding_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_groupHoppingEnabledTransformPrecoding_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_groupHoppingEnabledTransformPrecoding_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_groupHoppingEnabledTransformPrecoding_2 = {
+       "groupHoppingEnabledTransformPrecoding",
+       "groupHoppingEnabledTransformPrecoding",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2,
+       sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2)
+               /sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2[0]) - 1, /* 1 */
+       asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2,   /* Same as above */
+       sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2)
+               /sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2[0]), /* 2 */
+       { &asn_OER_type_groupHoppingEnabledTransformPrecoding_constr_2, &asn_PER_type_groupHoppingEnabledTransformPrecoding_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_groupHoppingEnabledTransformPrecoding_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_ConfigCommon_1[] = {
+       { ATF_POINTER, 4, offsetof(struct PUSCH_ConfigCommon, groupHoppingEnabledTransformPrecoding),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_groupHoppingEnabledTransformPrecoding_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "groupHoppingEnabledTransformPrecoding"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUSCH_ConfigCommon, pusch_TimeDomainAllocationList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_TimeDomainResourceAllocationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-TimeDomainAllocationList"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_ConfigCommon, msg3_DeltaPreamble),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_msg3_DeltaPreamble_constr_5, &asn_PER_memb_msg3_DeltaPreamble_constr_5,  memb_msg3_DeltaPreamble_constraint_1 },
+               0, 0, /* No default value */
+               "msg3-DeltaPreamble"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_ConfigCommon, p0_NominalWithGrant),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_NominalWithGrant_constr_6, &asn_PER_memb_p0_NominalWithGrant_constr_6,  memb_p0_NominalWithGrant_constraint_1 },
+               0, 0, /* No default value */
+               "p0-NominalWithGrant"
+               },
+};
+static const int asn_MAP_PUSCH_ConfigCommon_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* groupHoppingEnabledTransformPrecoding */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pusch-TimeDomainAllocationList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msg3-DeltaPreamble */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* p0-NominalWithGrant */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ConfigCommon_specs_1 = {
+       sizeof(struct PUSCH_ConfigCommon),
+       offsetof(struct PUSCH_ConfigCommon, _asn_ctx),
+       asn_MAP_PUSCH_ConfigCommon_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PUSCH_ConfigCommon_oms_1,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_ConfigCommon = {
+       "PUSCH-ConfigCommon",
+       "PUSCH-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_ConfigCommon_tags_1,
+       sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_ConfigCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_ConfigCommon_1,
+       4,      /* Elements count */
+       &asn_SPC_PUSCH_ConfigCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-ConfigCommon.h b/src/codec_utils/RRC/PUSCH-ConfigCommon.h
new file mode 100644 (file)
index 0000000..1214f06
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_ConfigCommon_H_
+#define        _PUSCH_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding {
+       PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding_enabled       = 0
+} e_PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding;
+
+/* Forward declarations */
+struct PUSCH_TimeDomainResourceAllocationList;
+
+/* PUSCH-ConfigCommon */
+typedef struct PUSCH_ConfigCommon {
+       long    *groupHoppingEnabledTransformPrecoding; /* OPTIONAL */
+       struct PUSCH_TimeDomainResourceAllocationList   *pusch_TimeDomainAllocationList;        /* OPTIONAL */
+       long    *msg3_DeltaPreamble;    /* OPTIONAL */
+       long    *p0_NominalWithGrant;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_ConfigCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_groupHoppingEnabledTransformPrecoding_2;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_ConfigCommon_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.c b/src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.c
new file mode 100644 (file)
index 0000000..8f3922d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-PathlossReferenceRS-Id.h"
+
+int
+PUSCH_PathlossReferenceRS_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PUSCH_PathlossReferenceRS_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PUSCH_PathlossReferenceRS_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_PathlossReferenceRS_Id = {
+       "PUSCH-PathlossReferenceRS-Id",
+       "PUSCH-PathlossReferenceRS-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1,
+       sizeof(asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1)
+               /sizeof(asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1)
+               /sizeof(asn_DEF_PUSCH_PathlossReferenceRS_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUSCH_PathlossReferenceRS_Id_constr_1, &asn_PER_type_PUSCH_PathlossReferenceRS_Id_constr_1, PUSCH_PathlossReferenceRS_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.h b/src/codec_utils/RRC/PUSCH-PathlossReferenceRS-Id.h
new file mode 100644 (file)
index 0000000..b2468de
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_PathlossReferenceRS_Id_H_
+#define        _PUSCH_PathlossReferenceRS_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUSCH-PathlossReferenceRS-Id */
+typedef long    PUSCH_PathlossReferenceRS_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PUSCH_PathlossReferenceRS_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_PathlossReferenceRS_Id;
+asn_struct_free_f PUSCH_PathlossReferenceRS_Id_free;
+asn_struct_print_f PUSCH_PathlossReferenceRS_Id_print;
+asn_constr_check_f PUSCH_PathlossReferenceRS_Id_constraint;
+ber_type_decoder_f PUSCH_PathlossReferenceRS_Id_decode_ber;
+der_type_encoder_f PUSCH_PathlossReferenceRS_Id_encode_der;
+xer_type_decoder_f PUSCH_PathlossReferenceRS_Id_decode_xer;
+xer_type_encoder_f PUSCH_PathlossReferenceRS_Id_encode_xer;
+oer_type_decoder_f PUSCH_PathlossReferenceRS_Id_decode_oer;
+oer_type_encoder_f PUSCH_PathlossReferenceRS_Id_encode_oer;
+per_type_decoder_f PUSCH_PathlossReferenceRS_Id_decode_uper;
+per_type_encoder_f PUSCH_PathlossReferenceRS_Id_encode_uper;
+per_type_decoder_f PUSCH_PathlossReferenceRS_Id_decode_aper;
+per_type_encoder_f PUSCH_PathlossReferenceRS_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_PathlossReferenceRS_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-PathlossReferenceRS.c b/src/codec_utils/RRC/PUSCH-PathlossReferenceRS.c
new file mode 100644 (file)
index 0000000..a049cfd
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-PathlossReferenceRS.h"
+
+static asn_oer_constraints_t asn_OER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_referenceSignal_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_PathlossReferenceRS__referenceSignal, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_PathlossReferenceRS__referenceSignal, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_referenceSignal_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Index */
+};
+static asn_CHOICE_specifics_t asn_SPC_referenceSignal_specs_3 = {
+       sizeof(struct PUSCH_PathlossReferenceRS__referenceSignal),
+       offsetof(struct PUSCH_PathlossReferenceRS__referenceSignal, _asn_ctx),
+       offsetof(struct PUSCH_PathlossReferenceRS__referenceSignal, present),
+       sizeof(((struct PUSCH_PathlossReferenceRS__referenceSignal *)0)->present),
+       asn_MAP_referenceSignal_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_referenceSignal_3 = {
+       "referenceSignal",
+       "referenceSignal",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_referenceSignal_constr_3, &asn_PER_type_referenceSignal_constr_3, CHOICE_constraint },
+       asn_MBR_referenceSignal_3,
+       2,      /* Elements count */
+       &asn_SPC_referenceSignal_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_PathlossReferenceRS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_PathlossReferenceRS, pusch_PathlossReferenceRS_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_PathlossReferenceRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-PathlossReferenceRS-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_PathlossReferenceRS, referenceSignal),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_referenceSignal_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignal"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUSCH_PathlossReferenceRS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_PathlossReferenceRS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pusch-PathlossReferenceRS-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* referenceSignal */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_PathlossReferenceRS_specs_1 = {
+       sizeof(struct PUSCH_PathlossReferenceRS),
+       offsetof(struct PUSCH_PathlossReferenceRS, _asn_ctx),
+       asn_MAP_PUSCH_PathlossReferenceRS_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_PathlossReferenceRS = {
+       "PUSCH-PathlossReferenceRS",
+       "PUSCH-PathlossReferenceRS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_PathlossReferenceRS_tags_1,
+       sizeof(asn_DEF_PUSCH_PathlossReferenceRS_tags_1)
+               /sizeof(asn_DEF_PUSCH_PathlossReferenceRS_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_PathlossReferenceRS_tags_1,       /* Same as above */
+       sizeof(asn_DEF_PUSCH_PathlossReferenceRS_tags_1)
+               /sizeof(asn_DEF_PUSCH_PathlossReferenceRS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_PathlossReferenceRS_1,
+       2,      /* Elements count */
+       &asn_SPC_PUSCH_PathlossReferenceRS_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-PathlossReferenceRS.h b/src/codec_utils/RRC/PUSCH-PathlossReferenceRS.h
new file mode 100644 (file)
index 0000000..2377271
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_PathlossReferenceRS_H_
+#define        _PUSCH_PathlossReferenceRS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PUSCH-PathlossReferenceRS-Id.h"
+#include "SSB-Index.h"
+#include "NZP-CSI-RS-ResourceId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_PathlossReferenceRS__referenceSignal_PR {
+       PUSCH_PathlossReferenceRS__referenceSignal_PR_NOTHING,  /* No components present */
+       PUSCH_PathlossReferenceRS__referenceSignal_PR_ssb_Index,
+       PUSCH_PathlossReferenceRS__referenceSignal_PR_csi_RS_Index
+} PUSCH_PathlossReferenceRS__referenceSignal_PR;
+
+/* PUSCH-PathlossReferenceRS */
+typedef struct PUSCH_PathlossReferenceRS {
+       PUSCH_PathlossReferenceRS_Id_t   pusch_PathlossReferenceRS_Id;
+       struct PUSCH_PathlossReferenceRS__referenceSignal {
+               PUSCH_PathlossReferenceRS__referenceSignal_PR present;
+               union PUSCH_PathlossReferenceRS__referenceSignal_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } referenceSignal;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_PathlossReferenceRS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_PathlossReferenceRS;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_PathlossReferenceRS_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_PathlossReferenceRS_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_PathlossReferenceRS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-PowerControl.c b/src/codec_utils/RRC/PUSCH-PowerControl.c
new file mode 100644 (file)
index 0000000..6ab88ca
--- /dev/null
@@ -0,0 +1,714 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-PowerControl.h"
+
+#include "P0-PUSCH-AlphaSet.h"
+#include "PUSCH-PathlossReferenceRS.h"
+#include "SRI-PUSCH-PowerControl.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.
+ */
+static int
+memb_p0_NominalWithoutGrant_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 >= -202 && value <= 24)) {
+               /* 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_p0_AlphaSets_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 <= 30)) {
+               /* 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_pathlossReferenceRSToAddModList_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 <= 4)) {
+               /* 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_pathlossReferenceRSToReleaseList_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 <= 4)) {
+               /* 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_sri_PUSCH_MappingToAddModList_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 <= 16)) {
+               /* 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_sri_PUSCH_MappingToReleaseList_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 <= 16)) {
+               /* 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_tpc_Accumulation_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_Accumulation_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_p0_AlphaSets_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..30)) */};
+static asn_per_constraints_t asn_PER_type_p0_AlphaSets_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  30 }       /* (SIZE(1..30)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pathlossReferenceRSToAddModList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_pathlossReferenceRSToAddModList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pathlossReferenceRSToReleaseList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_pathlossReferenceRSToReleaseList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_twoPUSCH_PC_AdjustmentStates_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUSCH_PC_AdjustmentStates_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_deltaMCS_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_deltaMCS_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sri_PUSCH_MappingToAddModList_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_sri_PUSCH_MappingToAddModList_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sri_PUSCH_MappingToReleaseList_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_sri_PUSCH_MappingToReleaseList_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_NominalWithoutGrant_constr_5 CC_NOTUSED = {
+       { 2, 0 }        /* (-202..24) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_NominalWithoutGrant_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_AlphaSets_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..30)) */};
+static asn_per_constraints_t asn_PER_memb_p0_AlphaSets_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  30 }       /* (SIZE(1..30)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pathlossReferenceRSToAddModList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_pathlossReferenceRSToAddModList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pathlossReferenceRSToReleaseList_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_pathlossReferenceRSToReleaseList_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sri_PUSCH_MappingToAddModList_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_sri_PUSCH_MappingToAddModList_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sri_PUSCH_MappingToReleaseList_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_sri_PUSCH_MappingToReleaseList_constr_18 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_tpc_Accumulation_value2enum_2[] = {
+       { 0,    8,      "disabled" }
+};
+static const unsigned int asn_MAP_tpc_Accumulation_enum2value_2[] = {
+       0       /* disabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tpc_Accumulation_specs_2 = {
+       asn_MAP_tpc_Accumulation_value2enum_2,  /* "tag" => N; sorted by tag */
+       asn_MAP_tpc_Accumulation_enum2value_2,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tpc_Accumulation_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_tpc_Accumulation_2 = {
+       "tpc-Accumulation",
+       "tpc-Accumulation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tpc_Accumulation_tags_2,
+       sizeof(asn_DEF_tpc_Accumulation_tags_2)
+               /sizeof(asn_DEF_tpc_Accumulation_tags_2[0]) - 1, /* 1 */
+       asn_DEF_tpc_Accumulation_tags_2,        /* Same as above */
+       sizeof(asn_DEF_tpc_Accumulation_tags_2)
+               /sizeof(asn_DEF_tpc_Accumulation_tags_2[0]), /* 2 */
+       { &asn_OER_type_tpc_Accumulation_constr_2, &asn_PER_type_tpc_Accumulation_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tpc_Accumulation_specs_2       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_p0_AlphaSets_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_P0_PUSCH_AlphaSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_p0_AlphaSets_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_p0_AlphaSets_specs_6 = {
+       sizeof(struct PUSCH_PowerControl__p0_AlphaSets),
+       offsetof(struct PUSCH_PowerControl__p0_AlphaSets, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_p0_AlphaSets_6 = {
+       "p0-AlphaSets",
+       "p0-AlphaSets",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_p0_AlphaSets_tags_6,
+       sizeof(asn_DEF_p0_AlphaSets_tags_6)
+               /sizeof(asn_DEF_p0_AlphaSets_tags_6[0]) - 1, /* 1 */
+       asn_DEF_p0_AlphaSets_tags_6,    /* Same as above */
+       sizeof(asn_DEF_p0_AlphaSets_tags_6)
+               /sizeof(asn_DEF_p0_AlphaSets_tags_6[0]), /* 2 */
+       { &asn_OER_type_p0_AlphaSets_constr_6, &asn_PER_type_p0_AlphaSets_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_p0_AlphaSets_6,
+       1,      /* Single element */
+       &asn_SPC_p0_AlphaSets_specs_6   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pathlossReferenceRSToAddModList_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUSCH_PathlossReferenceRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pathlossReferenceRSToAddModList_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pathlossReferenceRSToAddModList_specs_8 = {
+       sizeof(struct PUSCH_PowerControl__pathlossReferenceRSToAddModList),
+       offsetof(struct PUSCH_PowerControl__pathlossReferenceRSToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pathlossReferenceRSToAddModList_8 = {
+       "pathlossReferenceRSToAddModList",
+       "pathlossReferenceRSToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pathlossReferenceRSToAddModList_tags_8,
+       sizeof(asn_DEF_pathlossReferenceRSToAddModList_tags_8)
+               /sizeof(asn_DEF_pathlossReferenceRSToAddModList_tags_8[0]) - 1, /* 1 */
+       asn_DEF_pathlossReferenceRSToAddModList_tags_8, /* Same as above */
+       sizeof(asn_DEF_pathlossReferenceRSToAddModList_tags_8)
+               /sizeof(asn_DEF_pathlossReferenceRSToAddModList_tags_8[0]), /* 2 */
+       { &asn_OER_type_pathlossReferenceRSToAddModList_constr_8, &asn_PER_type_pathlossReferenceRSToAddModList_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_pathlossReferenceRSToAddModList_8,
+       1,      /* Single element */
+       &asn_SPC_pathlossReferenceRSToAddModList_specs_8        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pathlossReferenceRSToReleaseList_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PUSCH_PathlossReferenceRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pathlossReferenceRSToReleaseList_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pathlossReferenceRSToReleaseList_specs_10 = {
+       sizeof(struct PUSCH_PowerControl__pathlossReferenceRSToReleaseList),
+       offsetof(struct PUSCH_PowerControl__pathlossReferenceRSToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pathlossReferenceRSToReleaseList_10 = {
+       "pathlossReferenceRSToReleaseList",
+       "pathlossReferenceRSToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pathlossReferenceRSToReleaseList_tags_10,
+       sizeof(asn_DEF_pathlossReferenceRSToReleaseList_tags_10)
+               /sizeof(asn_DEF_pathlossReferenceRSToReleaseList_tags_10[0]) - 1, /* 1 */
+       asn_DEF_pathlossReferenceRSToReleaseList_tags_10,       /* Same as above */
+       sizeof(asn_DEF_pathlossReferenceRSToReleaseList_tags_10)
+               /sizeof(asn_DEF_pathlossReferenceRSToReleaseList_tags_10[0]), /* 2 */
+       { &asn_OER_type_pathlossReferenceRSToReleaseList_constr_10, &asn_PER_type_pathlossReferenceRSToReleaseList_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_pathlossReferenceRSToReleaseList_10,
+       1,      /* Single element */
+       &asn_SPC_pathlossReferenceRSToReleaseList_specs_10      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUSCH_PC_AdjustmentStates_value2enum_12[] = {
+       { 0,    9,      "twoStates" }
+};
+static const unsigned int asn_MAP_twoPUSCH_PC_AdjustmentStates_enum2value_12[] = {
+       0       /* twoStates(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUSCH_PC_AdjustmentStates_specs_12 = {
+       asn_MAP_twoPUSCH_PC_AdjustmentStates_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUSCH_PC_AdjustmentStates_enum2value_12,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12[] = {
+       (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_twoPUSCH_PC_AdjustmentStates_12 = {
+       "twoPUSCH-PC-AdjustmentStates",
+       "twoPUSCH-PC-AdjustmentStates",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12,
+       sizeof(asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12)
+               /sizeof(asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12[0]) - 1, /* 1 */
+       asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12,   /* Same as above */
+       sizeof(asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12)
+               /sizeof(asn_DEF_twoPUSCH_PC_AdjustmentStates_tags_12[0]), /* 2 */
+       { &asn_OER_type_twoPUSCH_PC_AdjustmentStates_constr_12, &asn_PER_type_twoPUSCH_PC_AdjustmentStates_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUSCH_PC_AdjustmentStates_specs_12  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_deltaMCS_value2enum_14[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_deltaMCS_enum2value_14[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_deltaMCS_specs_14 = {
+       asn_MAP_deltaMCS_value2enum_14, /* "tag" => N; sorted by tag */
+       asn_MAP_deltaMCS_enum2value_14, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_deltaMCS_tags_14[] = {
+       (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_deltaMCS_14 = {
+       "deltaMCS",
+       "deltaMCS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_deltaMCS_tags_14,
+       sizeof(asn_DEF_deltaMCS_tags_14)
+               /sizeof(asn_DEF_deltaMCS_tags_14[0]) - 1, /* 1 */
+       asn_DEF_deltaMCS_tags_14,       /* Same as above */
+       sizeof(asn_DEF_deltaMCS_tags_14)
+               /sizeof(asn_DEF_deltaMCS_tags_14[0]), /* 2 */
+       { &asn_OER_type_deltaMCS_constr_14, &asn_PER_type_deltaMCS_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_deltaMCS_specs_14      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sri_PUSCH_MappingToAddModList_16[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRI_PUSCH_PowerControl,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sri_PUSCH_MappingToAddModList_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sri_PUSCH_MappingToAddModList_specs_16 = {
+       sizeof(struct PUSCH_PowerControl__sri_PUSCH_MappingToAddModList),
+       offsetof(struct PUSCH_PowerControl__sri_PUSCH_MappingToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sri_PUSCH_MappingToAddModList_16 = {
+       "sri-PUSCH-MappingToAddModList",
+       "sri-PUSCH-MappingToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sri_PUSCH_MappingToAddModList_tags_16,
+       sizeof(asn_DEF_sri_PUSCH_MappingToAddModList_tags_16)
+               /sizeof(asn_DEF_sri_PUSCH_MappingToAddModList_tags_16[0]) - 1, /* 1 */
+       asn_DEF_sri_PUSCH_MappingToAddModList_tags_16,  /* Same as above */
+       sizeof(asn_DEF_sri_PUSCH_MappingToAddModList_tags_16)
+               /sizeof(asn_DEF_sri_PUSCH_MappingToAddModList_tags_16[0]), /* 2 */
+       { &asn_OER_type_sri_PUSCH_MappingToAddModList_constr_16, &asn_PER_type_sri_PUSCH_MappingToAddModList_constr_16, SEQUENCE_OF_constraint },
+       asn_MBR_sri_PUSCH_MappingToAddModList_16,
+       1,      /* Single element */
+       &asn_SPC_sri_PUSCH_MappingToAddModList_specs_16 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sri_PUSCH_MappingToReleaseList_18[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SRI_PUSCH_PowerControlId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sri_PUSCH_MappingToReleaseList_specs_18 = {
+       sizeof(struct PUSCH_PowerControl__sri_PUSCH_MappingToReleaseList),
+       offsetof(struct PUSCH_PowerControl__sri_PUSCH_MappingToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sri_PUSCH_MappingToReleaseList_18 = {
+       "sri-PUSCH-MappingToReleaseList",
+       "sri-PUSCH-MappingToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18,
+       sizeof(asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18)
+               /sizeof(asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18[0]) - 1, /* 1 */
+       asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18, /* Same as above */
+       sizeof(asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18)
+               /sizeof(asn_DEF_sri_PUSCH_MappingToReleaseList_tags_18[0]), /* 2 */
+       { &asn_OER_type_sri_PUSCH_MappingToReleaseList_constr_18, &asn_PER_type_sri_PUSCH_MappingToReleaseList_constr_18, SEQUENCE_OF_constraint },
+       asn_MBR_sri_PUSCH_MappingToReleaseList_18,
+       1,      /* Single element */
+       &asn_SPC_sri_PUSCH_MappingToReleaseList_specs_18        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_PowerControl_1[] = {
+       { ATF_POINTER, 10, offsetof(struct PUSCH_PowerControl, tpc_Accumulation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tpc_Accumulation_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-Accumulation"
+               },
+       { ATF_POINTER, 9, offsetof(struct PUSCH_PowerControl, msg3_Alpha),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Alpha,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "msg3-Alpha"
+               },
+       { ATF_POINTER, 8, offsetof(struct PUSCH_PowerControl, p0_NominalWithoutGrant),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_NominalWithoutGrant_constr_5, &asn_PER_memb_p0_NominalWithoutGrant_constr_5,  memb_p0_NominalWithoutGrant_constraint_1 },
+               0, 0, /* No default value */
+               "p0-NominalWithoutGrant"
+               },
+       { ATF_POINTER, 7, offsetof(struct PUSCH_PowerControl, p0_AlphaSets),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_p0_AlphaSets_6,
+               0,
+               { &asn_OER_memb_p0_AlphaSets_constr_6, &asn_PER_memb_p0_AlphaSets_constr_6,  memb_p0_AlphaSets_constraint_1 },
+               0, 0, /* No default value */
+               "p0-AlphaSets"
+               },
+       { ATF_POINTER, 6, offsetof(struct PUSCH_PowerControl, pathlossReferenceRSToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_pathlossReferenceRSToAddModList_8,
+               0,
+               { &asn_OER_memb_pathlossReferenceRSToAddModList_constr_8, &asn_PER_memb_pathlossReferenceRSToAddModList_constr_8,  memb_pathlossReferenceRSToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "pathlossReferenceRSToAddModList"
+               },
+       { ATF_POINTER, 5, offsetof(struct PUSCH_PowerControl, pathlossReferenceRSToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_pathlossReferenceRSToReleaseList_10,
+               0,
+               { &asn_OER_memb_pathlossReferenceRSToReleaseList_constr_10, &asn_PER_memb_pathlossReferenceRSToReleaseList_constr_10,  memb_pathlossReferenceRSToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "pathlossReferenceRSToReleaseList"
+               },
+       { ATF_POINTER, 4, offsetof(struct PUSCH_PowerControl, twoPUSCH_PC_AdjustmentStates),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUSCH_PC_AdjustmentStates_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUSCH-PC-AdjustmentStates"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUSCH_PowerControl, deltaMCS),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_deltaMCS_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deltaMCS"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_PowerControl, sri_PUSCH_MappingToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_sri_PUSCH_MappingToAddModList_16,
+               0,
+               { &asn_OER_memb_sri_PUSCH_MappingToAddModList_constr_16, &asn_PER_memb_sri_PUSCH_MappingToAddModList_constr_16,  memb_sri_PUSCH_MappingToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "sri-PUSCH-MappingToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_PowerControl, sri_PUSCH_MappingToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_sri_PUSCH_MappingToReleaseList_18,
+               0,
+               { &asn_OER_memb_sri_PUSCH_MappingToReleaseList_constr_18, &asn_PER_memb_sri_PUSCH_MappingToReleaseList_constr_18,  memb_sri_PUSCH_MappingToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "sri-PUSCH-MappingToReleaseList"
+               },
+};
+static const int asn_MAP_PUSCH_PowerControl_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_PowerControl_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_PowerControl_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tpc-Accumulation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* msg3-Alpha */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* p0-NominalWithoutGrant */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* p0-AlphaSets */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pathlossReferenceRSToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* pathlossReferenceRSToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* twoPUSCH-PC-AdjustmentStates */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* deltaMCS */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sri-PUSCH-MappingToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 } /* sri-PUSCH-MappingToReleaseList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_PowerControl_specs_1 = {
+       sizeof(struct PUSCH_PowerControl),
+       offsetof(struct PUSCH_PowerControl, _asn_ctx),
+       asn_MAP_PUSCH_PowerControl_tag2el_1,
+       10,     /* Count of tags in the map */
+       asn_MAP_PUSCH_PowerControl_oms_1,       /* Optional members */
+       10, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_PowerControl = {
+       "PUSCH-PowerControl",
+       "PUSCH-PowerControl",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_PowerControl_tags_1,
+       sizeof(asn_DEF_PUSCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_PUSCH_PowerControl_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_PowerControl_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUSCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_PUSCH_PowerControl_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_PowerControl_1,
+       10,     /* Elements count */
+       &asn_SPC_PUSCH_PowerControl_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-PowerControl.h b/src/codec_utils/RRC/PUSCH-PowerControl.h
new file mode 100644 (file)
index 0000000..0172697
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_PowerControl_H_
+#define        _PUSCH_PowerControl_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "Alpha.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "PUSCH-PathlossReferenceRS-Id.h"
+#include "SRI-PUSCH-PowerControlId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_PowerControl__tpc_Accumulation {
+       PUSCH_PowerControl__tpc_Accumulation_disabled   = 0
+} e_PUSCH_PowerControl__tpc_Accumulation;
+typedef enum PUSCH_PowerControl__twoPUSCH_PC_AdjustmentStates {
+       PUSCH_PowerControl__twoPUSCH_PC_AdjustmentStates_twoStates      = 0
+} e_PUSCH_PowerControl__twoPUSCH_PC_AdjustmentStates;
+typedef enum PUSCH_PowerControl__deltaMCS {
+       PUSCH_PowerControl__deltaMCS_enabled    = 0
+} e_PUSCH_PowerControl__deltaMCS;
+
+/* Forward declarations */
+struct P0_PUSCH_AlphaSet;
+struct PUSCH_PathlossReferenceRS;
+struct SRI_PUSCH_PowerControl;
+
+/* PUSCH-PowerControl */
+typedef struct PUSCH_PowerControl {
+       long    *tpc_Accumulation;      /* OPTIONAL */
+       Alpha_t *msg3_Alpha;    /* OPTIONAL */
+       long    *p0_NominalWithoutGrant;        /* OPTIONAL */
+       struct PUSCH_PowerControl__p0_AlphaSets {
+               A_SEQUENCE_OF(struct P0_PUSCH_AlphaSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *p0_AlphaSets;
+       struct PUSCH_PowerControl__pathlossReferenceRSToAddModList {
+               A_SEQUENCE_OF(struct PUSCH_PathlossReferenceRS) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pathlossReferenceRSToAddModList;
+       struct PUSCH_PowerControl__pathlossReferenceRSToReleaseList {
+               A_SEQUENCE_OF(PUSCH_PathlossReferenceRS_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pathlossReferenceRSToReleaseList;
+       long    *twoPUSCH_PC_AdjustmentStates;  /* OPTIONAL */
+       long    *deltaMCS;      /* OPTIONAL */
+       struct PUSCH_PowerControl__sri_PUSCH_MappingToAddModList {
+               A_SEQUENCE_OF(struct SRI_PUSCH_PowerControl) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sri_PUSCH_MappingToAddModList;
+       struct PUSCH_PowerControl__sri_PUSCH_MappingToReleaseList {
+               A_SEQUENCE_OF(SRI_PUSCH_PowerControlId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *sri_PUSCH_MappingToReleaseList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_PowerControl_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_tpc_Accumulation_2;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUSCH_PC_AdjustmentStates_12;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_deltaMCS_14;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_PowerControl;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_PowerControl_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_PowerControl_1[10];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_PowerControl_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-ServingCellConfig.c b/src/codec_utils/RRC/PUSCH-ServingCellConfig.c
new file mode 100644 (file)
index 0000000..003fcc7
--- /dev/null
@@ -0,0 +1,326 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-ServingCellConfig.h"
+
+#include "PUSCH-CodeBlockGroupTransmission.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.
+ */
+static int
+memb_maxMIMO_Layers_constraint_12(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 <= 4)) {
+               /* 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_codeBlockGroupTransmission_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_codeBlockGroupTransmission_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rateMatching_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rateMatching_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_xOverhead_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_xOverhead_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxMIMO_Layers_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxMIMO_Layers_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_codeBlockGroupTransmission_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_ServingCellConfig__codeBlockGroupTransmission, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct PUSCH_ServingCellConfig__codeBlockGroupTransmission, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_CodeBlockGroupTransmission,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_codeBlockGroupTransmission_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_codeBlockGroupTransmission_specs_2 = {
+       sizeof(struct PUSCH_ServingCellConfig__codeBlockGroupTransmission),
+       offsetof(struct PUSCH_ServingCellConfig__codeBlockGroupTransmission, _asn_ctx),
+       offsetof(struct PUSCH_ServingCellConfig__codeBlockGroupTransmission, present),
+       sizeof(((struct PUSCH_ServingCellConfig__codeBlockGroupTransmission *)0)->present),
+       asn_MAP_codeBlockGroupTransmission_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_codeBlockGroupTransmission_2 = {
+       "codeBlockGroupTransmission",
+       "codeBlockGroupTransmission",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_codeBlockGroupTransmission_constr_2, &asn_PER_type_codeBlockGroupTransmission_constr_2, CHOICE_constraint },
+       asn_MBR_codeBlockGroupTransmission_2,
+       2,      /* Elements count */
+       &asn_SPC_codeBlockGroupTransmission_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rateMatching_value2enum_5[] = {
+       { 0,    15,     "limitedBufferRM" }
+};
+static const unsigned int asn_MAP_rateMatching_enum2value_5[] = {
+       0       /* limitedBufferRM(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rateMatching_specs_5 = {
+       asn_MAP_rateMatching_value2enum_5,      /* "tag" => N; sorted by tag */
+       asn_MAP_rateMatching_enum2value_5,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rateMatching_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_rateMatching_5 = {
+       "rateMatching",
+       "rateMatching",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rateMatching_tags_5,
+       sizeof(asn_DEF_rateMatching_tags_5)
+               /sizeof(asn_DEF_rateMatching_tags_5[0]) - 1, /* 1 */
+       asn_DEF_rateMatching_tags_5,    /* Same as above */
+       sizeof(asn_DEF_rateMatching_tags_5)
+               /sizeof(asn_DEF_rateMatching_tags_5[0]), /* 2 */
+       { &asn_OER_type_rateMatching_constr_5, &asn_PER_type_rateMatching_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rateMatching_specs_5   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_xOverhead_value2enum_7[] = {
+       { 0,    4,      "xoh6" },
+       { 1,    5,      "xoh12" },
+       { 2,    5,      "xoh18" }
+};
+static const unsigned int asn_MAP_xOverhead_enum2value_7[] = {
+       1,      /* xoh12(1) */
+       2,      /* xoh18(2) */
+       0       /* xoh6(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_xOverhead_specs_7 = {
+       asn_MAP_xOverhead_value2enum_7, /* "tag" => N; sorted by tag */
+       asn_MAP_xOverhead_enum2value_7, /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_xOverhead_tags_7[] = {
+       (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_xOverhead_7 = {
+       "xOverhead",
+       "xOverhead",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_xOverhead_tags_7,
+       sizeof(asn_DEF_xOverhead_tags_7)
+               /sizeof(asn_DEF_xOverhead_tags_7[0]) - 1, /* 1 */
+       asn_DEF_xOverhead_tags_7,       /* Same as above */
+       sizeof(asn_DEF_xOverhead_tags_7)
+               /sizeof(asn_DEF_xOverhead_tags_7[0]), /* 2 */
+       { &asn_OER_type_xOverhead_constr_7, &asn_PER_type_xOverhead_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_xOverhead_specs_7      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_12[] = {
+       { ATF_POINTER, 2, offsetof(struct PUSCH_ServingCellConfig__ext1, maxMIMO_Layers),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxMIMO_Layers_constr_13, &asn_PER_memb_maxMIMO_Layers_constr_13,  memb_maxMIMO_Layers_constraint_12 },
+               0, 0, /* No default value */
+               "maxMIMO-Layers"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_ServingCellConfig__ext1, processingType2Enabled),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "processingType2Enabled"
+               },
+};
+static const int asn_MAP_ext1_oms_12[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_12[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxMIMO-Layers */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* processingType2Enabled */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_12 = {
+       sizeof(struct PUSCH_ServingCellConfig__ext1),
+       offsetof(struct PUSCH_ServingCellConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_12,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_12,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_12 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_12,
+       sizeof(asn_DEF_ext1_tags_12)
+               /sizeof(asn_DEF_ext1_tags_12[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_12,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_12)
+               /sizeof(asn_DEF_ext1_tags_12[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_12,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_12  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_ServingCellConfig_1[] = {
+       { ATF_POINTER, 4, offsetof(struct PUSCH_ServingCellConfig, codeBlockGroupTransmission),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_codeBlockGroupTransmission_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "codeBlockGroupTransmission"
+               },
+       { ATF_POINTER, 3, offsetof(struct PUSCH_ServingCellConfig, rateMatching),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rateMatching_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatching"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_ServingCellConfig, xOverhead),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_xOverhead_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "xOverhead"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_ServingCellConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_PUSCH_ServingCellConfig_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_ServingCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_ServingCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* codeBlockGroupTransmission */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rateMatching */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* xOverhead */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ServingCellConfig_specs_1 = {
+       sizeof(struct PUSCH_ServingCellConfig),
+       offsetof(struct PUSCH_ServingCellConfig, _asn_ctx),
+       asn_MAP_PUSCH_ServingCellConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_PUSCH_ServingCellConfig_oms_1,  /* Optional members */
+       3, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_ServingCellConfig = {
+       "PUSCH-ServingCellConfig",
+       "PUSCH-ServingCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_ServingCellConfig_tags_1,
+       sizeof(asn_DEF_PUSCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PUSCH_ServingCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_ServingCellConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PUSCH_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_PUSCH_ServingCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_ServingCellConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_PUSCH_ServingCellConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-ServingCellConfig.h b/src/codec_utils/RRC/PUSCH-ServingCellConfig.h
new file mode 100644 (file)
index 0000000..2891558
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_ServingCellConfig_H_
+#define        _PUSCH_ServingCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR {
+       PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR_NOTHING, /* No components present */
+       PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR_release,
+       PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR_setup
+} PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR;
+typedef enum PUSCH_ServingCellConfig__rateMatching {
+       PUSCH_ServingCellConfig__rateMatching_limitedBufferRM   = 0
+} e_PUSCH_ServingCellConfig__rateMatching;
+typedef enum PUSCH_ServingCellConfig__xOverhead {
+       PUSCH_ServingCellConfig__xOverhead_xoh6 = 0,
+       PUSCH_ServingCellConfig__xOverhead_xoh12        = 1,
+       PUSCH_ServingCellConfig__xOverhead_xoh18        = 2
+} e_PUSCH_ServingCellConfig__xOverhead;
+
+/* Forward declarations */
+struct PUSCH_CodeBlockGroupTransmission;
+
+/* PUSCH-ServingCellConfig */
+typedef struct PUSCH_ServingCellConfig {
+       struct PUSCH_ServingCellConfig__codeBlockGroupTransmission {
+               PUSCH_ServingCellConfig__codeBlockGroupTransmission_PR present;
+               union PUSCH_ServingCellConfig__codeBlockGroupTransmission_u {
+                       NULL_t   release;
+                       struct PUSCH_CodeBlockGroupTransmission *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *codeBlockGroupTransmission;
+       long    *rateMatching;  /* OPTIONAL */
+       long    *xOverhead;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct PUSCH_ServingCellConfig__ext1 {
+               long    *maxMIMO_Layers;        /* OPTIONAL */
+               BOOLEAN_t       *processingType2Enabled;        /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_ServingCellConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_rateMatching_5;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_xOverhead_7;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_ServingCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ServingCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_ServingCellConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_ServingCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-TPC-CommandConfig.c b/src/codec_utils/RRC/PUSCH-TPC-CommandConfig.c
new file mode 100644 (file)
index 0000000..5ef4050
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-TPC-CommandConfig.h"
+
+static int
+memb_tpc_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 <= 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_tpc_IndexSUL_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 asn_oer_constraints_t asn_OER_memb_tpc_Index_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_tpc_Index_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_IndexSUL_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_tpc_IndexSUL_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  15 }       /* (1..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUSCH_TPC_CommandConfig_1[] = {
+       { ATF_POINTER, 3, offsetof(struct PUSCH_TPC_CommandConfig, tpc_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_tpc_Index_constr_2, &asn_PER_memb_tpc_Index_constr_2,  memb_tpc_Index_constraint_1 },
+               0, 0, /* No default value */
+               "tpc-Index"
+               },
+       { ATF_POINTER, 2, offsetof(struct PUSCH_TPC_CommandConfig, tpc_IndexSUL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_tpc_IndexSUL_constr_3, &asn_PER_memb_tpc_IndexSUL_constr_3,  memb_tpc_IndexSUL_constraint_1 },
+               0, 0, /* No default value */
+               "tpc-IndexSUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct PUSCH_TPC_CommandConfig, targetCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetCell"
+               },
+};
+static const int asn_MAP_PUSCH_TPC_CommandConfig_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_TPC_CommandConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_TPC_CommandConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tpc-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tpc-IndexSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* targetCell */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TPC_CommandConfig_specs_1 = {
+       sizeof(struct PUSCH_TPC_CommandConfig),
+       offsetof(struct PUSCH_TPC_CommandConfig, _asn_ctx),
+       asn_MAP_PUSCH_TPC_CommandConfig_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_PUSCH_TPC_CommandConfig_oms_1,  /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_TPC_CommandConfig = {
+       "PUSCH-TPC-CommandConfig",
+       "PUSCH-TPC-CommandConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_TPC_CommandConfig_tags_1,
+       sizeof(asn_DEF_PUSCH_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_PUSCH_TPC_CommandConfig_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_TPC_CommandConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PUSCH_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_PUSCH_TPC_CommandConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_TPC_CommandConfig_1,
+       3,      /* Elements count */
+       &asn_SPC_PUSCH_TPC_CommandConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-TPC-CommandConfig.h b/src/codec_utils/RRC/PUSCH-TPC-CommandConfig.h
new file mode 100644 (file)
index 0000000..2717040
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_TPC_CommandConfig_H_
+#define        _PUSCH_TPC_CommandConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "ServCellIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PUSCH-TPC-CommandConfig */
+typedef struct PUSCH_TPC_CommandConfig {
+       long    *tpc_Index;     /* OPTIONAL */
+       long    *tpc_IndexSUL;  /* OPTIONAL */
+       ServCellIndex_t *targetCell;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_TPC_CommandConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_TPC_CommandConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TPC_CommandConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_TPC_CommandConfig_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_TPC_CommandConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.c b/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.c
new file mode 100644 (file)
index 0000000..fe4eb7f
--- /dev/null
@@ -0,0 +1,187 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-TimeDomainResourceAllocation.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_k2_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 >= 0 && value <= 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 int
+memb_startSymbolAndLength_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 >= 0 && value <= 127)) {
+               /* 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_mappingType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mappingType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_k2_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_k2_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_mappingType_value2enum_3[] = {
+       { 0,    5,      "typeA" },
+       { 1,    5,      "typeB" }
+};
+static const unsigned int asn_MAP_mappingType_enum2value_3[] = {
+       0,      /* typeA(0) */
+       1       /* typeB(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mappingType_specs_3 = {
+       asn_MAP_mappingType_value2enum_3,       /* "tag" => N; sorted by tag */
+       asn_MAP_mappingType_enum2value_3,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mappingType_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_mappingType_3 = {
+       "mappingType",
+       "mappingType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mappingType_tags_3,
+       sizeof(asn_DEF_mappingType_tags_3)
+               /sizeof(asn_DEF_mappingType_tags_3[0]) - 1, /* 1 */
+       asn_DEF_mappingType_tags_3,     /* Same as above */
+       sizeof(asn_DEF_mappingType_tags_3)
+               /sizeof(asn_DEF_mappingType_tags_3[0]), /* 2 */
+       { &asn_OER_type_mappingType_constr_3, &asn_PER_type_mappingType_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mappingType_specs_3    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocation_1[] = {
+       { ATF_POINTER, 1, offsetof(struct PUSCH_TimeDomainResourceAllocation, k2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_k2_constr_2, &asn_PER_memb_k2_constr_2,  memb_k2_constraint_1 },
+               0, 0, /* No default value */
+               "k2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_TimeDomainResourceAllocation, mappingType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mappingType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mappingType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_TimeDomainResourceAllocation, startSymbolAndLength),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startSymbolAndLength_constr_6, &asn_PER_memb_startSymbolAndLength_constr_6,  memb_startSymbolAndLength_constraint_1 },
+               0, 0, /* No default value */
+               "startSymbolAndLength"
+               },
+};
+static const int asn_MAP_PUSCH_TimeDomainResourceAllocation_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PUSCH_TimeDomainResourceAllocation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* k2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mappingType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startSymbolAndLength */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1 = {
+       sizeof(struct PUSCH_TimeDomainResourceAllocation),
+       offsetof(struct PUSCH_TimeDomainResourceAllocation, _asn_ctx),
+       asn_MAP_PUSCH_TimeDomainResourceAllocation_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_PUSCH_TimeDomainResourceAllocation_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocation = {
+       "PUSCH-TimeDomainResourceAllocation",
+       "PUSCH-TimeDomainResourceAllocation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1,
+       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1)
+               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1)
+               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PUSCH_TimeDomainResourceAllocation_1,
+       3,      /* Elements count */
+       &asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.h b/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocation.h
new file mode 100644 (file)
index 0000000..c205fff
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_TimeDomainResourceAllocation_H_
+#define        _PUSCH_TimeDomainResourceAllocation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PUSCH_TimeDomainResourceAllocation__mappingType {
+       PUSCH_TimeDomainResourceAllocation__mappingType_typeA   = 0,
+       PUSCH_TimeDomainResourceAllocation__mappingType_typeB   = 1
+} e_PUSCH_TimeDomainResourceAllocation__mappingType;
+
+/* PUSCH-TimeDomainResourceAllocation */
+typedef struct PUSCH_TimeDomainResourceAllocation {
+       long    *k2;    /* OPTIONAL */
+       long     mappingType;
+       long     startSymbolAndLength;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_TimeDomainResourceAllocation_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_mappingType_3; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocation;
+extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocation_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_TimeDomainResourceAllocation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.c b/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.c
new file mode 100644 (file)
index 0000000..bd33d72
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PUSCH-TimeDomainResourceAllocationList.h"
+
+#include "PUSCH-TimeDomainResourceAllocation.h"
+static asn_oer_constraints_t asn_OER_type_PUSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+asn_per_constraints_t asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocationList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PUSCH_TimeDomainResourceAllocation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1 = {
+       sizeof(struct PUSCH_TimeDomainResourceAllocationList),
+       offsetof(struct PUSCH_TimeDomainResourceAllocationList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocationList = {
+       "PUSCH-TimeDomainResourceAllocationList",
+       "PUSCH-TimeDomainResourceAllocationList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1,
+       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1)
+               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
+       asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1)
+               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PUSCH_TimeDomainResourceAllocationList_constr_1, &asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PUSCH_TimeDomainResourceAllocationList_1,
+       1,      /* Single element */
+       &asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.h b/src/codec_utils/RRC/PUSCH-TimeDomainResourceAllocationList.h
new file mode 100644 (file)
index 0000000..174086e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PUSCH_TimeDomainResourceAllocationList_H_
+#define        _PUSCH_TimeDomainResourceAllocationList_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 PUSCH_TimeDomainResourceAllocation;
+
+/* PUSCH-TimeDomainResourceAllocationList */
+typedef struct PUSCH_TimeDomainResourceAllocationList {
+       A_SEQUENCE_OF(struct PUSCH_TimeDomainResourceAllocation) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PUSCH_TimeDomainResourceAllocationList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocationList;
+extern asn_SET_OF_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocationList_1[1];
+extern asn_per_constraints_t asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PUSCH_TimeDomainResourceAllocationList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Paging.c b/src/codec_utils/RRC/Paging.c
new file mode 100644 (file)
index 0000000..b10b228
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Paging.h"
+
+#include "PagingRecordList.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct Paging__nonCriticalExtension),
+       offsetof(struct Paging__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Paging_1[] = {
+       { ATF_POINTER, 3, offsetof(struct Paging, pagingRecordList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PagingRecordList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pagingRecordList"
+               },
+       { ATF_POINTER, 2, offsetof(struct Paging, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct Paging, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_Paging_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_Paging_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Paging_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pagingRecordList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Paging_specs_1 = {
+       sizeof(struct Paging),
+       offsetof(struct Paging, _asn_ctx),
+       asn_MAP_Paging_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_Paging_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Paging = {
+       "Paging",
+       "Paging",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Paging_tags_1,
+       sizeof(asn_DEF_Paging_tags_1)
+               /sizeof(asn_DEF_Paging_tags_1[0]), /* 1 */
+       asn_DEF_Paging_tags_1,  /* Same as above */
+       sizeof(asn_DEF_Paging_tags_1)
+               /sizeof(asn_DEF_Paging_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Paging_1,
+       3,      /* Elements count */
+       &asn_SPC_Paging_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Paging.h b/src/codec_utils/RRC/Paging.h
new file mode 100644 (file)
index 0000000..f6c2df1
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Paging_H_
+#define        _Paging_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PagingRecordList;
+
+/* Paging */
+typedef struct Paging {
+       struct PagingRecordList *pagingRecordList;      /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct Paging__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Paging_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Paging;
+extern asn_SEQUENCE_specifics_t asn_SPC_Paging_specs_1;
+extern asn_TYPE_member_t asn_MBR_Paging_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Paging_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PagingCycle.c b/src/codec_utils/RRC/PagingCycle.c
new file mode 100644 (file)
index 0000000..c2d8029
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PagingCycle.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PagingCycle_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PagingCycle_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_PagingCycle_value2enum_1[] = {
+       { 0,    4,      "rf32" },
+       { 1,    4,      "rf64" },
+       { 2,    5,      "rf128" },
+       { 3,    5,      "rf256" }
+};
+static const unsigned int asn_MAP_PagingCycle_enum2value_1[] = {
+       2,      /* rf128(2) */
+       3,      /* rf256(3) */
+       0,      /* rf32(0) */
+       1       /* rf64(1) */
+};
+const asn_INTEGER_specifics_t asn_SPC_PagingCycle_specs_1 = {
+       asn_MAP_PagingCycle_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_PagingCycle_enum2value_1,       /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_PagingCycle_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PagingCycle = {
+       "PagingCycle",
+       "PagingCycle",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_PagingCycle_tags_1,
+       sizeof(asn_DEF_PagingCycle_tags_1)
+               /sizeof(asn_DEF_PagingCycle_tags_1[0]), /* 1 */
+       asn_DEF_PagingCycle_tags_1,     /* Same as above */
+       sizeof(asn_DEF_PagingCycle_tags_1)
+               /sizeof(asn_DEF_PagingCycle_tags_1[0]), /* 1 */
+       { &asn_OER_type_PagingCycle_constr_1, &asn_PER_type_PagingCycle_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_PagingCycle_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PagingCycle.h b/src/codec_utils/RRC/PagingCycle.h
new file mode 100644 (file)
index 0000000..a4188ec
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PagingCycle_H_
+#define        _PagingCycle_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PagingCycle {
+       PagingCycle_rf32        = 0,
+       PagingCycle_rf64        = 1,
+       PagingCycle_rf128       = 2,
+       PagingCycle_rf256       = 3
+} e_PagingCycle;
+
+/* PagingCycle */
+typedef long    PagingCycle_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PagingCycle_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PagingCycle;
+extern const asn_INTEGER_specifics_t asn_SPC_PagingCycle_specs_1;
+asn_struct_free_f PagingCycle_free;
+asn_struct_print_f PagingCycle_print;
+asn_constr_check_f PagingCycle_constraint;
+ber_type_decoder_f PagingCycle_decode_ber;
+der_type_encoder_f PagingCycle_encode_der;
+xer_type_decoder_f PagingCycle_decode_xer;
+xer_type_encoder_f PagingCycle_encode_xer;
+oer_type_decoder_f PagingCycle_decode_oer;
+oer_type_encoder_f PagingCycle_encode_oer;
+per_type_decoder_f PagingCycle_decode_uper;
+per_type_encoder_f PagingCycle_encode_uper;
+per_type_decoder_f PagingCycle_decode_aper;
+per_type_encoder_f PagingCycle_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PagingCycle_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PagingRecord.c b/src/codec_utils/RRC/PagingRecord.c
new file mode 100644 (file)
index 0000000..5750afb
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PagingRecord.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_accessType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_accessType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_accessType_value2enum_3[] = {
+       { 0,    7,      "non3GPP" }
+};
+static const unsigned int asn_MAP_accessType_enum2value_3[] = {
+       0       /* non3GPP(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_accessType_specs_3 = {
+       asn_MAP_accessType_value2enum_3,        /* "tag" => N; sorted by tag */
+       asn_MAP_accessType_enum2value_3,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_accessType_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_accessType_3 = {
+       "accessType",
+       "accessType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_accessType_tags_3,
+       sizeof(asn_DEF_accessType_tags_3)
+               /sizeof(asn_DEF_accessType_tags_3[0]) - 1, /* 1 */
+       asn_DEF_accessType_tags_3,      /* Same as above */
+       sizeof(asn_DEF_accessType_tags_3)
+               /sizeof(asn_DEF_accessType_tags_3[0]), /* 2 */
+       { &asn_OER_type_accessType_constr_3, &asn_PER_type_accessType_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_accessType_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PagingRecord_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PagingRecord, ue_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_PagingUE_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-Identity"
+               },
+       { ATF_POINTER, 1, offsetof(struct PagingRecord, accessType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_accessType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "accessType"
+               },
+};
+static const int asn_MAP_PagingRecord_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_PagingRecord_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PagingRecord_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* accessType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PagingRecord_specs_1 = {
+       sizeof(struct PagingRecord),
+       offsetof(struct PagingRecord, _asn_ctx),
+       asn_MAP_PagingRecord_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_PagingRecord_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PagingRecord = {
+       "PagingRecord",
+       "PagingRecord",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PagingRecord_tags_1,
+       sizeof(asn_DEF_PagingRecord_tags_1)
+               /sizeof(asn_DEF_PagingRecord_tags_1[0]), /* 1 */
+       asn_DEF_PagingRecord_tags_1,    /* Same as above */
+       sizeof(asn_DEF_PagingRecord_tags_1)
+               /sizeof(asn_DEF_PagingRecord_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PagingRecord_1,
+       2,      /* Elements count */
+       &asn_SPC_PagingRecord_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PagingRecord.h b/src/codec_utils/RRC/PagingRecord.h
new file mode 100644 (file)
index 0000000..1dd291e
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PagingRecord_H_
+#define        _PagingRecord_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PagingUE-Identity.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PagingRecord__accessType {
+       PagingRecord__accessType_non3GPP        = 0
+} e_PagingRecord__accessType;
+
+/* PagingRecord */
+typedef struct PagingRecord {
+       PagingUE_Identity_t      ue_Identity;
+       long    *accessType;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PagingRecord_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_accessType_3;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PagingRecord;
+extern asn_SEQUENCE_specifics_t asn_SPC_PagingRecord_specs_1;
+extern asn_TYPE_member_t asn_MBR_PagingRecord_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PagingRecord_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PagingRecordList.c b/src/codec_utils/RRC/PagingRecordList.c
new file mode 100644 (file)
index 0000000..d2e3750
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PagingRecordList.h"
+
+#include "PagingRecord.h"
+static asn_oer_constraints_t asn_OER_type_PagingRecordList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_PagingRecordList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_PagingRecordList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_PagingRecord,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PagingRecordList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_PagingRecordList_specs_1 = {
+       sizeof(struct PagingRecordList),
+       offsetof(struct PagingRecordList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_PagingRecordList = {
+       "PagingRecordList",
+       "PagingRecordList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_PagingRecordList_tags_1,
+       sizeof(asn_DEF_PagingRecordList_tags_1)
+               /sizeof(asn_DEF_PagingRecordList_tags_1[0]), /* 1 */
+       asn_DEF_PagingRecordList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PagingRecordList_tags_1)
+               /sizeof(asn_DEF_PagingRecordList_tags_1[0]), /* 1 */
+       { &asn_OER_type_PagingRecordList_constr_1, &asn_PER_type_PagingRecordList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_PagingRecordList_1,
+       1,      /* Single element */
+       &asn_SPC_PagingRecordList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PagingRecordList.h b/src/codec_utils/RRC/PagingRecordList.h
new file mode 100644 (file)
index 0000000..cb91ada
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PagingRecordList_H_
+#define        _PagingRecordList_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 PagingRecord;
+
+/* PagingRecordList */
+typedef struct PagingRecordList {
+       A_SEQUENCE_OF(struct PagingRecord) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PagingRecordList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PagingRecordList;
+extern asn_SET_OF_specifics_t asn_SPC_PagingRecordList_specs_1;
+extern asn_TYPE_member_t asn_MBR_PagingRecordList_1[1];
+extern asn_per_constraints_t asn_PER_type_PagingRecordList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PagingRecordList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PagingUE-Identity.c b/src/codec_utils/RRC/PagingUE-Identity.c
new file mode 100644 (file)
index 0000000..a5e4d95
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PagingUE-Identity.h"
+
+static asn_oer_constraints_t asn_OER_type_PagingUE_Identity_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PagingUE_Identity_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_PagingUE_Identity_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PagingUE_Identity, choice.ng_5G_S_TMSI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NG_5G_S_TMSI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-5G-S-TMSI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PagingUE_Identity, choice.fullI_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_I_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fullI-RNTI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PagingUE_Identity_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ng-5G-S-TMSI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fullI-RNTI */
+};
+asn_CHOICE_specifics_t asn_SPC_PagingUE_Identity_specs_1 = {
+       sizeof(struct PagingUE_Identity),
+       offsetof(struct PagingUE_Identity, _asn_ctx),
+       offsetof(struct PagingUE_Identity, present),
+       sizeof(((struct PagingUE_Identity *)0)->present),
+       asn_MAP_PagingUE_Identity_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PagingUE_Identity = {
+       "PagingUE-Identity",
+       "PagingUE-Identity",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_PagingUE_Identity_constr_1, &asn_PER_type_PagingUE_Identity_constr_1, CHOICE_constraint },
+       asn_MBR_PagingUE_Identity_1,
+       2,      /* Elements count */
+       &asn_SPC_PagingUE_Identity_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PagingUE-Identity.h b/src/codec_utils/RRC/PagingUE-Identity.h
new file mode 100644 (file)
index 0000000..5f76f07
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PagingUE_Identity_H_
+#define        _PagingUE_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NG-5G-S-TMSI.h"
+#include "I-RNTI-Value.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PagingUE_Identity_PR {
+       PagingUE_Identity_PR_NOTHING,   /* No components present */
+       PagingUE_Identity_PR_ng_5G_S_TMSI,
+       PagingUE_Identity_PR_fullI_RNTI
+       /* Extensions may appear below */
+       
+} PagingUE_Identity_PR;
+
+/* PagingUE-Identity */
+typedef struct PagingUE_Identity {
+       PagingUE_Identity_PR present;
+       union PagingUE_Identity_u {
+               NG_5G_S_TMSI_t   ng_5G_S_TMSI;
+               I_RNTI_Value_t   fullI_RNTI;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PagingUE_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PagingUE_Identity;
+extern asn_CHOICE_specifics_t asn_SPC_PagingUE_Identity_specs_1;
+extern asn_TYPE_member_t asn_MBR_PagingUE_Identity_1[2];
+extern asn_per_constraints_t asn_PER_type_PagingUE_Identity_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PagingUE_Identity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PeriodicRNAU-TimerValue.c b/src/codec_utils/RRC/PeriodicRNAU-TimerValue.c
new file mode 100644 (file)
index 0000000..8880fda
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PeriodicRNAU-TimerValue.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PeriodicRNAU_TimerValue_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PeriodicRNAU_TimerValue_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_PeriodicRNAU_TimerValue_value2enum_1[] = {
+       { 0,    4,      "min5" },
+       { 1,    5,      "min10" },
+       { 2,    5,      "min20" },
+       { 3,    5,      "min30" },
+       { 4,    5,      "min60" },
+       { 5,    6,      "min120" },
+       { 6,    6,      "min360" },
+       { 7,    6,      "min720" }
+};
+static const unsigned int asn_MAP_PeriodicRNAU_TimerValue_enum2value_1[] = {
+       1,      /* min10(1) */
+       5,      /* min120(5) */
+       2,      /* min20(2) */
+       3,      /* min30(3) */
+       6,      /* min360(6) */
+       0,      /* min5(0) */
+       4,      /* min60(4) */
+       7       /* min720(7) */
+};
+const asn_INTEGER_specifics_t asn_SPC_PeriodicRNAU_TimerValue_specs_1 = {
+       asn_MAP_PeriodicRNAU_TimerValue_value2enum_1,   /* "tag" => N; sorted by tag */
+       asn_MAP_PeriodicRNAU_TimerValue_enum2value_1,   /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_PeriodicRNAU_TimerValue_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PeriodicRNAU_TimerValue = {
+       "PeriodicRNAU-TimerValue",
+       "PeriodicRNAU-TimerValue",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_PeriodicRNAU_TimerValue_tags_1,
+       sizeof(asn_DEF_PeriodicRNAU_TimerValue_tags_1)
+               /sizeof(asn_DEF_PeriodicRNAU_TimerValue_tags_1[0]), /* 1 */
+       asn_DEF_PeriodicRNAU_TimerValue_tags_1, /* Same as above */
+       sizeof(asn_DEF_PeriodicRNAU_TimerValue_tags_1)
+               /sizeof(asn_DEF_PeriodicRNAU_TimerValue_tags_1[0]), /* 1 */
+       { &asn_OER_type_PeriodicRNAU_TimerValue_constr_1, &asn_PER_type_PeriodicRNAU_TimerValue_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_PeriodicRNAU_TimerValue_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PeriodicRNAU-TimerValue.h b/src/codec_utils/RRC/PeriodicRNAU-TimerValue.h
new file mode 100644 (file)
index 0000000..862cd23
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PeriodicRNAU_TimerValue_H_
+#define        _PeriodicRNAU_TimerValue_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PeriodicRNAU_TimerValue {
+       PeriodicRNAU_TimerValue_min5    = 0,
+       PeriodicRNAU_TimerValue_min10   = 1,
+       PeriodicRNAU_TimerValue_min20   = 2,
+       PeriodicRNAU_TimerValue_min30   = 3,
+       PeriodicRNAU_TimerValue_min60   = 4,
+       PeriodicRNAU_TimerValue_min120  = 5,
+       PeriodicRNAU_TimerValue_min360  = 6,
+       PeriodicRNAU_TimerValue_min720  = 7
+} e_PeriodicRNAU_TimerValue;
+
+/* PeriodicRNAU-TimerValue */
+typedef long    PeriodicRNAU_TimerValue_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PeriodicRNAU_TimerValue_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PeriodicRNAU_TimerValue;
+extern const asn_INTEGER_specifics_t asn_SPC_PeriodicRNAU_TimerValue_specs_1;
+asn_struct_free_f PeriodicRNAU_TimerValue_free;
+asn_struct_print_f PeriodicRNAU_TimerValue_print;
+asn_constr_check_f PeriodicRNAU_TimerValue_constraint;
+ber_type_decoder_f PeriodicRNAU_TimerValue_decode_ber;
+der_type_encoder_f PeriodicRNAU_TimerValue_encode_der;
+xer_type_decoder_f PeriodicRNAU_TimerValue_decode_xer;
+xer_type_encoder_f PeriodicRNAU_TimerValue_encode_xer;
+oer_type_decoder_f PeriodicRNAU_TimerValue_decode_oer;
+oer_type_encoder_f PeriodicRNAU_TimerValue_encode_oer;
+per_type_decoder_f PeriodicRNAU_TimerValue_decode_uper;
+per_type_encoder_f PeriodicRNAU_TimerValue_encode_uper;
+per_type_decoder_f PeriodicRNAU_TimerValue_decode_aper;
+per_type_encoder_f PeriodicRNAU_TimerValue_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PeriodicRNAU_TimerValue_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PeriodicalReportConfig.c b/src/codec_utils/RRC/PeriodicalReportConfig.c
new file mode 100644 (file)
index 0000000..802c42b
--- /dev/null
@@ -0,0 +1,260 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PeriodicalReportConfig.h"
+
+#include "MeasReportQuantity.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_maxReportCells_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 <= 8)) {
+               /* 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_maxNrofRS_IndexesToReport_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 <= 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_type_reportAmount_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportAmount_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxReportCells_constr_14 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxReportCells_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNrofRS_IndexesToReport_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNrofRS_IndexesToReport_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_reportAmount_value2enum_4[] = {
+       { 0,    2,      "r1" },
+       { 1,    2,      "r2" },
+       { 2,    2,      "r4" },
+       { 3,    2,      "r8" },
+       { 4,    3,      "r16" },
+       { 5,    3,      "r32" },
+       { 6,    3,      "r64" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_reportAmount_enum2value_4[] = {
+       7,      /* infinity(7) */
+       0,      /* r1(0) */
+       4,      /* r16(4) */
+       1,      /* r2(1) */
+       5,      /* r32(5) */
+       2,      /* r4(2) */
+       6,      /* r64(6) */
+       3       /* r8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportAmount_specs_4 = {
+       asn_MAP_reportAmount_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_reportAmount_enum2value_4,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportAmount_tags_4[] = {
+       (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_reportAmount_4 = {
+       "reportAmount",
+       "reportAmount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportAmount_tags_4,
+       sizeof(asn_DEF_reportAmount_tags_4)
+               /sizeof(asn_DEF_reportAmount_tags_4[0]) - 1, /* 1 */
+       asn_DEF_reportAmount_tags_4,    /* Same as above */
+       sizeof(asn_DEF_reportAmount_tags_4)
+               /sizeof(asn_DEF_reportAmount_tags_4[0]), /* 2 */
+       { &asn_OER_type_reportAmount_constr_4, &asn_PER_type_reportAmount_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportAmount_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PeriodicalReportConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, rsType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NR_RS_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, reportInterval),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportInterval,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportInterval"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, reportAmount),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportAmount_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportAmount"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, reportQuantityCell),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantityCell"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, maxReportCells),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxReportCells_constr_14, &asn_PER_memb_maxReportCells_constr_14,  memb_maxReportCells_constraint_1 },
+               0, 0, /* No default value */
+               "maxReportCells"
+               },
+       { ATF_POINTER, 2, offsetof(struct PeriodicalReportConfig, reportQuantityRS_Indexes),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantityRS-Indexes"
+               },
+       { ATF_POINTER, 1, offsetof(struct PeriodicalReportConfig, maxNrofRS_IndexesToReport),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNrofRS_IndexesToReport_constr_16, &asn_PER_memb_maxNrofRS_IndexesToReport_constr_16,  memb_maxNrofRS_IndexesToReport_constraint_1 },
+               0, 0, /* No default value */
+               "maxNrofRS-IndexesToReport"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, includeBeamMeasurements),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "includeBeamMeasurements"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfig, useWhiteCellList),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useWhiteCellList"
+               },
+};
+static const int asn_MAP_PeriodicalReportConfig_oms_1[] = { 5, 6 };
+static const ber_tlv_tag_t asn_DEF_PeriodicalReportConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PeriodicalReportConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportInterval */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportAmount */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* reportQuantityCell */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* maxReportCells */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* reportQuantityRS-Indexes */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* maxNrofRS-IndexesToReport */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* includeBeamMeasurements */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* useWhiteCellList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PeriodicalReportConfig_specs_1 = {
+       sizeof(struct PeriodicalReportConfig),
+       offsetof(struct PeriodicalReportConfig, _asn_ctx),
+       asn_MAP_PeriodicalReportConfig_tag2el_1,
+       9,      /* Count of tags in the map */
+       asn_MAP_PeriodicalReportConfig_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       9,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PeriodicalReportConfig = {
+       "PeriodicalReportConfig",
+       "PeriodicalReportConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PeriodicalReportConfig_tags_1,
+       sizeof(asn_DEF_PeriodicalReportConfig_tags_1)
+               /sizeof(asn_DEF_PeriodicalReportConfig_tags_1[0]), /* 1 */
+       asn_DEF_PeriodicalReportConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PeriodicalReportConfig_tags_1)
+               /sizeof(asn_DEF_PeriodicalReportConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PeriodicalReportConfig_1,
+       9,      /* Elements count */
+       &asn_SPC_PeriodicalReportConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PeriodicalReportConfig.h b/src/codec_utils/RRC/PeriodicalReportConfig.h
new file mode 100644 (file)
index 0000000..8a181e8
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PeriodicalReportConfig_H_
+#define        _PeriodicalReportConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NR-RS-Type.h"
+#include "ReportInterval.h"
+#include <NativeEnumerated.h>
+#include "MeasReportQuantity.h"
+#include <NativeInteger.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PeriodicalReportConfig__reportAmount {
+       PeriodicalReportConfig__reportAmount_r1 = 0,
+       PeriodicalReportConfig__reportAmount_r2 = 1,
+       PeriodicalReportConfig__reportAmount_r4 = 2,
+       PeriodicalReportConfig__reportAmount_r8 = 3,
+       PeriodicalReportConfig__reportAmount_r16        = 4,
+       PeriodicalReportConfig__reportAmount_r32        = 5,
+       PeriodicalReportConfig__reportAmount_r64        = 6,
+       PeriodicalReportConfig__reportAmount_infinity   = 7
+} e_PeriodicalReportConfig__reportAmount;
+
+/* Forward declarations */
+struct MeasReportQuantity;
+
+/* PeriodicalReportConfig */
+typedef struct PeriodicalReportConfig {
+       NR_RS_Type_t     rsType;
+       ReportInterval_t         reportInterval;
+       long     reportAmount;
+       MeasReportQuantity_t     reportQuantityCell;
+       long     maxReportCells;
+       struct MeasReportQuantity       *reportQuantityRS_Indexes;      /* OPTIONAL */
+       long    *maxNrofRS_IndexesToReport;     /* OPTIONAL */
+       BOOLEAN_t        includeBeamMeasurements;
+       BOOLEAN_t        useWhiteCellList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PeriodicalReportConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportAmount_4;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PeriodicalReportConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PeriodicalReportConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PeriodicalReportConfig_1[9];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PeriodicalReportConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PeriodicalReportConfigInterRAT.c b/src/codec_utils/RRC/PeriodicalReportConfigInterRAT.c
new file mode 100644 (file)
index 0000000..4f5f893
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PeriodicalReportConfigInterRAT.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_maxReportCells_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 <= 8)) {
+               /* 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_reportAmount_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportAmount_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxReportCells_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxReportCells_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_reportAmount_value2enum_3[] = {
+       { 0,    2,      "r1" },
+       { 1,    2,      "r2" },
+       { 2,    2,      "r4" },
+       { 3,    2,      "r8" },
+       { 4,    3,      "r16" },
+       { 5,    3,      "r32" },
+       { 6,    3,      "r64" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_reportAmount_enum2value_3[] = {
+       7,      /* infinity(7) */
+       0,      /* r1(0) */
+       4,      /* r16(4) */
+       1,      /* r2(1) */
+       5,      /* r32(5) */
+       2,      /* r4(2) */
+       6,      /* r64(6) */
+       3       /* r8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reportAmount_specs_3 = {
+       asn_MAP_reportAmount_value2enum_3,      /* "tag" => N; sorted by tag */
+       asn_MAP_reportAmount_enum2value_3,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reportAmount_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_reportAmount_3 = {
+       "reportAmount",
+       "reportAmount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reportAmount_tags_3,
+       sizeof(asn_DEF_reportAmount_tags_3)
+               /sizeof(asn_DEF_reportAmount_tags_3[0]) - 1, /* 1 */
+       asn_DEF_reportAmount_tags_3,    /* Same as above */
+       sizeof(asn_DEF_reportAmount_tags_3)
+               /sizeof(asn_DEF_reportAmount_tags_3[0]), /* 2 */
+       { &asn_OER_type_reportAmount_constr_3, &asn_PER_type_reportAmount_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reportAmount_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PeriodicalReportConfigInterRAT_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfigInterRAT, reportInterval),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportInterval,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportInterval"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfigInterRAT, reportAmount),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reportAmount_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportAmount"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfigInterRAT, reportQuantity),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasReportQuantity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportQuantity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PeriodicalReportConfigInterRAT, maxReportCells),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxReportCells_constr_13, &asn_PER_memb_maxReportCells_constr_13,  memb_maxReportCells_constraint_1 },
+               0, 0, /* No default value */
+               "maxReportCells"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_PeriodicalReportConfigInterRAT_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PeriodicalReportConfigInterRAT_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportInterval */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reportAmount */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportQuantity */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* maxReportCells */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PeriodicalReportConfigInterRAT_specs_1 = {
+       sizeof(struct PeriodicalReportConfigInterRAT),
+       offsetof(struct PeriodicalReportConfigInterRAT, _asn_ctx),
+       asn_MAP_PeriodicalReportConfigInterRAT_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_PeriodicalReportConfigInterRAT = {
+       "PeriodicalReportConfigInterRAT",
+       "PeriodicalReportConfigInterRAT",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PeriodicalReportConfigInterRAT_tags_1,
+       sizeof(asn_DEF_PeriodicalReportConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_PeriodicalReportConfigInterRAT_tags_1[0]), /* 1 */
+       asn_DEF_PeriodicalReportConfigInterRAT_tags_1,  /* Same as above */
+       sizeof(asn_DEF_PeriodicalReportConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_PeriodicalReportConfigInterRAT_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PeriodicalReportConfigInterRAT_1,
+       4,      /* Elements count */
+       &asn_SPC_PeriodicalReportConfigInterRAT_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PeriodicalReportConfigInterRAT.h b/src/codec_utils/RRC/PeriodicalReportConfigInterRAT.h
new file mode 100644 (file)
index 0000000..2370964
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PeriodicalReportConfigInterRAT_H_
+#define        _PeriodicalReportConfigInterRAT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ReportInterval.h"
+#include <NativeEnumerated.h>
+#include "MeasReportQuantity.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PeriodicalReportConfigInterRAT__reportAmount {
+       PeriodicalReportConfigInterRAT__reportAmount_r1 = 0,
+       PeriodicalReportConfigInterRAT__reportAmount_r2 = 1,
+       PeriodicalReportConfigInterRAT__reportAmount_r4 = 2,
+       PeriodicalReportConfigInterRAT__reportAmount_r8 = 3,
+       PeriodicalReportConfigInterRAT__reportAmount_r16        = 4,
+       PeriodicalReportConfigInterRAT__reportAmount_r32        = 5,
+       PeriodicalReportConfigInterRAT__reportAmount_r64        = 6,
+       PeriodicalReportConfigInterRAT__reportAmount_infinity   = 7
+} e_PeriodicalReportConfigInterRAT__reportAmount;
+
+/* PeriodicalReportConfigInterRAT */
+typedef struct PeriodicalReportConfigInterRAT {
+       ReportInterval_t         reportInterval;
+       long     reportAmount;
+       MeasReportQuantity_t     reportQuantity;
+       long     maxReportCells;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PeriodicalReportConfigInterRAT_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reportAmount_3;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PeriodicalReportConfigInterRAT;
+extern asn_SEQUENCE_specifics_t asn_SPC_PeriodicalReportConfigInterRAT_specs_1;
+extern asn_TYPE_member_t asn_MBR_PeriodicalReportConfigInterRAT_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PeriodicalReportConfigInterRAT_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-Parameters.c b/src/codec_utils/RRC/Phy-Parameters.c
new file mode 100644 (file)
index 0000000..59a510e
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-Parameters.h"
+
+#include "Phy-ParametersCommon.h"
+#include "Phy-ParametersXDD-Diff.h"
+#include "Phy-ParametersFRX-Diff.h"
+#include "Phy-ParametersFR1.h"
+#include "Phy-ParametersFR2.h"
+asn_TYPE_member_t asn_MBR_Phy_Parameters_1[] = {
+       { ATF_POINTER, 5, offsetof(struct Phy_Parameters, phy_ParametersCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersCommon"
+               },
+       { ATF_POINTER, 4, offsetof(struct Phy_Parameters, phy_ParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersXDD-Diff"
+               },
+       { ATF_POINTER, 3, offsetof(struct Phy_Parameters, phy_ParametersFRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersFRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersFRX-Diff"
+               },
+       { ATF_POINTER, 2, offsetof(struct Phy_Parameters, phy_ParametersFR1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersFR1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersFR1"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_Parameters, phy_ParametersFR2),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersFR2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersFR2"
+               },
+};
+static const int asn_MAP_Phy_Parameters_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_Phy_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* phy-ParametersCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* phy-ParametersXDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* phy-ParametersFRX-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* phy-ParametersFR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* phy-ParametersFR2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_Parameters_specs_1 = {
+       sizeof(struct Phy_Parameters),
+       offsetof(struct Phy_Parameters, _asn_ctx),
+       asn_MAP_Phy_Parameters_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_Phy_Parameters_oms_1,   /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_Parameters = {
+       "Phy-Parameters",
+       "Phy-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_Parameters_tags_1,
+       sizeof(asn_DEF_Phy_Parameters_tags_1)
+               /sizeof(asn_DEF_Phy_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_Phy_Parameters_tags_1,  /* Same as above */
+       sizeof(asn_DEF_Phy_Parameters_tags_1)
+               /sizeof(asn_DEF_Phy_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_Parameters_1,
+       5,      /* Elements count */
+       &asn_SPC_Phy_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-Parameters.h b/src/codec_utils/RRC/Phy-Parameters.h
new file mode 100644 (file)
index 0000000..ca08eb2
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_Parameters_H_
+#define        _Phy_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct Phy_ParametersCommon;
+struct Phy_ParametersXDD_Diff;
+struct Phy_ParametersFRX_Diff;
+struct Phy_ParametersFR1;
+struct Phy_ParametersFR2;
+
+/* Phy-Parameters */
+typedef struct Phy_Parameters {
+       struct Phy_ParametersCommon     *phy_ParametersCommon;  /* OPTIONAL */
+       struct Phy_ParametersXDD_Diff   *phy_ParametersXDD_Diff;        /* OPTIONAL */
+       struct Phy_ParametersFRX_Diff   *phy_ParametersFRX_Diff;        /* OPTIONAL */
+       struct Phy_ParametersFR1        *phy_ParametersFR1;     /* OPTIONAL */
+       struct Phy_ParametersFR2        *phy_ParametersFR2;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_Parameters_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersCommon.c b/src/codec_utils/RRC/Phy-ParametersCommon.c
new file mode 100644 (file)
index 0000000..8a4e11d
--- /dev/null
@@ -0,0 +1,2084 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersCommon.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.
+ */
+/*
+ * 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.
+ */
+/*
+ * 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.
+ */
+/*
+ * 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_csi_RS_CFRA_ForHO_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_RS_CFRA_ForHO_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicPRB_BundlingDL_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicPRB_BundlingDL_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_CSI_ReportPUCCH_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_CSI_ReportPUCCH_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_CSI_ReportPUSCH_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_CSI_ReportPUSCH_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nzp_CSI_RS_IntefMgmt_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nzp_CSI_RS_IntefMgmt_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_type2_SP_CSI_Feedback_LongPUCCH_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type2_SP_CSI_Feedback_LongPUCCH_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_precoderGranularityCORESET_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_precoderGranularityCORESET_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicHARQ_ACK_Codebook_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicHARQ_ACK_Codebook_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_semiStaticHARQ_ACK_Codebook_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_semiStaticHARQ_ACK_Codebook_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_spatialBundlingHARQ_ACK_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_spatialBundlingHARQ_ACK_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicBetaOffsetInd_HARQ_ACK_CSI_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicBetaOffsetInd_HARQ_ACK_CSI_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_Repetition_F1_3_4_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_Repetition_F1_3_4_constr_24 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ra_Type0_PUSCH_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ra_Type0_PUSCH_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicSwitchRA_Type0_1_PDSCH_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicSwitchRA_Type0_1_PDSCH_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicSwitchRA_Type0_1_PUSCH_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicSwitchRA_Type0_1_PUSCH_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_MappingTypeA_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_MappingTypeA_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_MappingTypeB_constr_34 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_MappingTypeB_constr_34 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_interleavingVRB_ToPRB_PDSCH_constr_36 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_interleavingVRB_ToPRB_PDSCH_constr_36 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_interSlotFreqHopping_PUSCH_constr_38 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_interSlotFreqHopping_PUSCH_constr_38 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_type1_PUSCH_RepetitionMultiSlots_constr_40 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type1_PUSCH_RepetitionMultiSlots_constr_40 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_type2_PUSCH_RepetitionMultiSlots_constr_42 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type2_PUSCH_RepetitionMultiSlots_constr_42 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_RepetitionMultiSlots_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_RepetitionMultiSlots_constr_44 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_RepetitionMultiSlots_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_RepetitionMultiSlots_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_downlinkSPS_constr_48 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_downlinkSPS_constr_48 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_configuredUL_GrantType1_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_configuredUL_GrantType1_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_configuredUL_GrantType2_constr_52 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_configuredUL_GrantType2_constr_52 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pre_EmptIndication_DL_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pre_EmptIndication_DL_constr_54 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cbg_TransIndication_DL_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cbg_TransIndication_DL_constr_56 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cbg_TransIndication_UL_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cbg_TransIndication_UL_constr_58 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cbg_FlushIndication_DL_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cbg_FlushIndication_DL_constr_60 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_constr_62 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rateMatchingResrcSetSemi_Static_constr_64 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rateMatchingResrcSetSemi_Static_constr_64 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rateMatchingResrcSetDynamic_constr_66 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rateMatchingResrcSetDynamic_constr_66 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bwp_SwitchingDelay_constr_68 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bwp_SwitchingDelay_constr_68 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eutra_RS_SINR_measurement_constr_73 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eutra_RS_SINR_measurement_constr_73 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_RS_CFRA_ForHO_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_RS_CFRA_ForHO_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_RS_CFRA_ForHO_specs_2 = {
+       asn_MAP_csi_RS_CFRA_ForHO_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_csi_RS_CFRA_ForHO_enum2value_2, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_RS_CFRA_ForHO_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_csi_RS_CFRA_ForHO_2 = {
+       "csi-RS-CFRA-ForHO",
+       "csi-RS-CFRA-ForHO",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_RS_CFRA_ForHO_tags_2,
+       sizeof(asn_DEF_csi_RS_CFRA_ForHO_tags_2)
+               /sizeof(asn_DEF_csi_RS_CFRA_ForHO_tags_2[0]) - 1, /* 1 */
+       asn_DEF_csi_RS_CFRA_ForHO_tags_2,       /* Same as above */
+       sizeof(asn_DEF_csi_RS_CFRA_ForHO_tags_2)
+               /sizeof(asn_DEF_csi_RS_CFRA_ForHO_tags_2[0]), /* 2 */
+       { &asn_OER_type_csi_RS_CFRA_ForHO_constr_2, &asn_PER_type_csi_RS_CFRA_ForHO_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_RS_CFRA_ForHO_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicPRB_BundlingDL_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicPRB_BundlingDL_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicPRB_BundlingDL_specs_4 = {
+       asn_MAP_dynamicPRB_BundlingDL_value2enum_4,     /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicPRB_BundlingDL_enum2value_4,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicPRB_BundlingDL_tags_4[] = {
+       (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_dynamicPRB_BundlingDL_4 = {
+       "dynamicPRB-BundlingDL",
+       "dynamicPRB-BundlingDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicPRB_BundlingDL_tags_4,
+       sizeof(asn_DEF_dynamicPRB_BundlingDL_tags_4)
+               /sizeof(asn_DEF_dynamicPRB_BundlingDL_tags_4[0]) - 1, /* 1 */
+       asn_DEF_dynamicPRB_BundlingDL_tags_4,   /* Same as above */
+       sizeof(asn_DEF_dynamicPRB_BundlingDL_tags_4)
+               /sizeof(asn_DEF_dynamicPRB_BundlingDL_tags_4[0]), /* 2 */
+       { &asn_OER_type_dynamicPRB_BundlingDL_constr_4, &asn_PER_type_dynamicPRB_BundlingDL_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicPRB_BundlingDL_specs_4  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_CSI_ReportPUCCH_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_CSI_ReportPUCCH_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_CSI_ReportPUCCH_specs_6 = {
+       asn_MAP_sp_CSI_ReportPUCCH_value2enum_6,        /* "tag" => N; sorted by tag */
+       asn_MAP_sp_CSI_ReportPUCCH_enum2value_6,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_CSI_ReportPUCCH_tags_6[] = {
+       (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_sp_CSI_ReportPUCCH_6 = {
+       "sp-CSI-ReportPUCCH",
+       "sp-CSI-ReportPUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_CSI_ReportPUCCH_tags_6,
+       sizeof(asn_DEF_sp_CSI_ReportPUCCH_tags_6)
+               /sizeof(asn_DEF_sp_CSI_ReportPUCCH_tags_6[0]) - 1, /* 1 */
+       asn_DEF_sp_CSI_ReportPUCCH_tags_6,      /* Same as above */
+       sizeof(asn_DEF_sp_CSI_ReportPUCCH_tags_6)
+               /sizeof(asn_DEF_sp_CSI_ReportPUCCH_tags_6[0]), /* 2 */
+       { &asn_OER_type_sp_CSI_ReportPUCCH_constr_6, &asn_PER_type_sp_CSI_ReportPUCCH_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_CSI_ReportPUCCH_specs_6     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_CSI_ReportPUSCH_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_CSI_ReportPUSCH_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_CSI_ReportPUSCH_specs_8 = {
+       asn_MAP_sp_CSI_ReportPUSCH_value2enum_8,        /* "tag" => N; sorted by tag */
+       asn_MAP_sp_CSI_ReportPUSCH_enum2value_8,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_CSI_ReportPUSCH_tags_8[] = {
+       (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_sp_CSI_ReportPUSCH_8 = {
+       "sp-CSI-ReportPUSCH",
+       "sp-CSI-ReportPUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_CSI_ReportPUSCH_tags_8,
+       sizeof(asn_DEF_sp_CSI_ReportPUSCH_tags_8)
+               /sizeof(asn_DEF_sp_CSI_ReportPUSCH_tags_8[0]) - 1, /* 1 */
+       asn_DEF_sp_CSI_ReportPUSCH_tags_8,      /* Same as above */
+       sizeof(asn_DEF_sp_CSI_ReportPUSCH_tags_8)
+               /sizeof(asn_DEF_sp_CSI_ReportPUSCH_tags_8[0]), /* 2 */
+       { &asn_OER_type_sp_CSI_ReportPUSCH_constr_8, &asn_PER_type_sp_CSI_ReportPUSCH_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_CSI_ReportPUSCH_specs_8     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nzp_CSI_RS_IntefMgmt_value2enum_10[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_nzp_CSI_RS_IntefMgmt_enum2value_10[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nzp_CSI_RS_IntefMgmt_specs_10 = {
+       asn_MAP_nzp_CSI_RS_IntefMgmt_value2enum_10,     /* "tag" => N; sorted by tag */
+       asn_MAP_nzp_CSI_RS_IntefMgmt_enum2value_10,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10[] = {
+       (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_nzp_CSI_RS_IntefMgmt_10 = {
+       "nzp-CSI-RS-IntefMgmt",
+       "nzp-CSI-RS-IntefMgmt",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10,
+       sizeof(asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10)
+               /sizeof(asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10[0]) - 1, /* 1 */
+       asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10,   /* Same as above */
+       sizeof(asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10)
+               /sizeof(asn_DEF_nzp_CSI_RS_IntefMgmt_tags_10[0]), /* 2 */
+       { &asn_OER_type_nzp_CSI_RS_IntefMgmt_constr_10, &asn_PER_type_nzp_CSI_RS_IntefMgmt_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nzp_CSI_RS_IntefMgmt_specs_10  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_type2_SP_CSI_Feedback_LongPUCCH_value2enum_12[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_type2_SP_CSI_Feedback_LongPUCCH_enum2value_12[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type2_SP_CSI_Feedback_LongPUCCH_specs_12 = {
+       asn_MAP_type2_SP_CSI_Feedback_LongPUCCH_value2enum_12,  /* "tag" => N; sorted by tag */
+       asn_MAP_type2_SP_CSI_Feedback_LongPUCCH_enum2value_12,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12[] = {
+       (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_type2_SP_CSI_Feedback_LongPUCCH_12 = {
+       "type2-SP-CSI-Feedback-LongPUCCH",
+       "type2-SP-CSI-Feedback-LongPUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12,
+       sizeof(asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12)
+               /sizeof(asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12[0]) - 1, /* 1 */
+       asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12,        /* Same as above */
+       sizeof(asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12)
+               /sizeof(asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_tags_12[0]), /* 2 */
+       { &asn_OER_type_type2_SP_CSI_Feedback_LongPUCCH_constr_12, &asn_PER_type_type2_SP_CSI_Feedback_LongPUCCH_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type2_SP_CSI_Feedback_LongPUCCH_specs_12       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_precoderGranularityCORESET_value2enum_14[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_precoderGranularityCORESET_enum2value_14[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_precoderGranularityCORESET_specs_14 = {
+       asn_MAP_precoderGranularityCORESET_value2enum_14,       /* "tag" => N; sorted by tag */
+       asn_MAP_precoderGranularityCORESET_enum2value_14,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_precoderGranularityCORESET_tags_14[] = {
+       (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_precoderGranularityCORESET_14 = {
+       "precoderGranularityCORESET",
+       "precoderGranularityCORESET",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_precoderGranularityCORESET_tags_14,
+       sizeof(asn_DEF_precoderGranularityCORESET_tags_14)
+               /sizeof(asn_DEF_precoderGranularityCORESET_tags_14[0]) - 1, /* 1 */
+       asn_DEF_precoderGranularityCORESET_tags_14,     /* Same as above */
+       sizeof(asn_DEF_precoderGranularityCORESET_tags_14)
+               /sizeof(asn_DEF_precoderGranularityCORESET_tags_14[0]), /* 2 */
+       { &asn_OER_type_precoderGranularityCORESET_constr_14, &asn_PER_type_precoderGranularityCORESET_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_precoderGranularityCORESET_specs_14    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicHARQ_ACK_Codebook_value2enum_16[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicHARQ_ACK_Codebook_enum2value_16[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicHARQ_ACK_Codebook_specs_16 = {
+       asn_MAP_dynamicHARQ_ACK_Codebook_value2enum_16, /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicHARQ_ACK_Codebook_enum2value_16, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicHARQ_ACK_Codebook_tags_16[] = {
+       (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_dynamicHARQ_ACK_Codebook_16 = {
+       "dynamicHARQ-ACK-Codebook",
+       "dynamicHARQ-ACK-Codebook",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicHARQ_ACK_Codebook_tags_16,
+       sizeof(asn_DEF_dynamicHARQ_ACK_Codebook_tags_16)
+               /sizeof(asn_DEF_dynamicHARQ_ACK_Codebook_tags_16[0]) - 1, /* 1 */
+       asn_DEF_dynamicHARQ_ACK_Codebook_tags_16,       /* Same as above */
+       sizeof(asn_DEF_dynamicHARQ_ACK_Codebook_tags_16)
+               /sizeof(asn_DEF_dynamicHARQ_ACK_Codebook_tags_16[0]), /* 2 */
+       { &asn_OER_type_dynamicHARQ_ACK_Codebook_constr_16, &asn_PER_type_dynamicHARQ_ACK_Codebook_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicHARQ_ACK_Codebook_specs_16      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_semiStaticHARQ_ACK_Codebook_value2enum_18[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_semiStaticHARQ_ACK_Codebook_enum2value_18[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_semiStaticHARQ_ACK_Codebook_specs_18 = {
+       asn_MAP_semiStaticHARQ_ACK_Codebook_value2enum_18,      /* "tag" => N; sorted by tag */
+       asn_MAP_semiStaticHARQ_ACK_Codebook_enum2value_18,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18[] = {
+       (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_semiStaticHARQ_ACK_Codebook_18 = {
+       "semiStaticHARQ-ACK-Codebook",
+       "semiStaticHARQ-ACK-Codebook",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18,
+       sizeof(asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18)
+               /sizeof(asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18[0]) - 1, /* 1 */
+       asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18,    /* Same as above */
+       sizeof(asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18)
+               /sizeof(asn_DEF_semiStaticHARQ_ACK_Codebook_tags_18[0]), /* 2 */
+       { &asn_OER_type_semiStaticHARQ_ACK_Codebook_constr_18, &asn_PER_type_semiStaticHARQ_ACK_Codebook_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_semiStaticHARQ_ACK_Codebook_specs_18   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_spatialBundlingHARQ_ACK_value2enum_20[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_spatialBundlingHARQ_ACK_enum2value_20[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_spatialBundlingHARQ_ACK_specs_20 = {
+       asn_MAP_spatialBundlingHARQ_ACK_value2enum_20,  /* "tag" => N; sorted by tag */
+       asn_MAP_spatialBundlingHARQ_ACK_enum2value_20,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_spatialBundlingHARQ_ACK_tags_20[] = {
+       (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_spatialBundlingHARQ_ACK_20 = {
+       "spatialBundlingHARQ-ACK",
+       "spatialBundlingHARQ-ACK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_spatialBundlingHARQ_ACK_tags_20,
+       sizeof(asn_DEF_spatialBundlingHARQ_ACK_tags_20)
+               /sizeof(asn_DEF_spatialBundlingHARQ_ACK_tags_20[0]) - 1, /* 1 */
+       asn_DEF_spatialBundlingHARQ_ACK_tags_20,        /* Same as above */
+       sizeof(asn_DEF_spatialBundlingHARQ_ACK_tags_20)
+               /sizeof(asn_DEF_spatialBundlingHARQ_ACK_tags_20[0]), /* 2 */
+       { &asn_OER_type_spatialBundlingHARQ_ACK_constr_20, &asn_PER_type_spatialBundlingHARQ_ACK_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_spatialBundlingHARQ_ACK_specs_20       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicBetaOffsetInd_HARQ_ACK_CSI_value2enum_22[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicBetaOffsetInd_HARQ_ACK_CSI_enum2value_22[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicBetaOffsetInd_HARQ_ACK_CSI_specs_22 = {
+       asn_MAP_dynamicBetaOffsetInd_HARQ_ACK_CSI_value2enum_22,        /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicBetaOffsetInd_HARQ_ACK_CSI_enum2value_22,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22[] = {
+       (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_dynamicBetaOffsetInd_HARQ_ACK_CSI_22 = {
+       "dynamicBetaOffsetInd-HARQ-ACK-CSI",
+       "dynamicBetaOffsetInd-HARQ-ACK-CSI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22,
+       sizeof(asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22)
+               /sizeof(asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22[0]) - 1, /* 1 */
+       asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22,      /* Same as above */
+       sizeof(asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22)
+               /sizeof(asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_tags_22[0]), /* 2 */
+       { &asn_OER_type_dynamicBetaOffsetInd_HARQ_ACK_CSI_constr_22, &asn_PER_type_dynamicBetaOffsetInd_HARQ_ACK_CSI_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicBetaOffsetInd_HARQ_ACK_CSI_specs_22     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_Repetition_F1_3_4_value2enum_24[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_Repetition_F1_3_4_enum2value_24[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_Repetition_F1_3_4_specs_24 = {
+       asn_MAP_pucch_Repetition_F1_3_4_value2enum_24,  /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_Repetition_F1_3_4_enum2value_24,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_Repetition_F1_3_4_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_Repetition_F1_3_4_24 = {
+       "pucch-Repetition-F1-3-4",
+       "pucch-Repetition-F1-3-4",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_Repetition_F1_3_4_tags_24,
+       sizeof(asn_DEF_pucch_Repetition_F1_3_4_tags_24)
+               /sizeof(asn_DEF_pucch_Repetition_F1_3_4_tags_24[0]) - 1, /* 1 */
+       asn_DEF_pucch_Repetition_F1_3_4_tags_24,        /* Same as above */
+       sizeof(asn_DEF_pucch_Repetition_F1_3_4_tags_24)
+               /sizeof(asn_DEF_pucch_Repetition_F1_3_4_tags_24[0]), /* 2 */
+       { &asn_OER_type_pucch_Repetition_F1_3_4_constr_24, &asn_PER_type_pucch_Repetition_F1_3_4_constr_24, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_Repetition_F1_3_4_specs_24       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ra_Type0_PUSCH_value2enum_26[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_ra_Type0_PUSCH_enum2value_26[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ra_Type0_PUSCH_specs_26 = {
+       asn_MAP_ra_Type0_PUSCH_value2enum_26,   /* "tag" => N; sorted by tag */
+       asn_MAP_ra_Type0_PUSCH_enum2value_26,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ra_Type0_PUSCH_tags_26[] = {
+       (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_ra_Type0_PUSCH_26 = {
+       "ra-Type0-PUSCH",
+       "ra-Type0-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ra_Type0_PUSCH_tags_26,
+       sizeof(asn_DEF_ra_Type0_PUSCH_tags_26)
+               /sizeof(asn_DEF_ra_Type0_PUSCH_tags_26[0]) - 1, /* 1 */
+       asn_DEF_ra_Type0_PUSCH_tags_26, /* Same as above */
+       sizeof(asn_DEF_ra_Type0_PUSCH_tags_26)
+               /sizeof(asn_DEF_ra_Type0_PUSCH_tags_26[0]), /* 2 */
+       { &asn_OER_type_ra_Type0_PUSCH_constr_26, &asn_PER_type_ra_Type0_PUSCH_constr_26, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ra_Type0_PUSCH_specs_26        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicSwitchRA_Type0_1_PDSCH_value2enum_28[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicSwitchRA_Type0_1_PDSCH_enum2value_28[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicSwitchRA_Type0_1_PDSCH_specs_28 = {
+       asn_MAP_dynamicSwitchRA_Type0_1_PDSCH_value2enum_28,    /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicSwitchRA_Type0_1_PDSCH_enum2value_28,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_28 = {
+       "dynamicSwitchRA-Type0-1-PDSCH",
+       "dynamicSwitchRA-Type0-1-PDSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28,
+       sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28)
+               /sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28[0]) - 1, /* 1 */
+       asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28,  /* Same as above */
+       sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28)
+               /sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_tags_28[0]), /* 2 */
+       { &asn_OER_type_dynamicSwitchRA_Type0_1_PDSCH_constr_28, &asn_PER_type_dynamicSwitchRA_Type0_1_PDSCH_constr_28, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicSwitchRA_Type0_1_PDSCH_specs_28 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicSwitchRA_Type0_1_PUSCH_value2enum_30[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicSwitchRA_Type0_1_PUSCH_enum2value_30[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicSwitchRA_Type0_1_PUSCH_specs_30 = {
+       asn_MAP_dynamicSwitchRA_Type0_1_PUSCH_value2enum_30,    /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicSwitchRA_Type0_1_PUSCH_enum2value_30,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30[] = {
+       (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_30 = {
+       "dynamicSwitchRA-Type0-1-PUSCH",
+       "dynamicSwitchRA-Type0-1-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30,
+       sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30)
+               /sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30[0]) - 1, /* 1 */
+       asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30,  /* Same as above */
+       sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30)
+               /sizeof(asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_tags_30[0]), /* 2 */
+       { &asn_OER_type_dynamicSwitchRA_Type0_1_PUSCH_constr_30, &asn_PER_type_dynamicSwitchRA_Type0_1_PUSCH_constr_30, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicSwitchRA_Type0_1_PUSCH_specs_30 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_MappingTypeA_value2enum_32[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdsch_MappingTypeA_enum2value_32[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_MappingTypeA_specs_32 = {
+       asn_MAP_pdsch_MappingTypeA_value2enum_32,       /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_MappingTypeA_enum2value_32,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_MappingTypeA_tags_32[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_MappingTypeA_32 = {
+       "pdsch-MappingTypeA",
+       "pdsch-MappingTypeA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_MappingTypeA_tags_32,
+       sizeof(asn_DEF_pdsch_MappingTypeA_tags_32)
+               /sizeof(asn_DEF_pdsch_MappingTypeA_tags_32[0]) - 1, /* 1 */
+       asn_DEF_pdsch_MappingTypeA_tags_32,     /* Same as above */
+       sizeof(asn_DEF_pdsch_MappingTypeA_tags_32)
+               /sizeof(asn_DEF_pdsch_MappingTypeA_tags_32[0]), /* 2 */
+       { &asn_OER_type_pdsch_MappingTypeA_constr_32, &asn_PER_type_pdsch_MappingTypeA_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_MappingTypeA_specs_32    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_MappingTypeB_value2enum_34[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdsch_MappingTypeB_enum2value_34[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_MappingTypeB_specs_34 = {
+       asn_MAP_pdsch_MappingTypeB_value2enum_34,       /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_MappingTypeB_enum2value_34,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_MappingTypeB_tags_34[] = {
+       (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_pdsch_MappingTypeB_34 = {
+       "pdsch-MappingTypeB",
+       "pdsch-MappingTypeB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_MappingTypeB_tags_34,
+       sizeof(asn_DEF_pdsch_MappingTypeB_tags_34)
+               /sizeof(asn_DEF_pdsch_MappingTypeB_tags_34[0]) - 1, /* 1 */
+       asn_DEF_pdsch_MappingTypeB_tags_34,     /* Same as above */
+       sizeof(asn_DEF_pdsch_MappingTypeB_tags_34)
+               /sizeof(asn_DEF_pdsch_MappingTypeB_tags_34[0]), /* 2 */
+       { &asn_OER_type_pdsch_MappingTypeB_constr_34, &asn_PER_type_pdsch_MappingTypeB_constr_34, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_MappingTypeB_specs_34    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_interleavingVRB_ToPRB_PDSCH_value2enum_36[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_interleavingVRB_ToPRB_PDSCH_enum2value_36[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interleavingVRB_ToPRB_PDSCH_specs_36 = {
+       asn_MAP_interleavingVRB_ToPRB_PDSCH_value2enum_36,      /* "tag" => N; sorted by tag */
+       asn_MAP_interleavingVRB_ToPRB_PDSCH_enum2value_36,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36[] = {
+       (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_interleavingVRB_ToPRB_PDSCH_36 = {
+       "interleavingVRB-ToPRB-PDSCH",
+       "interleavingVRB-ToPRB-PDSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36,
+       sizeof(asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36)
+               /sizeof(asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36[0]) - 1, /* 1 */
+       asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36,    /* Same as above */
+       sizeof(asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36)
+               /sizeof(asn_DEF_interleavingVRB_ToPRB_PDSCH_tags_36[0]), /* 2 */
+       { &asn_OER_type_interleavingVRB_ToPRB_PDSCH_constr_36, &asn_PER_type_interleavingVRB_ToPRB_PDSCH_constr_36, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_interleavingVRB_ToPRB_PDSCH_specs_36   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_interSlotFreqHopping_PUSCH_value2enum_38[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_interSlotFreqHopping_PUSCH_enum2value_38[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_interSlotFreqHopping_PUSCH_specs_38 = {
+       asn_MAP_interSlotFreqHopping_PUSCH_value2enum_38,       /* "tag" => N; sorted by tag */
+       asn_MAP_interSlotFreqHopping_PUSCH_enum2value_38,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_interSlotFreqHopping_PUSCH_tags_38[] = {
+       (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_interSlotFreqHopping_PUSCH_38 = {
+       "interSlotFreqHopping-PUSCH",
+       "interSlotFreqHopping-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_interSlotFreqHopping_PUSCH_tags_38,
+       sizeof(asn_DEF_interSlotFreqHopping_PUSCH_tags_38)
+               /sizeof(asn_DEF_interSlotFreqHopping_PUSCH_tags_38[0]) - 1, /* 1 */
+       asn_DEF_interSlotFreqHopping_PUSCH_tags_38,     /* Same as above */
+       sizeof(asn_DEF_interSlotFreqHopping_PUSCH_tags_38)
+               /sizeof(asn_DEF_interSlotFreqHopping_PUSCH_tags_38[0]), /* 2 */
+       { &asn_OER_type_interSlotFreqHopping_PUSCH_constr_38, &asn_PER_type_interSlotFreqHopping_PUSCH_constr_38, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_interSlotFreqHopping_PUSCH_specs_38    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_type1_PUSCH_RepetitionMultiSlots_value2enum_40[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_type1_PUSCH_RepetitionMultiSlots_enum2value_40[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type1_PUSCH_RepetitionMultiSlots_specs_40 = {
+       asn_MAP_type1_PUSCH_RepetitionMultiSlots_value2enum_40, /* "tag" => N; sorted by tag */
+       asn_MAP_type1_PUSCH_RepetitionMultiSlots_enum2value_40, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40[] = {
+       (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_type1_PUSCH_RepetitionMultiSlots_40 = {
+       "type1-PUSCH-RepetitionMultiSlots",
+       "type1-PUSCH-RepetitionMultiSlots",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40,
+       sizeof(asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40)
+               /sizeof(asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40[0]) - 1, /* 1 */
+       asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40,       /* Same as above */
+       sizeof(asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40)
+               /sizeof(asn_DEF_type1_PUSCH_RepetitionMultiSlots_tags_40[0]), /* 2 */
+       { &asn_OER_type_type1_PUSCH_RepetitionMultiSlots_constr_40, &asn_PER_type_type1_PUSCH_RepetitionMultiSlots_constr_40, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type1_PUSCH_RepetitionMultiSlots_specs_40      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_type2_PUSCH_RepetitionMultiSlots_value2enum_42[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_type2_PUSCH_RepetitionMultiSlots_enum2value_42[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type2_PUSCH_RepetitionMultiSlots_specs_42 = {
+       asn_MAP_type2_PUSCH_RepetitionMultiSlots_value2enum_42, /* "tag" => N; sorted by tag */
+       asn_MAP_type2_PUSCH_RepetitionMultiSlots_enum2value_42, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42[] = {
+       (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_type2_PUSCH_RepetitionMultiSlots_42 = {
+       "type2-PUSCH-RepetitionMultiSlots",
+       "type2-PUSCH-RepetitionMultiSlots",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42,
+       sizeof(asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42)
+               /sizeof(asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42[0]) - 1, /* 1 */
+       asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42,       /* Same as above */
+       sizeof(asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42)
+               /sizeof(asn_DEF_type2_PUSCH_RepetitionMultiSlots_tags_42[0]), /* 2 */
+       { &asn_OER_type_type2_PUSCH_RepetitionMultiSlots_constr_42, &asn_PER_type_type2_PUSCH_RepetitionMultiSlots_constr_42, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type2_PUSCH_RepetitionMultiSlots_specs_42      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_RepetitionMultiSlots_value2enum_44[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pusch_RepetitionMultiSlots_enum2value_44[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_RepetitionMultiSlots_specs_44 = {
+       asn_MAP_pusch_RepetitionMultiSlots_value2enum_44,       /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_RepetitionMultiSlots_enum2value_44,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_RepetitionMultiSlots_tags_44[] = {
+       (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_RepetitionMultiSlots_44 = {
+       "pusch-RepetitionMultiSlots",
+       "pusch-RepetitionMultiSlots",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_RepetitionMultiSlots_tags_44,
+       sizeof(asn_DEF_pusch_RepetitionMultiSlots_tags_44)
+               /sizeof(asn_DEF_pusch_RepetitionMultiSlots_tags_44[0]) - 1, /* 1 */
+       asn_DEF_pusch_RepetitionMultiSlots_tags_44,     /* Same as above */
+       sizeof(asn_DEF_pusch_RepetitionMultiSlots_tags_44)
+               /sizeof(asn_DEF_pusch_RepetitionMultiSlots_tags_44[0]), /* 2 */
+       { &asn_OER_type_pusch_RepetitionMultiSlots_constr_44, &asn_PER_type_pusch_RepetitionMultiSlots_constr_44, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_RepetitionMultiSlots_specs_44    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_RepetitionMultiSlots_value2enum_46[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdsch_RepetitionMultiSlots_enum2value_46[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_RepetitionMultiSlots_specs_46 = {
+       asn_MAP_pdsch_RepetitionMultiSlots_value2enum_46,       /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_RepetitionMultiSlots_enum2value_46,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_RepetitionMultiSlots_tags_46[] = {
+       (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_RepetitionMultiSlots_46 = {
+       "pdsch-RepetitionMultiSlots",
+       "pdsch-RepetitionMultiSlots",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_RepetitionMultiSlots_tags_46,
+       sizeof(asn_DEF_pdsch_RepetitionMultiSlots_tags_46)
+               /sizeof(asn_DEF_pdsch_RepetitionMultiSlots_tags_46[0]) - 1, /* 1 */
+       asn_DEF_pdsch_RepetitionMultiSlots_tags_46,     /* Same as above */
+       sizeof(asn_DEF_pdsch_RepetitionMultiSlots_tags_46)
+               /sizeof(asn_DEF_pdsch_RepetitionMultiSlots_tags_46[0]), /* 2 */
+       { &asn_OER_type_pdsch_RepetitionMultiSlots_constr_46, &asn_PER_type_pdsch_RepetitionMultiSlots_constr_46, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_RepetitionMultiSlots_specs_46    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_downlinkSPS_value2enum_48[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_downlinkSPS_enum2value_48[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_downlinkSPS_specs_48 = {
+       asn_MAP_downlinkSPS_value2enum_48,      /* "tag" => N; sorted by tag */
+       asn_MAP_downlinkSPS_enum2value_48,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_downlinkSPS_tags_48[] = {
+       (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_downlinkSPS_48 = {
+       "downlinkSPS",
+       "downlinkSPS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_downlinkSPS_tags_48,
+       sizeof(asn_DEF_downlinkSPS_tags_48)
+               /sizeof(asn_DEF_downlinkSPS_tags_48[0]) - 1, /* 1 */
+       asn_DEF_downlinkSPS_tags_48,    /* Same as above */
+       sizeof(asn_DEF_downlinkSPS_tags_48)
+               /sizeof(asn_DEF_downlinkSPS_tags_48[0]), /* 2 */
+       { &asn_OER_type_downlinkSPS_constr_48, &asn_PER_type_downlinkSPS_constr_48, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_downlinkSPS_specs_48   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_configuredUL_GrantType1_value2enum_50[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_configuredUL_GrantType1_enum2value_50[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_configuredUL_GrantType1_specs_50 = {
+       asn_MAP_configuredUL_GrantType1_value2enum_50,  /* "tag" => N; sorted by tag */
+       asn_MAP_configuredUL_GrantType1_enum2value_50,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_configuredUL_GrantType1_tags_50[] = {
+       (ASN_TAG_CLASS_CONTEXT | (24 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_configuredUL_GrantType1_50 = {
+       "configuredUL-GrantType1",
+       "configuredUL-GrantType1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_configuredUL_GrantType1_tags_50,
+       sizeof(asn_DEF_configuredUL_GrantType1_tags_50)
+               /sizeof(asn_DEF_configuredUL_GrantType1_tags_50[0]) - 1, /* 1 */
+       asn_DEF_configuredUL_GrantType1_tags_50,        /* Same as above */
+       sizeof(asn_DEF_configuredUL_GrantType1_tags_50)
+               /sizeof(asn_DEF_configuredUL_GrantType1_tags_50[0]), /* 2 */
+       { &asn_OER_type_configuredUL_GrantType1_constr_50, &asn_PER_type_configuredUL_GrantType1_constr_50, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_configuredUL_GrantType1_specs_50       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_configuredUL_GrantType2_value2enum_52[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_configuredUL_GrantType2_enum2value_52[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_configuredUL_GrantType2_specs_52 = {
+       asn_MAP_configuredUL_GrantType2_value2enum_52,  /* "tag" => N; sorted by tag */
+       asn_MAP_configuredUL_GrantType2_enum2value_52,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_configuredUL_GrantType2_tags_52[] = {
+       (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_configuredUL_GrantType2_52 = {
+       "configuredUL-GrantType2",
+       "configuredUL-GrantType2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_configuredUL_GrantType2_tags_52,
+       sizeof(asn_DEF_configuredUL_GrantType2_tags_52)
+               /sizeof(asn_DEF_configuredUL_GrantType2_tags_52[0]) - 1, /* 1 */
+       asn_DEF_configuredUL_GrantType2_tags_52,        /* Same as above */
+       sizeof(asn_DEF_configuredUL_GrantType2_tags_52)
+               /sizeof(asn_DEF_configuredUL_GrantType2_tags_52[0]), /* 2 */
+       { &asn_OER_type_configuredUL_GrantType2_constr_52, &asn_PER_type_configuredUL_GrantType2_constr_52, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_configuredUL_GrantType2_specs_52       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pre_EmptIndication_DL_value2enum_54[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pre_EmptIndication_DL_enum2value_54[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pre_EmptIndication_DL_specs_54 = {
+       asn_MAP_pre_EmptIndication_DL_value2enum_54,    /* "tag" => N; sorted by tag */
+       asn_MAP_pre_EmptIndication_DL_enum2value_54,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pre_EmptIndication_DL_tags_54[] = {
+       (ASN_TAG_CLASS_CONTEXT | (26 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pre_EmptIndication_DL_54 = {
+       "pre-EmptIndication-DL",
+       "pre-EmptIndication-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pre_EmptIndication_DL_tags_54,
+       sizeof(asn_DEF_pre_EmptIndication_DL_tags_54)
+               /sizeof(asn_DEF_pre_EmptIndication_DL_tags_54[0]) - 1, /* 1 */
+       asn_DEF_pre_EmptIndication_DL_tags_54,  /* Same as above */
+       sizeof(asn_DEF_pre_EmptIndication_DL_tags_54)
+               /sizeof(asn_DEF_pre_EmptIndication_DL_tags_54[0]), /* 2 */
+       { &asn_OER_type_pre_EmptIndication_DL_constr_54, &asn_PER_type_pre_EmptIndication_DL_constr_54, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pre_EmptIndication_DL_specs_54 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cbg_TransIndication_DL_value2enum_56[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_cbg_TransIndication_DL_enum2value_56[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cbg_TransIndication_DL_specs_56 = {
+       asn_MAP_cbg_TransIndication_DL_value2enum_56,   /* "tag" => N; sorted by tag */
+       asn_MAP_cbg_TransIndication_DL_enum2value_56,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cbg_TransIndication_DL_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (27 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cbg_TransIndication_DL_56 = {
+       "cbg-TransIndication-DL",
+       "cbg-TransIndication-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cbg_TransIndication_DL_tags_56,
+       sizeof(asn_DEF_cbg_TransIndication_DL_tags_56)
+               /sizeof(asn_DEF_cbg_TransIndication_DL_tags_56[0]) - 1, /* 1 */
+       asn_DEF_cbg_TransIndication_DL_tags_56, /* Same as above */
+       sizeof(asn_DEF_cbg_TransIndication_DL_tags_56)
+               /sizeof(asn_DEF_cbg_TransIndication_DL_tags_56[0]), /* 2 */
+       { &asn_OER_type_cbg_TransIndication_DL_constr_56, &asn_PER_type_cbg_TransIndication_DL_constr_56, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cbg_TransIndication_DL_specs_56        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cbg_TransIndication_UL_value2enum_58[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_cbg_TransIndication_UL_enum2value_58[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cbg_TransIndication_UL_specs_58 = {
+       asn_MAP_cbg_TransIndication_UL_value2enum_58,   /* "tag" => N; sorted by tag */
+       asn_MAP_cbg_TransIndication_UL_enum2value_58,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cbg_TransIndication_UL_tags_58[] = {
+       (ASN_TAG_CLASS_CONTEXT | (28 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cbg_TransIndication_UL_58 = {
+       "cbg-TransIndication-UL",
+       "cbg-TransIndication-UL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cbg_TransIndication_UL_tags_58,
+       sizeof(asn_DEF_cbg_TransIndication_UL_tags_58)
+               /sizeof(asn_DEF_cbg_TransIndication_UL_tags_58[0]) - 1, /* 1 */
+       asn_DEF_cbg_TransIndication_UL_tags_58, /* Same as above */
+       sizeof(asn_DEF_cbg_TransIndication_UL_tags_58)
+               /sizeof(asn_DEF_cbg_TransIndication_UL_tags_58[0]), /* 2 */
+       { &asn_OER_type_cbg_TransIndication_UL_constr_58, &asn_PER_type_cbg_TransIndication_UL_constr_58, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cbg_TransIndication_UL_specs_58        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_cbg_FlushIndication_DL_value2enum_60[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_cbg_FlushIndication_DL_enum2value_60[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cbg_FlushIndication_DL_specs_60 = {
+       asn_MAP_cbg_FlushIndication_DL_value2enum_60,   /* "tag" => N; sorted by tag */
+       asn_MAP_cbg_FlushIndication_DL_enum2value_60,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cbg_FlushIndication_DL_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (29 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cbg_FlushIndication_DL_60 = {
+       "cbg-FlushIndication-DL",
+       "cbg-FlushIndication-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cbg_FlushIndication_DL_tags_60,
+       sizeof(asn_DEF_cbg_FlushIndication_DL_tags_60)
+               /sizeof(asn_DEF_cbg_FlushIndication_DL_tags_60[0]) - 1, /* 1 */
+       asn_DEF_cbg_FlushIndication_DL_tags_60, /* Same as above */
+       sizeof(asn_DEF_cbg_FlushIndication_DL_tags_60)
+               /sizeof(asn_DEF_cbg_FlushIndication_DL_tags_60[0]), /* 2 */
+       { &asn_OER_type_cbg_FlushIndication_DL_constr_60, &asn_PER_type_cbg_FlushIndication_DL_constr_60, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cbg_FlushIndication_DL_specs_60        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_value2enum_62[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_enum2value_62[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_specs_62 = {
+       asn_MAP_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_value2enum_62,        /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_enum2value_62,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62[] = {
+       (ASN_TAG_CLASS_CONTEXT | (30 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_62 = {
+       "dynamicHARQ-ACK-CodeB-CBG-Retx-DL",
+       "dynamicHARQ-ACK-CodeB-CBG-Retx-DL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62,
+       sizeof(asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62)
+               /sizeof(asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62[0]) - 1, /* 1 */
+       asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62,      /* Same as above */
+       sizeof(asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62)
+               /sizeof(asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_tags_62[0]), /* 2 */
+       { &asn_OER_type_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_constr_62, &asn_PER_type_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_constr_62, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_specs_62     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rateMatchingResrcSetSemi_Static_value2enum_64[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_rateMatchingResrcSetSemi_Static_enum2value_64[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rateMatchingResrcSetSemi_Static_specs_64 = {
+       asn_MAP_rateMatchingResrcSetSemi_Static_value2enum_64,  /* "tag" => N; sorted by tag */
+       asn_MAP_rateMatchingResrcSetSemi_Static_enum2value_64,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchingResrcSetSemi_Static_tags_64[] = {
+       (ASN_TAG_CLASS_CONTEXT | (31 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchingResrcSetSemi_Static_64 = {
+       "rateMatchingResrcSetSemi-Static",
+       "rateMatchingResrcSetSemi-Static",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rateMatchingResrcSetSemi_Static_tags_64,
+       sizeof(asn_DEF_rateMatchingResrcSetSemi_Static_tags_64)
+               /sizeof(asn_DEF_rateMatchingResrcSetSemi_Static_tags_64[0]) - 1, /* 1 */
+       asn_DEF_rateMatchingResrcSetSemi_Static_tags_64,        /* Same as above */
+       sizeof(asn_DEF_rateMatchingResrcSetSemi_Static_tags_64)
+               /sizeof(asn_DEF_rateMatchingResrcSetSemi_Static_tags_64[0]), /* 2 */
+       { &asn_OER_type_rateMatchingResrcSetSemi_Static_constr_64, &asn_PER_type_rateMatchingResrcSetSemi_Static_constr_64, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rateMatchingResrcSetSemi_Static_specs_64       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rateMatchingResrcSetDynamic_value2enum_66[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_rateMatchingResrcSetDynamic_enum2value_66[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rateMatchingResrcSetDynamic_specs_66 = {
+       asn_MAP_rateMatchingResrcSetDynamic_value2enum_66,      /* "tag" => N; sorted by tag */
+       asn_MAP_rateMatchingResrcSetDynamic_enum2value_66,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchingResrcSetDynamic_tags_66[] = {
+       (ASN_TAG_CLASS_CONTEXT | (32 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchingResrcSetDynamic_66 = {
+       "rateMatchingResrcSetDynamic",
+       "rateMatchingResrcSetDynamic",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rateMatchingResrcSetDynamic_tags_66,
+       sizeof(asn_DEF_rateMatchingResrcSetDynamic_tags_66)
+               /sizeof(asn_DEF_rateMatchingResrcSetDynamic_tags_66[0]) - 1, /* 1 */
+       asn_DEF_rateMatchingResrcSetDynamic_tags_66,    /* Same as above */
+       sizeof(asn_DEF_rateMatchingResrcSetDynamic_tags_66)
+               /sizeof(asn_DEF_rateMatchingResrcSetDynamic_tags_66[0]), /* 2 */
+       { &asn_OER_type_rateMatchingResrcSetDynamic_constr_66, &asn_PER_type_rateMatchingResrcSetDynamic_constr_66, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rateMatchingResrcSetDynamic_specs_66   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bwp_SwitchingDelay_value2enum_68[] = {
+       { 0,    5,      "type1" },
+       { 1,    5,      "type2" }
+};
+static const unsigned int asn_MAP_bwp_SwitchingDelay_enum2value_68[] = {
+       0,      /* type1(0) */
+       1       /* type2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bwp_SwitchingDelay_specs_68 = {
+       asn_MAP_bwp_SwitchingDelay_value2enum_68,       /* "tag" => N; sorted by tag */
+       asn_MAP_bwp_SwitchingDelay_enum2value_68,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bwp_SwitchingDelay_tags_68[] = {
+       (ASN_TAG_CLASS_CONTEXT | (33 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_bwp_SwitchingDelay_68 = {
+       "bwp-SwitchingDelay",
+       "bwp-SwitchingDelay",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bwp_SwitchingDelay_tags_68,
+       sizeof(asn_DEF_bwp_SwitchingDelay_tags_68)
+               /sizeof(asn_DEF_bwp_SwitchingDelay_tags_68[0]) - 1, /* 1 */
+       asn_DEF_bwp_SwitchingDelay_tags_68,     /* Same as above */
+       sizeof(asn_DEF_bwp_SwitchingDelay_tags_68)
+               /sizeof(asn_DEF_bwp_SwitchingDelay_tags_68[0]), /* 2 */
+       { &asn_OER_type_bwp_SwitchingDelay_constr_68, &asn_PER_type_bwp_SwitchingDelay_constr_68, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bwp_SwitchingDelay_specs_68    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_eutra_RS_SINR_measurement_value2enum_73[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_eutra_RS_SINR_measurement_enum2value_73[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_eutra_RS_SINR_measurement_specs_73 = {
+       asn_MAP_eutra_RS_SINR_measurement_value2enum_73,        /* "tag" => N; sorted by tag */
+       asn_MAP_eutra_RS_SINR_measurement_enum2value_73,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_eutra_RS_SINR_measurement_tags_73[] = {
+       (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_eutra_RS_SINR_measurement_73 = {
+       "eutra-RS-SINR-measurement",
+       "eutra-RS-SINR-measurement",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_eutra_RS_SINR_measurement_tags_73,
+       sizeof(asn_DEF_eutra_RS_SINR_measurement_tags_73)
+               /sizeof(asn_DEF_eutra_RS_SINR_measurement_tags_73[0]) - 1, /* 1 */
+       asn_DEF_eutra_RS_SINR_measurement_tags_73,      /* Same as above */
+       sizeof(asn_DEF_eutra_RS_SINR_measurement_tags_73)
+               /sizeof(asn_DEF_eutra_RS_SINR_measurement_tags_73[0]), /* 2 */
+       { &asn_OER_type_eutra_RS_SINR_measurement_constr_73, &asn_PER_type_eutra_RS_SINR_measurement_constr_73, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_eutra_RS_SINR_measurement_specs_73     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_72[] = {
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersCommon__ext1, eutra_RS_SINR_measurement),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_eutra_RS_SINR_measurement_73,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra-RS-SINR-measurement"
+               },
+};
+static const int asn_MAP_ext1_oms_72[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_72[] = {
+       (ASN_TAG_CLASS_CONTEXT | (34 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_72[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* eutra-RS-SINR-measurement */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_72 = {
+       sizeof(struct Phy_ParametersCommon__ext1),
+       offsetof(struct Phy_ParametersCommon__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_72,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_72,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_72 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_72,
+       sizeof(asn_DEF_ext1_tags_72)
+               /sizeof(asn_DEF_ext1_tags_72[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_72,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_72)
+               /sizeof(asn_DEF_ext1_tags_72[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_72,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_72  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersCommon_1[] = {
+       { ATF_POINTER, 35, offsetof(struct Phy_ParametersCommon, csi_RS_CFRA_ForHO),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_RS_CFRA_ForHO_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-CFRA-ForHO"
+               },
+       { ATF_POINTER, 34, offsetof(struct Phy_ParametersCommon, dynamicPRB_BundlingDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicPRB_BundlingDL_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicPRB-BundlingDL"
+               },
+       { ATF_POINTER, 33, offsetof(struct Phy_ParametersCommon, sp_CSI_ReportPUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_CSI_ReportPUCCH_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-CSI-ReportPUCCH"
+               },
+       { ATF_POINTER, 32, offsetof(struct Phy_ParametersCommon, sp_CSI_ReportPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_CSI_ReportPUSCH_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-CSI-ReportPUSCH"
+               },
+       { ATF_POINTER, 31, offsetof(struct Phy_ParametersCommon, nzp_CSI_RS_IntefMgmt),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nzp_CSI_RS_IntefMgmt_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nzp-CSI-RS-IntefMgmt"
+               },
+       { ATF_POINTER, 30, offsetof(struct Phy_ParametersCommon, type2_SP_CSI_Feedback_LongPUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type2-SP-CSI-Feedback-LongPUCCH"
+               },
+       { ATF_POINTER, 29, offsetof(struct Phy_ParametersCommon, precoderGranularityCORESET),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_precoderGranularityCORESET_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "precoderGranularityCORESET"
+               },
+       { ATF_POINTER, 28, offsetof(struct Phy_ParametersCommon, dynamicHARQ_ACK_Codebook),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicHARQ_ACK_Codebook_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicHARQ-ACK-Codebook"
+               },
+       { ATF_POINTER, 27, offsetof(struct Phy_ParametersCommon, semiStaticHARQ_ACK_Codebook),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_semiStaticHARQ_ACK_Codebook_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiStaticHARQ-ACK-Codebook"
+               },
+       { ATF_POINTER, 26, offsetof(struct Phy_ParametersCommon, spatialBundlingHARQ_ACK),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_spatialBundlingHARQ_ACK_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spatialBundlingHARQ-ACK"
+               },
+       { ATF_POINTER, 25, offsetof(struct Phy_ParametersCommon, dynamicBetaOffsetInd_HARQ_ACK_CSI),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicBetaOffsetInd-HARQ-ACK-CSI"
+               },
+       { ATF_POINTER, 24, offsetof(struct Phy_ParametersCommon, pucch_Repetition_F1_3_4),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_Repetition_F1_3_4_24,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-Repetition-F1-3-4"
+               },
+       { ATF_POINTER, 23, offsetof(struct Phy_ParametersCommon, ra_Type0_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ra_Type0_PUSCH_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-Type0-PUSCH"
+               },
+       { ATF_POINTER, 22, offsetof(struct Phy_ParametersCommon, dynamicSwitchRA_Type0_1_PDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicSwitchRA-Type0-1-PDSCH"
+               },
+       { ATF_POINTER, 21, offsetof(struct Phy_ParametersCommon, dynamicSwitchRA_Type0_1_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicSwitchRA-Type0-1-PUSCH"
+               },
+       { ATF_POINTER, 20, offsetof(struct Phy_ParametersCommon, pdsch_MappingTypeA),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_MappingTypeA_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-MappingTypeA"
+               },
+       { ATF_POINTER, 19, offsetof(struct Phy_ParametersCommon, pdsch_MappingTypeB),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_MappingTypeB_34,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-MappingTypeB"
+               },
+       { ATF_POINTER, 18, offsetof(struct Phy_ParametersCommon, interleavingVRB_ToPRB_PDSCH),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_interleavingVRB_ToPRB_PDSCH_36,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interleavingVRB-ToPRB-PDSCH"
+               },
+       { ATF_POINTER, 17, offsetof(struct Phy_ParametersCommon, interSlotFreqHopping_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_interSlotFreqHopping_PUSCH_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interSlotFreqHopping-PUSCH"
+               },
+       { ATF_POINTER, 16, offsetof(struct Phy_ParametersCommon, type1_PUSCH_RepetitionMultiSlots),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type1_PUSCH_RepetitionMultiSlots_40,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type1-PUSCH-RepetitionMultiSlots"
+               },
+       { ATF_POINTER, 15, offsetof(struct Phy_ParametersCommon, type2_PUSCH_RepetitionMultiSlots),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type2_PUSCH_RepetitionMultiSlots_42,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type2-PUSCH-RepetitionMultiSlots"
+               },
+       { ATF_POINTER, 14, offsetof(struct Phy_ParametersCommon, pusch_RepetitionMultiSlots),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_RepetitionMultiSlots_44,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-RepetitionMultiSlots"
+               },
+       { ATF_POINTER, 13, offsetof(struct Phy_ParametersCommon, pdsch_RepetitionMultiSlots),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_RepetitionMultiSlots_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-RepetitionMultiSlots"
+               },
+       { ATF_POINTER, 12, offsetof(struct Phy_ParametersCommon, downlinkSPS),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_downlinkSPS_48,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkSPS"
+               },
+       { ATF_POINTER, 11, offsetof(struct Phy_ParametersCommon, configuredUL_GrantType1),
+               (ASN_TAG_CLASS_CONTEXT | (24 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_configuredUL_GrantType1_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configuredUL-GrantType1"
+               },
+       { ATF_POINTER, 10, offsetof(struct Phy_ParametersCommon, configuredUL_GrantType2),
+               (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_configuredUL_GrantType2_52,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "configuredUL-GrantType2"
+               },
+       { ATF_POINTER, 9, offsetof(struct Phy_ParametersCommon, pre_EmptIndication_DL),
+               (ASN_TAG_CLASS_CONTEXT | (26 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pre_EmptIndication_DL_54,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pre-EmptIndication-DL"
+               },
+       { ATF_POINTER, 8, offsetof(struct Phy_ParametersCommon, cbg_TransIndication_DL),
+               (ASN_TAG_CLASS_CONTEXT | (27 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cbg_TransIndication_DL_56,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cbg-TransIndication-DL"
+               },
+       { ATF_POINTER, 7, offsetof(struct Phy_ParametersCommon, cbg_TransIndication_UL),
+               (ASN_TAG_CLASS_CONTEXT | (28 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cbg_TransIndication_UL_58,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cbg-TransIndication-UL"
+               },
+       { ATF_POINTER, 6, offsetof(struct Phy_ParametersCommon, cbg_FlushIndication_DL),
+               (ASN_TAG_CLASS_CONTEXT | (29 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cbg_FlushIndication_DL_60,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cbg-FlushIndication-DL"
+               },
+       { ATF_POINTER, 5, offsetof(struct Phy_ParametersCommon, dynamicHARQ_ACK_CodeB_CBG_Retx_DL),
+               (ASN_TAG_CLASS_CONTEXT | (30 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_62,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicHARQ-ACK-CodeB-CBG-Retx-DL"
+               },
+       { ATF_POINTER, 4, offsetof(struct Phy_ParametersCommon, rateMatchingResrcSetSemi_Static),
+               (ASN_TAG_CLASS_CONTEXT | (31 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rateMatchingResrcSetSemi_Static_64,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchingResrcSetSemi-Static"
+               },
+       { ATF_POINTER, 3, offsetof(struct Phy_ParametersCommon, rateMatchingResrcSetDynamic),
+               (ASN_TAG_CLASS_CONTEXT | (32 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rateMatchingResrcSetDynamic_66,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchingResrcSetDynamic"
+               },
+       { ATF_POINTER, 2, offsetof(struct Phy_ParametersCommon, bwp_SwitchingDelay),
+               (ASN_TAG_CLASS_CONTEXT | (33 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bwp_SwitchingDelay_68,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-SwitchingDelay"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersCommon, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (34 << 2)),
+               0,
+               &asn_DEF_ext1_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_Phy_ParametersCommon_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, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS-CFRA-ForHO */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dynamicPRB-BundlingDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sp-CSI-ReportPUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sp-CSI-ReportPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nzp-CSI-RS-IntefMgmt */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* type2-SP-CSI-Feedback-LongPUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* precoderGranularityCORESET */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* dynamicHARQ-ACK-Codebook */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* semiStaticHARQ-ACK-Codebook */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* spatialBundlingHARQ-ACK */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* dynamicBetaOffsetInd-HARQ-ACK-CSI */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* pucch-Repetition-F1-3-4 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* ra-Type0-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* dynamicSwitchRA-Type0-1-PDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* dynamicSwitchRA-Type0-1-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* pdsch-MappingTypeA */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* pdsch-MappingTypeB */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* interleavingVRB-ToPRB-PDSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* interSlotFreqHopping-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* type1-PUSCH-RepetitionMultiSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* type2-PUSCH-RepetitionMultiSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* pusch-RepetitionMultiSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* pdsch-RepetitionMultiSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 }, /* downlinkSPS */
+    { (ASN_TAG_CLASS_CONTEXT | (24 << 2)), 24, 0, 0 }, /* configuredUL-GrantType1 */
+    { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 25, 0, 0 }, /* configuredUL-GrantType2 */
+    { (ASN_TAG_CLASS_CONTEXT | (26 << 2)), 26, 0, 0 }, /* pre-EmptIndication-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (27 << 2)), 27, 0, 0 }, /* cbg-TransIndication-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (28 << 2)), 28, 0, 0 }, /* cbg-TransIndication-UL */
+    { (ASN_TAG_CLASS_CONTEXT | (29 << 2)), 29, 0, 0 }, /* cbg-FlushIndication-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (30 << 2)), 30, 0, 0 }, /* dynamicHARQ-ACK-CodeB-CBG-Retx-DL */
+    { (ASN_TAG_CLASS_CONTEXT | (31 << 2)), 31, 0, 0 }, /* rateMatchingResrcSetSemi-Static */
+    { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 32, 0, 0 }, /* rateMatchingResrcSetDynamic */
+    { (ASN_TAG_CLASS_CONTEXT | (33 << 2)), 33, 0, 0 }, /* bwp-SwitchingDelay */
+    { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 34, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersCommon_specs_1 = {
+       sizeof(struct Phy_ParametersCommon),
+       offsetof(struct Phy_ParametersCommon, _asn_ctx),
+       asn_MAP_Phy_ParametersCommon_tag2el_1,
+       35,     /* Count of tags in the map */
+       asn_MAP_Phy_ParametersCommon_oms_1,     /* Optional members */
+       34, 1,  /* Root/Additions */
+       34,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersCommon = {
+       "Phy-ParametersCommon",
+       "Phy-ParametersCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersCommon_tags_1,
+       sizeof(asn_DEF_Phy_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersCommon_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersCommon_tags_1,    /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersCommon_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersCommon_1,
+       35,     /* Elements count */
+       &asn_SPC_Phy_ParametersCommon_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersCommon.h b/src/codec_utils/RRC/Phy-ParametersCommon.h
new file mode 100644 (file)
index 0000000..cfdf8a7
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersCommon_H_
+#define        _Phy_ParametersCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Phy_ParametersCommon__csi_RS_CFRA_ForHO {
+       Phy_ParametersCommon__csi_RS_CFRA_ForHO_supported       = 0
+} e_Phy_ParametersCommon__csi_RS_CFRA_ForHO;
+typedef enum Phy_ParametersCommon__dynamicPRB_BundlingDL {
+       Phy_ParametersCommon__dynamicPRB_BundlingDL_supported   = 0
+} e_Phy_ParametersCommon__dynamicPRB_BundlingDL;
+typedef enum Phy_ParametersCommon__sp_CSI_ReportPUCCH {
+       Phy_ParametersCommon__sp_CSI_ReportPUCCH_supported      = 0
+} e_Phy_ParametersCommon__sp_CSI_ReportPUCCH;
+typedef enum Phy_ParametersCommon__sp_CSI_ReportPUSCH {
+       Phy_ParametersCommon__sp_CSI_ReportPUSCH_supported      = 0
+} e_Phy_ParametersCommon__sp_CSI_ReportPUSCH;
+typedef enum Phy_ParametersCommon__nzp_CSI_RS_IntefMgmt {
+       Phy_ParametersCommon__nzp_CSI_RS_IntefMgmt_supported    = 0
+} e_Phy_ParametersCommon__nzp_CSI_RS_IntefMgmt;
+typedef enum Phy_ParametersCommon__type2_SP_CSI_Feedback_LongPUCCH {
+       Phy_ParametersCommon__type2_SP_CSI_Feedback_LongPUCCH_supported = 0
+} e_Phy_ParametersCommon__type2_SP_CSI_Feedback_LongPUCCH;
+typedef enum Phy_ParametersCommon__precoderGranularityCORESET {
+       Phy_ParametersCommon__precoderGranularityCORESET_supported      = 0
+} e_Phy_ParametersCommon__precoderGranularityCORESET;
+typedef enum Phy_ParametersCommon__dynamicHARQ_ACK_Codebook {
+       Phy_ParametersCommon__dynamicHARQ_ACK_Codebook_supported        = 0
+} e_Phy_ParametersCommon__dynamicHARQ_ACK_Codebook;
+typedef enum Phy_ParametersCommon__semiStaticHARQ_ACK_Codebook {
+       Phy_ParametersCommon__semiStaticHARQ_ACK_Codebook_supported     = 0
+} e_Phy_ParametersCommon__semiStaticHARQ_ACK_Codebook;
+typedef enum Phy_ParametersCommon__spatialBundlingHARQ_ACK {
+       Phy_ParametersCommon__spatialBundlingHARQ_ACK_supported = 0
+} e_Phy_ParametersCommon__spatialBundlingHARQ_ACK;
+typedef enum Phy_ParametersCommon__dynamicBetaOffsetInd_HARQ_ACK_CSI {
+       Phy_ParametersCommon__dynamicBetaOffsetInd_HARQ_ACK_CSI_supported       = 0
+} e_Phy_ParametersCommon__dynamicBetaOffsetInd_HARQ_ACK_CSI;
+typedef enum Phy_ParametersCommon__pucch_Repetition_F1_3_4 {
+       Phy_ParametersCommon__pucch_Repetition_F1_3_4_supported = 0
+} e_Phy_ParametersCommon__pucch_Repetition_F1_3_4;
+typedef enum Phy_ParametersCommon__ra_Type0_PUSCH {
+       Phy_ParametersCommon__ra_Type0_PUSCH_supported  = 0
+} e_Phy_ParametersCommon__ra_Type0_PUSCH;
+typedef enum Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PDSCH {
+       Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PDSCH_supported   = 0
+} e_Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PDSCH;
+typedef enum Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PUSCH {
+       Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PUSCH_supported   = 0
+} e_Phy_ParametersCommon__dynamicSwitchRA_Type0_1_PUSCH;
+typedef enum Phy_ParametersCommon__pdsch_MappingTypeA {
+       Phy_ParametersCommon__pdsch_MappingTypeA_supported      = 0
+} e_Phy_ParametersCommon__pdsch_MappingTypeA;
+typedef enum Phy_ParametersCommon__pdsch_MappingTypeB {
+       Phy_ParametersCommon__pdsch_MappingTypeB_supported      = 0
+} e_Phy_ParametersCommon__pdsch_MappingTypeB;
+typedef enum Phy_ParametersCommon__interleavingVRB_ToPRB_PDSCH {
+       Phy_ParametersCommon__interleavingVRB_ToPRB_PDSCH_supported     = 0
+} e_Phy_ParametersCommon__interleavingVRB_ToPRB_PDSCH;
+typedef enum Phy_ParametersCommon__interSlotFreqHopping_PUSCH {
+       Phy_ParametersCommon__interSlotFreqHopping_PUSCH_supported      = 0
+} e_Phy_ParametersCommon__interSlotFreqHopping_PUSCH;
+typedef enum Phy_ParametersCommon__type1_PUSCH_RepetitionMultiSlots {
+       Phy_ParametersCommon__type1_PUSCH_RepetitionMultiSlots_supported        = 0
+} e_Phy_ParametersCommon__type1_PUSCH_RepetitionMultiSlots;
+typedef enum Phy_ParametersCommon__type2_PUSCH_RepetitionMultiSlots {
+       Phy_ParametersCommon__type2_PUSCH_RepetitionMultiSlots_supported        = 0
+} e_Phy_ParametersCommon__type2_PUSCH_RepetitionMultiSlots;
+typedef enum Phy_ParametersCommon__pusch_RepetitionMultiSlots {
+       Phy_ParametersCommon__pusch_RepetitionMultiSlots_supported      = 0
+} e_Phy_ParametersCommon__pusch_RepetitionMultiSlots;
+typedef enum Phy_ParametersCommon__pdsch_RepetitionMultiSlots {
+       Phy_ParametersCommon__pdsch_RepetitionMultiSlots_supported      = 0
+} e_Phy_ParametersCommon__pdsch_RepetitionMultiSlots;
+typedef enum Phy_ParametersCommon__downlinkSPS {
+       Phy_ParametersCommon__downlinkSPS_supported     = 0
+} e_Phy_ParametersCommon__downlinkSPS;
+typedef enum Phy_ParametersCommon__configuredUL_GrantType1 {
+       Phy_ParametersCommon__configuredUL_GrantType1_supported = 0
+} e_Phy_ParametersCommon__configuredUL_GrantType1;
+typedef enum Phy_ParametersCommon__configuredUL_GrantType2 {
+       Phy_ParametersCommon__configuredUL_GrantType2_supported = 0
+} e_Phy_ParametersCommon__configuredUL_GrantType2;
+typedef enum Phy_ParametersCommon__pre_EmptIndication_DL {
+       Phy_ParametersCommon__pre_EmptIndication_DL_supported   = 0
+} e_Phy_ParametersCommon__pre_EmptIndication_DL;
+typedef enum Phy_ParametersCommon__cbg_TransIndication_DL {
+       Phy_ParametersCommon__cbg_TransIndication_DL_supported  = 0
+} e_Phy_ParametersCommon__cbg_TransIndication_DL;
+typedef enum Phy_ParametersCommon__cbg_TransIndication_UL {
+       Phy_ParametersCommon__cbg_TransIndication_UL_supported  = 0
+} e_Phy_ParametersCommon__cbg_TransIndication_UL;
+typedef enum Phy_ParametersCommon__cbg_FlushIndication_DL {
+       Phy_ParametersCommon__cbg_FlushIndication_DL_supported  = 0
+} e_Phy_ParametersCommon__cbg_FlushIndication_DL;
+typedef enum Phy_ParametersCommon__dynamicHARQ_ACK_CodeB_CBG_Retx_DL {
+       Phy_ParametersCommon__dynamicHARQ_ACK_CodeB_CBG_Retx_DL_supported       = 0
+} e_Phy_ParametersCommon__dynamicHARQ_ACK_CodeB_CBG_Retx_DL;
+typedef enum Phy_ParametersCommon__rateMatchingResrcSetSemi_Static {
+       Phy_ParametersCommon__rateMatchingResrcSetSemi_Static_supported = 0
+} e_Phy_ParametersCommon__rateMatchingResrcSetSemi_Static;
+typedef enum Phy_ParametersCommon__rateMatchingResrcSetDynamic {
+       Phy_ParametersCommon__rateMatchingResrcSetDynamic_supported     = 0
+} e_Phy_ParametersCommon__rateMatchingResrcSetDynamic;
+typedef enum Phy_ParametersCommon__bwp_SwitchingDelay {
+       Phy_ParametersCommon__bwp_SwitchingDelay_type1  = 0,
+       Phy_ParametersCommon__bwp_SwitchingDelay_type2  = 1
+} e_Phy_ParametersCommon__bwp_SwitchingDelay;
+typedef enum Phy_ParametersCommon__ext1__eutra_RS_SINR_measurement {
+       Phy_ParametersCommon__ext1__eutra_RS_SINR_measurement_supported = 0
+} e_Phy_ParametersCommon__ext1__eutra_RS_SINR_measurement;
+
+/* Phy-ParametersCommon */
+typedef struct Phy_ParametersCommon {
+       long    *csi_RS_CFRA_ForHO;     /* OPTIONAL */
+       long    *dynamicPRB_BundlingDL; /* OPTIONAL */
+       long    *sp_CSI_ReportPUCCH;    /* OPTIONAL */
+       long    *sp_CSI_ReportPUSCH;    /* OPTIONAL */
+       long    *nzp_CSI_RS_IntefMgmt;  /* OPTIONAL */
+       long    *type2_SP_CSI_Feedback_LongPUCCH;       /* OPTIONAL */
+       long    *precoderGranularityCORESET;    /* OPTIONAL */
+       long    *dynamicHARQ_ACK_Codebook;      /* OPTIONAL */
+       long    *semiStaticHARQ_ACK_Codebook;   /* OPTIONAL */
+       long    *spatialBundlingHARQ_ACK;       /* OPTIONAL */
+       long    *dynamicBetaOffsetInd_HARQ_ACK_CSI;     /* OPTIONAL */
+       long    *pucch_Repetition_F1_3_4;       /* OPTIONAL */
+       long    *ra_Type0_PUSCH;        /* OPTIONAL */
+       long    *dynamicSwitchRA_Type0_1_PDSCH; /* OPTIONAL */
+       long    *dynamicSwitchRA_Type0_1_PUSCH; /* OPTIONAL */
+       long    *pdsch_MappingTypeA;    /* OPTIONAL */
+       long    *pdsch_MappingTypeB;    /* OPTIONAL */
+       long    *interleavingVRB_ToPRB_PDSCH;   /* OPTIONAL */
+       long    *interSlotFreqHopping_PUSCH;    /* OPTIONAL */
+       long    *type1_PUSCH_RepetitionMultiSlots;      /* OPTIONAL */
+       long    *type2_PUSCH_RepetitionMultiSlots;      /* OPTIONAL */
+       long    *pusch_RepetitionMultiSlots;    /* OPTIONAL */
+       long    *pdsch_RepetitionMultiSlots;    /* OPTIONAL */
+       long    *downlinkSPS;   /* OPTIONAL */
+       long    *configuredUL_GrantType1;       /* OPTIONAL */
+       long    *configuredUL_GrantType2;       /* OPTIONAL */
+       long    *pre_EmptIndication_DL; /* OPTIONAL */
+       long    *cbg_TransIndication_DL;        /* OPTIONAL */
+       long    *cbg_TransIndication_UL;        /* OPTIONAL */
+       long    *cbg_FlushIndication_DL;        /* OPTIONAL */
+       long    *dynamicHARQ_ACK_CodeB_CBG_Retx_DL;     /* OPTIONAL */
+       long    *rateMatchingResrcSetSemi_Static;       /* OPTIONAL */
+       long    *rateMatchingResrcSetDynamic;   /* OPTIONAL */
+       long    *bwp_SwitchingDelay;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct Phy_ParametersCommon__ext1 {
+               long    *eutra_RS_SINR_measurement;     /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_RS_CFRA_ForHO_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicPRB_BundlingDL_4;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_CSI_ReportPUCCH_6;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_CSI_ReportPUSCH_8;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nzp_CSI_RS_IntefMgmt_10;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_type2_SP_CSI_Feedback_LongPUCCH_12;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_precoderGranularityCORESET_14; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicHARQ_ACK_Codebook_16;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_semiStaticHARQ_ACK_Codebook_18;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_spatialBundlingHARQ_ACK_20;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicBetaOffsetInd_HARQ_ACK_CSI_22;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_Repetition_F1_3_4_24;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ra_Type0_PUSCH_26;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicSwitchRA_Type0_1_PDSCH_28;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicSwitchRA_Type0_1_PUSCH_30;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_MappingTypeA_32; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_MappingTypeB_34; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_interleavingVRB_ToPRB_PDSCH_36;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_interSlotFreqHopping_PUSCH_38; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_type1_PUSCH_RepetitionMultiSlots_40;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_type2_PUSCH_RepetitionMultiSlots_42;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_RepetitionMultiSlots_44; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_RepetitionMultiSlots_46; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_downlinkSPS_48;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_configuredUL_GrantType1_50;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_configuredUL_GrantType2_52;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pre_EmptIndication_DL_54;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cbg_TransIndication_DL_56;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cbg_TransIndication_UL_58;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_cbg_FlushIndication_DL_60;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicHARQ_ACK_CodeB_CBG_Retx_DL_62;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rateMatchingResrcSetSemi_Static_64;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_rateMatchingResrcSetDynamic_66;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bwp_SwitchingDelay_68; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_eutra_RS_SINR_measurement_73;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersCommon_1[35];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersFR1.c b/src/codec_utils/RRC/Phy-ParametersFR1.c
new file mode 100644 (file)
index 0000000..1c8a54c
--- /dev/null
@@ -0,0 +1,272 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersFR1.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.
+ */
+static asn_oer_constraints_t asn_OER_type_pdcchMonitoringSingleOccasion_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcchMonitoringSingleOccasion_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scs_60kHz_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scs_60kHz_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_256QAM_FR1_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_256QAM_FR1_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_RE_MappingFR1_PerSymbol_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_RE_MappingFR1_PerSymbol_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdcchMonitoringSingleOccasion_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdcchMonitoringSingleOccasion_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdcchMonitoringSingleOccasion_specs_2 = {
+       asn_MAP_pdcchMonitoringSingleOccasion_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_pdcchMonitoringSingleOccasion_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdcchMonitoringSingleOccasion_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_pdcchMonitoringSingleOccasion_2 = {
+       "pdcchMonitoringSingleOccasion",
+       "pdcchMonitoringSingleOccasion",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdcchMonitoringSingleOccasion_tags_2,
+       sizeof(asn_DEF_pdcchMonitoringSingleOccasion_tags_2)
+               /sizeof(asn_DEF_pdcchMonitoringSingleOccasion_tags_2[0]) - 1, /* 1 */
+       asn_DEF_pdcchMonitoringSingleOccasion_tags_2,   /* Same as above */
+       sizeof(asn_DEF_pdcchMonitoringSingleOccasion_tags_2)
+               /sizeof(asn_DEF_pdcchMonitoringSingleOccasion_tags_2[0]), /* 2 */
+       { &asn_OER_type_pdcchMonitoringSingleOccasion_constr_2, &asn_PER_type_pdcchMonitoringSingleOccasion_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdcchMonitoringSingleOccasion_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scs_60kHz_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_scs_60kHz_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scs_60kHz_specs_4 = {
+       asn_MAP_scs_60kHz_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_scs_60kHz_enum2value_4, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scs_60kHz_tags_4[] = {
+       (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_scs_60kHz_4 = {
+       "scs-60kHz",
+       "scs-60kHz",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scs_60kHz_tags_4,
+       sizeof(asn_DEF_scs_60kHz_tags_4)
+               /sizeof(asn_DEF_scs_60kHz_tags_4[0]) - 1, /* 1 */
+       asn_DEF_scs_60kHz_tags_4,       /* Same as above */
+       sizeof(asn_DEF_scs_60kHz_tags_4)
+               /sizeof(asn_DEF_scs_60kHz_tags_4[0]), /* 2 */
+       { &asn_OER_type_scs_60kHz_constr_4, &asn_PER_type_scs_60kHz_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scs_60kHz_specs_4      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_256QAM_FR1_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pdsch_256QAM_FR1_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_256QAM_FR1_specs_6 = {
+       asn_MAP_pdsch_256QAM_FR1_value2enum_6,  /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_256QAM_FR1_enum2value_6,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_256QAM_FR1_tags_6[] = {
+       (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_pdsch_256QAM_FR1_6 = {
+       "pdsch-256QAM-FR1",
+       "pdsch-256QAM-FR1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_256QAM_FR1_tags_6,
+       sizeof(asn_DEF_pdsch_256QAM_FR1_tags_6)
+               /sizeof(asn_DEF_pdsch_256QAM_FR1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_pdsch_256QAM_FR1_tags_6,        /* Same as above */
+       sizeof(asn_DEF_pdsch_256QAM_FR1_tags_6)
+               /sizeof(asn_DEF_pdsch_256QAM_FR1_tags_6[0]), /* 2 */
+       { &asn_OER_type_pdsch_256QAM_FR1_constr_6, &asn_PER_type_pdsch_256QAM_FR1_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_256QAM_FR1_specs_6       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_RE_MappingFR1_PerSymbol_value2enum_8[] = {
+       { 0,    3,      "n10" },
+       { 1,    3,      "n20" }
+};
+static const unsigned int asn_MAP_pdsch_RE_MappingFR1_PerSymbol_enum2value_8[] = {
+       0,      /* n10(0) */
+       1       /* n20(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_RE_MappingFR1_PerSymbol_specs_8 = {
+       asn_MAP_pdsch_RE_MappingFR1_PerSymbol_value2enum_8,     /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_RE_MappingFR1_PerSymbol_enum2value_8,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8[] = {
+       (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_pdsch_RE_MappingFR1_PerSymbol_8 = {
+       "pdsch-RE-MappingFR1-PerSymbol",
+       "pdsch-RE-MappingFR1-PerSymbol",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8,
+       sizeof(asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8)
+               /sizeof(asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8[0]) - 1, /* 1 */
+       asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8,   /* Same as above */
+       sizeof(asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8)
+               /sizeof(asn_DEF_pdsch_RE_MappingFR1_PerSymbol_tags_8[0]), /* 2 */
+       { &asn_OER_type_pdsch_RE_MappingFR1_PerSymbol_constr_8, &asn_PER_type_pdsch_RE_MappingFR1_PerSymbol_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_RE_MappingFR1_PerSymbol_specs_8  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersFR1_1[] = {
+       { ATF_POINTER, 4, offsetof(struct Phy_ParametersFR1, pdcchMonitoringSingleOccasion),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdcchMonitoringSingleOccasion_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcchMonitoringSingleOccasion"
+               },
+       { ATF_POINTER, 3, offsetof(struct Phy_ParametersFR1, scs_60kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scs_60kHz_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scs-60kHz"
+               },
+       { ATF_POINTER, 2, offsetof(struct Phy_ParametersFR1, pdsch_256QAM_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_256QAM_FR1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-256QAM-FR1"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersFR1, pdsch_RE_MappingFR1_PerSymbol),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_RE_MappingFR1_PerSymbol_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-RE-MappingFR1-PerSymbol"
+               },
+};
+static const int asn_MAP_Phy_ParametersFR1_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersFR1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersFR1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pdcchMonitoringSingleOccasion */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* scs-60kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pdsch-256QAM-FR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pdsch-RE-MappingFR1-PerSymbol */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFR1_specs_1 = {
+       sizeof(struct Phy_ParametersFR1),
+       offsetof(struct Phy_ParametersFR1, _asn_ctx),
+       asn_MAP_Phy_ParametersFR1_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_Phy_ParametersFR1_oms_1,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFR1 = {
+       "Phy-ParametersFR1",
+       "Phy-ParametersFR1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersFR1_tags_1,
+       sizeof(asn_DEF_Phy_ParametersFR1_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFR1_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersFR1_tags_1,       /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersFR1_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFR1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersFR1_1,
+       4,      /* Elements count */
+       &asn_SPC_Phy_ParametersFR1_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersFR1.h b/src/codec_utils/RRC/Phy-ParametersFR1.h
new file mode 100644 (file)
index 0000000..2d5ca89
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersFR1_H_
+#define        _Phy_ParametersFR1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Phy_ParametersFR1__pdcchMonitoringSingleOccasion {
+       Phy_ParametersFR1__pdcchMonitoringSingleOccasion_supported      = 0
+} e_Phy_ParametersFR1__pdcchMonitoringSingleOccasion;
+typedef enum Phy_ParametersFR1__scs_60kHz {
+       Phy_ParametersFR1__scs_60kHz_supported  = 0
+} e_Phy_ParametersFR1__scs_60kHz;
+typedef enum Phy_ParametersFR1__pdsch_256QAM_FR1 {
+       Phy_ParametersFR1__pdsch_256QAM_FR1_supported   = 0
+} e_Phy_ParametersFR1__pdsch_256QAM_FR1;
+typedef enum Phy_ParametersFR1__pdsch_RE_MappingFR1_PerSymbol {
+       Phy_ParametersFR1__pdsch_RE_MappingFR1_PerSymbol_n10    = 0,
+       Phy_ParametersFR1__pdsch_RE_MappingFR1_PerSymbol_n20    = 1
+} e_Phy_ParametersFR1__pdsch_RE_MappingFR1_PerSymbol;
+
+/* Phy-ParametersFR1 */
+typedef struct Phy_ParametersFR1 {
+       long    *pdcchMonitoringSingleOccasion; /* OPTIONAL */
+       long    *scs_60kHz;     /* OPTIONAL */
+       long    *pdsch_256QAM_FR1;      /* OPTIONAL */
+       long    *pdsch_RE_MappingFR1_PerSymbol; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersFR1_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdcchMonitoringSingleOccasion_2;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scs_60kHz_4;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_256QAM_FR1_6;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_RE_MappingFR1_PerSymbol_8;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFR1;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFR1_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersFR1_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersFR1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersFR2.c b/src/codec_utils/RRC/Phy-ParametersFR2.c
new file mode 100644 (file)
index 0000000..c811e3f
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersFR2.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.
+ */
+static asn_oer_constraints_t asn_OER_type_calibrationGapPA_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_calibrationGapPA_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_RE_MappingFR2_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_RE_MappingFR2_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_calibrationGapPA_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_calibrationGapPA_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_calibrationGapPA_specs_2 = {
+       asn_MAP_calibrationGapPA_value2enum_2,  /* "tag" => N; sorted by tag */
+       asn_MAP_calibrationGapPA_enum2value_2,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_calibrationGapPA_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_calibrationGapPA_2 = {
+       "calibrationGapPA",
+       "calibrationGapPA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_calibrationGapPA_tags_2,
+       sizeof(asn_DEF_calibrationGapPA_tags_2)
+               /sizeof(asn_DEF_calibrationGapPA_tags_2[0]) - 1, /* 1 */
+       asn_DEF_calibrationGapPA_tags_2,        /* Same as above */
+       sizeof(asn_DEF_calibrationGapPA_tags_2)
+               /sizeof(asn_DEF_calibrationGapPA_tags_2[0]), /* 2 */
+       { &asn_OER_type_calibrationGapPA_constr_2, &asn_PER_type_calibrationGapPA_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_calibrationGapPA_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_RE_MappingFR2_value2enum_4[] = {
+       { 0,    2,      "n6" },
+       { 1,    3,      "n20" }
+};
+static const unsigned int asn_MAP_pdsch_RE_MappingFR2_enum2value_4[] = {
+       1,      /* n20(1) */
+       0       /* n6(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_RE_MappingFR2_specs_4 = {
+       asn_MAP_pdsch_RE_MappingFR2_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_RE_MappingFR2_enum2value_4,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_RE_MappingFR2_tags_4[] = {
+       (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_pdsch_RE_MappingFR2_4 = {
+       "pdsch-RE-MappingFR2",
+       "pdsch-RE-MappingFR2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_RE_MappingFR2_tags_4,
+       sizeof(asn_DEF_pdsch_RE_MappingFR2_tags_4)
+               /sizeof(asn_DEF_pdsch_RE_MappingFR2_tags_4[0]) - 1, /* 1 */
+       asn_DEF_pdsch_RE_MappingFR2_tags_4,     /* Same as above */
+       sizeof(asn_DEF_pdsch_RE_MappingFR2_tags_4)
+               /sizeof(asn_DEF_pdsch_RE_MappingFR2_tags_4[0]), /* 2 */
+       { &asn_OER_type_pdsch_RE_MappingFR2_constr_4, &asn_PER_type_pdsch_RE_MappingFR2_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_RE_MappingFR2_specs_4    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersFR2_1[] = {
+       { ATF_POINTER, 2, offsetof(struct Phy_ParametersFR2, calibrationGapPA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_calibrationGapPA_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "calibrationGapPA"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersFR2, pdsch_RE_MappingFR2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_RE_MappingFR2_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-RE-MappingFR2"
+               },
+};
+static const int asn_MAP_Phy_ParametersFR2_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersFR2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersFR2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* calibrationGapPA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* pdsch-RE-MappingFR2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFR2_specs_1 = {
+       sizeof(struct Phy_ParametersFR2),
+       offsetof(struct Phy_ParametersFR2, _asn_ctx),
+       asn_MAP_Phy_ParametersFR2_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_Phy_ParametersFR2_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFR2 = {
+       "Phy-ParametersFR2",
+       "Phy-ParametersFR2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersFR2_tags_1,
+       sizeof(asn_DEF_Phy_ParametersFR2_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFR2_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersFR2_tags_1,       /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersFR2_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFR2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersFR2_1,
+       2,      /* Elements count */
+       &asn_SPC_Phy_ParametersFR2_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersFR2.h b/src/codec_utils/RRC/Phy-ParametersFR2.h
new file mode 100644 (file)
index 0000000..5db88b2
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersFR2_H_
+#define        _Phy_ParametersFR2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Phy_ParametersFR2__calibrationGapPA {
+       Phy_ParametersFR2__calibrationGapPA_supported   = 0
+} e_Phy_ParametersFR2__calibrationGapPA;
+typedef enum Phy_ParametersFR2__pdsch_RE_MappingFR2 {
+       Phy_ParametersFR2__pdsch_RE_MappingFR2_n6       = 0,
+       Phy_ParametersFR2__pdsch_RE_MappingFR2_n20      = 1
+} e_Phy_ParametersFR2__pdsch_RE_MappingFR2;
+
+/* Phy-ParametersFR2 */
+typedef struct Phy_ParametersFR2 {
+       long    *calibrationGapPA;      /* OPTIONAL */
+       long    *pdsch_RE_MappingFR2;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersFR2_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_calibrationGapPA_2;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_RE_MappingFR2_4; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFR2;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFR2_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersFR2_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersFR2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersFRX-Diff.c b/src/codec_utils/RRC/Phy-ParametersFRX-Diff.c
new file mode 100644 (file)
index 0000000..8f41e7e
--- /dev/null
@@ -0,0 +1,2101 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersFRX-Diff.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.
+ */
+/*
+ * 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.
+ */
+/*
+ * 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 int
+memb_oneFL_DMRS_TwoAdditionalDMRS_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 == 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 int
+memb_twoFL_DMRS_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 == 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 int
+memb_twoFL_DMRS_TwoAdditionalDMRS_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 == 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 int
+memb_oneFL_DMRS_ThreeAdditionalDMRS_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 == 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 int
+memb_onePortsPTRS_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 == 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 int
+memb_pdcch_BlindDetectionCA_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 >= 4 && value <= 16)) {
+               /* 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_dynamicSFI_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicSFI_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedDMRS_TypeDL_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedDMRS_TypeDL_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedDMRS_TypeUL_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedDMRS_TypeUL_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_semiOpenLoopCSI_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_semiOpenLoopCSI_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_ReportWithoutPMI_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_ReportWithoutPMI_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_ReportWithoutCQI_constr_18 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_ReportWithoutCQI_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoPUCCH_F0_2_ConsecSymbols_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUCCH_F0_2_ConsecSymbols_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_F2_WithFH_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_F2_WithFH_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_F3_WithFH_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_F3_WithFH_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_F4_WithFH_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_F4_WithFH_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_freqHoppingPUCCH_F0_2_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_freqHoppingPUCCH_F0_2_constr_29 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_freqHoppingPUCCH_F1_3_4_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_freqHoppingPUCCH_F1_3_4_constr_31 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mux_SR_HARQ_ACK_CSI_PUCCH_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mux_SR_HARQ_ACK_CSI_PUCCH_constr_33 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_uci_CodeBlockSegmentation_constr_35 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uci_CodeBlockSegmentation_constr_35 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_onePUCCH_LongAndShortFormat_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_onePUCCH_LongAndShortFormat_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoPUCCH_AnyOthersInSlot_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUCCH_AnyOthersInSlot_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_intraSlotFreqHopping_PUSCH_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_intraSlotFreqHopping_PUSCH_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_LBRM_constr_43 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_LBRM_constr_43 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_PUSCH_RNTI_constr_46 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_PUSCH_RNTI_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_PUCCH_RNTI_constr_48 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_PUCCH_RNTI_constr_48 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tpc_SRS_RNTI_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_SRS_RNTI_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_absoluteTPC_Command_constr_52 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_absoluteTPC_Command_constr_52 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoDifferentTPC_Loop_PUSCH_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoDifferentTPC_Loop_PUSCH_constr_54 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoDifferentTPC_Loop_PUCCH_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoDifferentTPC_Loop_PUCCH_constr_56 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pusch_HalfPi_BPSK_constr_58 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_HalfPi_BPSK_constr_58 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pucch_F3_4_HalfPi_BPSK_constr_60 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pucch_F3_4_HalfPi_BPSK_constr_60 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_almostContiguousCP_OFDM_UL_constr_62 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_almostContiguousCP_OFDM_UL_constr_62 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_CSI_RS_constr_64 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_CSI_RS_constr_64 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sp_CSI_IM_constr_66 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sp_CSI_IM_constr_66 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_tdd_MultiDL_UL_SwitchPerSlot_constr_68 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tdd_MultiDL_UL_SwitchPerSlot_constr_68 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_multipleCORESET_constr_70 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_multipleCORESET_constr_70 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_oneFL_DMRS_TwoAdditionalDMRS_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_oneFL_DMRS_TwoAdditionalDMRS_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_twoFL_DMRS_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_twoFL_DMRS_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_twoFL_DMRS_TwoAdditionalDMRS_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_twoFL_DMRS_TwoAdditionalDMRS_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_oneFL_DMRS_ThreeAdditionalDMRS_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_oneFL_DMRS_ThreeAdditionalDMRS_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_onePortsPTRS_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_onePortsPTRS_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pdcch_BlindDetectionCA_constr_45 CC_NOTUSED = {
+       { 1, 1 }        /* (4..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_pdcch_BlindDetectionCA_constr_45 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  4,  16 }       /* (4..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_dynamicSFI_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicSFI_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicSFI_specs_2 = {
+       asn_MAP_dynamicSFI_value2enum_2,        /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicSFI_enum2value_2,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicSFI_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_dynamicSFI_2 = {
+       "dynamicSFI",
+       "dynamicSFI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicSFI_tags_2,
+       sizeof(asn_DEF_dynamicSFI_tags_2)
+               /sizeof(asn_DEF_dynamicSFI_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dynamicSFI_tags_2,      /* Same as above */
+       sizeof(asn_DEF_dynamicSFI_tags_2)
+               /sizeof(asn_DEF_dynamicSFI_tags_2[0]), /* 2 */
+       { &asn_OER_type_dynamicSFI_constr_2, &asn_PER_type_dynamicSFI_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicSFI_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedDMRS_TypeDL_value2enum_8[] = {
+       { 0,    5,      "type1" },
+       { 1,    9,      "type1And2" }
+};
+static const unsigned int asn_MAP_supportedDMRS_TypeDL_enum2value_8[] = {
+       0,      /* type1(0) */
+       1       /* type1And2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedDMRS_TypeDL_specs_8 = {
+       asn_MAP_supportedDMRS_TypeDL_value2enum_8,      /* "tag" => N; sorted by tag */
+       asn_MAP_supportedDMRS_TypeDL_enum2value_8,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedDMRS_TypeDL_tags_8[] = {
+       (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_supportedDMRS_TypeDL_8 = {
+       "supportedDMRS-TypeDL",
+       "supportedDMRS-TypeDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedDMRS_TypeDL_tags_8,
+       sizeof(asn_DEF_supportedDMRS_TypeDL_tags_8)
+               /sizeof(asn_DEF_supportedDMRS_TypeDL_tags_8[0]) - 1, /* 1 */
+       asn_DEF_supportedDMRS_TypeDL_tags_8,    /* Same as above */
+       sizeof(asn_DEF_supportedDMRS_TypeDL_tags_8)
+               /sizeof(asn_DEF_supportedDMRS_TypeDL_tags_8[0]), /* 2 */
+       { &asn_OER_type_supportedDMRS_TypeDL_constr_8, &asn_PER_type_supportedDMRS_TypeDL_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedDMRS_TypeDL_specs_8   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedDMRS_TypeUL_value2enum_11[] = {
+       { 0,    5,      "type1" },
+       { 1,    9,      "type1And2" }
+};
+static const unsigned int asn_MAP_supportedDMRS_TypeUL_enum2value_11[] = {
+       0,      /* type1(0) */
+       1       /* type1And2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedDMRS_TypeUL_specs_11 = {
+       asn_MAP_supportedDMRS_TypeUL_value2enum_11,     /* "tag" => N; sorted by tag */
+       asn_MAP_supportedDMRS_TypeUL_enum2value_11,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedDMRS_TypeUL_tags_11[] = {
+       (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_supportedDMRS_TypeUL_11 = {
+       "supportedDMRS-TypeUL",
+       "supportedDMRS-TypeUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedDMRS_TypeUL_tags_11,
+       sizeof(asn_DEF_supportedDMRS_TypeUL_tags_11)
+               /sizeof(asn_DEF_supportedDMRS_TypeUL_tags_11[0]) - 1, /* 1 */
+       asn_DEF_supportedDMRS_TypeUL_tags_11,   /* Same as above */
+       sizeof(asn_DEF_supportedDMRS_TypeUL_tags_11)
+               /sizeof(asn_DEF_supportedDMRS_TypeUL_tags_11[0]), /* 2 */
+       { &asn_OER_type_supportedDMRS_TypeUL_constr_11, &asn_PER_type_supportedDMRS_TypeUL_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedDMRS_TypeUL_specs_11  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_semiOpenLoopCSI_value2enum_14[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_semiOpenLoopCSI_enum2value_14[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_semiOpenLoopCSI_specs_14 = {
+       asn_MAP_semiOpenLoopCSI_value2enum_14,  /* "tag" => N; sorted by tag */
+       asn_MAP_semiOpenLoopCSI_enum2value_14,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_semiOpenLoopCSI_tags_14[] = {
+       (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_semiOpenLoopCSI_14 = {
+       "semiOpenLoopCSI",
+       "semiOpenLoopCSI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_semiOpenLoopCSI_tags_14,
+       sizeof(asn_DEF_semiOpenLoopCSI_tags_14)
+               /sizeof(asn_DEF_semiOpenLoopCSI_tags_14[0]) - 1, /* 1 */
+       asn_DEF_semiOpenLoopCSI_tags_14,        /* Same as above */
+       sizeof(asn_DEF_semiOpenLoopCSI_tags_14)
+               /sizeof(asn_DEF_semiOpenLoopCSI_tags_14[0]), /* 2 */
+       { &asn_OER_type_semiOpenLoopCSI_constr_14, &asn_PER_type_semiOpenLoopCSI_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_semiOpenLoopCSI_specs_14       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_ReportWithoutPMI_value2enum_16[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_ReportWithoutPMI_enum2value_16[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_ReportWithoutPMI_specs_16 = {
+       asn_MAP_csi_ReportWithoutPMI_value2enum_16,     /* "tag" => N; sorted by tag */
+       asn_MAP_csi_ReportWithoutPMI_enum2value_16,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_ReportWithoutPMI_tags_16[] = {
+       (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_csi_ReportWithoutPMI_16 = {
+       "csi-ReportWithoutPMI",
+       "csi-ReportWithoutPMI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_ReportWithoutPMI_tags_16,
+       sizeof(asn_DEF_csi_ReportWithoutPMI_tags_16)
+               /sizeof(asn_DEF_csi_ReportWithoutPMI_tags_16[0]) - 1, /* 1 */
+       asn_DEF_csi_ReportWithoutPMI_tags_16,   /* Same as above */
+       sizeof(asn_DEF_csi_ReportWithoutPMI_tags_16)
+               /sizeof(asn_DEF_csi_ReportWithoutPMI_tags_16[0]), /* 2 */
+       { &asn_OER_type_csi_ReportWithoutPMI_constr_16, &asn_PER_type_csi_ReportWithoutPMI_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_ReportWithoutPMI_specs_16  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_csi_ReportWithoutCQI_value2enum_18[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_csi_ReportWithoutCQI_enum2value_18[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_csi_ReportWithoutCQI_specs_18 = {
+       asn_MAP_csi_ReportWithoutCQI_value2enum_18,     /* "tag" => N; sorted by tag */
+       asn_MAP_csi_ReportWithoutCQI_enum2value_18,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_csi_ReportWithoutCQI_tags_18[] = {
+       (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_csi_ReportWithoutCQI_18 = {
+       "csi-ReportWithoutCQI",
+       "csi-ReportWithoutCQI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_csi_ReportWithoutCQI_tags_18,
+       sizeof(asn_DEF_csi_ReportWithoutCQI_tags_18)
+               /sizeof(asn_DEF_csi_ReportWithoutCQI_tags_18[0]) - 1, /* 1 */
+       asn_DEF_csi_ReportWithoutCQI_tags_18,   /* Same as above */
+       sizeof(asn_DEF_csi_ReportWithoutCQI_tags_18)
+               /sizeof(asn_DEF_csi_ReportWithoutCQI_tags_18[0]), /* 2 */
+       { &asn_OER_type_csi_ReportWithoutCQI_constr_18, &asn_PER_type_csi_ReportWithoutCQI_constr_18, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_csi_ReportWithoutCQI_specs_18  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUCCH_F0_2_ConsecSymbols_value2enum_21[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPUCCH_F0_2_ConsecSymbols_enum2value_21[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUCCH_F0_2_ConsecSymbols_specs_21 = {
+       asn_MAP_twoPUCCH_F0_2_ConsecSymbols_value2enum_21,      /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUCCH_F0_2_ConsecSymbols_enum2value_21,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_twoPUCCH_F0_2_ConsecSymbols_21 = {
+       "twoPUCCH-F0-2-ConsecSymbols",
+       "twoPUCCH-F0-2-ConsecSymbols",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21,
+       sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21)
+               /sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21[0]) - 1, /* 1 */
+       asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21,    /* Same as above */
+       sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21)
+               /sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_21[0]), /* 2 */
+       { &asn_OER_type_twoPUCCH_F0_2_ConsecSymbols_constr_21, &asn_PER_type_twoPUCCH_F0_2_ConsecSymbols_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUCCH_F0_2_ConsecSymbols_specs_21   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_F2_WithFH_value2enum_23[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_F2_WithFH_enum2value_23[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_F2_WithFH_specs_23 = {
+       asn_MAP_pucch_F2_WithFH_value2enum_23,  /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_F2_WithFH_enum2value_23,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_F2_WithFH_tags_23[] = {
+       (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_pucch_F2_WithFH_23 = {
+       "pucch-F2-WithFH",
+       "pucch-F2-WithFH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_F2_WithFH_tags_23,
+       sizeof(asn_DEF_pucch_F2_WithFH_tags_23)
+               /sizeof(asn_DEF_pucch_F2_WithFH_tags_23[0]) - 1, /* 1 */
+       asn_DEF_pucch_F2_WithFH_tags_23,        /* Same as above */
+       sizeof(asn_DEF_pucch_F2_WithFH_tags_23)
+               /sizeof(asn_DEF_pucch_F2_WithFH_tags_23[0]), /* 2 */
+       { &asn_OER_type_pucch_F2_WithFH_constr_23, &asn_PER_type_pucch_F2_WithFH_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_F2_WithFH_specs_23       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_F3_WithFH_value2enum_25[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_F3_WithFH_enum2value_25[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_F3_WithFH_specs_25 = {
+       asn_MAP_pucch_F3_WithFH_value2enum_25,  /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_F3_WithFH_enum2value_25,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_F3_WithFH_tags_25[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_F3_WithFH_25 = {
+       "pucch-F3-WithFH",
+       "pucch-F3-WithFH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_F3_WithFH_tags_25,
+       sizeof(asn_DEF_pucch_F3_WithFH_tags_25)
+               /sizeof(asn_DEF_pucch_F3_WithFH_tags_25[0]) - 1, /* 1 */
+       asn_DEF_pucch_F3_WithFH_tags_25,        /* Same as above */
+       sizeof(asn_DEF_pucch_F3_WithFH_tags_25)
+               /sizeof(asn_DEF_pucch_F3_WithFH_tags_25[0]), /* 2 */
+       { &asn_OER_type_pucch_F3_WithFH_constr_25, &asn_PER_type_pucch_F3_WithFH_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_F3_WithFH_specs_25       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_F4_WithFH_value2enum_27[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_F4_WithFH_enum2value_27[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_F4_WithFH_specs_27 = {
+       asn_MAP_pucch_F4_WithFH_value2enum_27,  /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_F4_WithFH_enum2value_27,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_F4_WithFH_tags_27[] = {
+       (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_F4_WithFH_27 = {
+       "pucch-F4-WithFH",
+       "pucch-F4-WithFH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_F4_WithFH_tags_27,
+       sizeof(asn_DEF_pucch_F4_WithFH_tags_27)
+               /sizeof(asn_DEF_pucch_F4_WithFH_tags_27[0]) - 1, /* 1 */
+       asn_DEF_pucch_F4_WithFH_tags_27,        /* Same as above */
+       sizeof(asn_DEF_pucch_F4_WithFH_tags_27)
+               /sizeof(asn_DEF_pucch_F4_WithFH_tags_27[0]), /* 2 */
+       { &asn_OER_type_pucch_F4_WithFH_constr_27, &asn_PER_type_pucch_F4_WithFH_constr_27, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_F4_WithFH_specs_27       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_freqHoppingPUCCH_F0_2_value2enum_29[] = {
+       { 0,    12,     "notSupported" }
+};
+static const unsigned int asn_MAP_freqHoppingPUCCH_F0_2_enum2value_29[] = {
+       0       /* notSupported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_freqHoppingPUCCH_F0_2_specs_29 = {
+       asn_MAP_freqHoppingPUCCH_F0_2_value2enum_29,    /* "tag" => N; sorted by tag */
+       asn_MAP_freqHoppingPUCCH_F0_2_enum2value_29,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_freqHoppingPUCCH_F0_2_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_freqHoppingPUCCH_F0_2_29 = {
+       "freqHoppingPUCCH-F0-2",
+       "freqHoppingPUCCH-F0-2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_freqHoppingPUCCH_F0_2_tags_29,
+       sizeof(asn_DEF_freqHoppingPUCCH_F0_2_tags_29)
+               /sizeof(asn_DEF_freqHoppingPUCCH_F0_2_tags_29[0]) - 1, /* 1 */
+       asn_DEF_freqHoppingPUCCH_F0_2_tags_29,  /* Same as above */
+       sizeof(asn_DEF_freqHoppingPUCCH_F0_2_tags_29)
+               /sizeof(asn_DEF_freqHoppingPUCCH_F0_2_tags_29[0]), /* 2 */
+       { &asn_OER_type_freqHoppingPUCCH_F0_2_constr_29, &asn_PER_type_freqHoppingPUCCH_F0_2_constr_29, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_freqHoppingPUCCH_F0_2_specs_29 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_freqHoppingPUCCH_F1_3_4_value2enum_31[] = {
+       { 0,    12,     "notSupported" }
+};
+static const unsigned int asn_MAP_freqHoppingPUCCH_F1_3_4_enum2value_31[] = {
+       0       /* notSupported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_freqHoppingPUCCH_F1_3_4_specs_31 = {
+       asn_MAP_freqHoppingPUCCH_F1_3_4_value2enum_31,  /* "tag" => N; sorted by tag */
+       asn_MAP_freqHoppingPUCCH_F1_3_4_enum2value_31,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31[] = {
+       (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_freqHoppingPUCCH_F1_3_4_31 = {
+       "freqHoppingPUCCH-F1-3-4",
+       "freqHoppingPUCCH-F1-3-4",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31,
+       sizeof(asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31)
+               /sizeof(asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31[0]) - 1, /* 1 */
+       asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31,        /* Same as above */
+       sizeof(asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31)
+               /sizeof(asn_DEF_freqHoppingPUCCH_F1_3_4_tags_31[0]), /* 2 */
+       { &asn_OER_type_freqHoppingPUCCH_F1_3_4_constr_31, &asn_PER_type_freqHoppingPUCCH_F1_3_4_constr_31, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_freqHoppingPUCCH_F1_3_4_specs_31       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mux_SR_HARQ_ACK_CSI_PUCCH_value2enum_33[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_mux_SR_HARQ_ACK_CSI_PUCCH_enum2value_33[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mux_SR_HARQ_ACK_CSI_PUCCH_specs_33 = {
+       asn_MAP_mux_SR_HARQ_ACK_CSI_PUCCH_value2enum_33,        /* "tag" => N; sorted by tag */
+       asn_MAP_mux_SR_HARQ_ACK_CSI_PUCCH_enum2value_33,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33[] = {
+       (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_mux_SR_HARQ_ACK_CSI_PUCCH_33 = {
+       "mux-SR-HARQ-ACK-CSI-PUCCH",
+       "mux-SR-HARQ-ACK-CSI-PUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33,
+       sizeof(asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33)
+               /sizeof(asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33[0]) - 1, /* 1 */
+       asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33,      /* Same as above */
+       sizeof(asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33)
+               /sizeof(asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_tags_33[0]), /* 2 */
+       { &asn_OER_type_mux_SR_HARQ_ACK_CSI_PUCCH_constr_33, &asn_PER_type_mux_SR_HARQ_ACK_CSI_PUCCH_constr_33, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mux_SR_HARQ_ACK_CSI_PUCCH_specs_33     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_uci_CodeBlockSegmentation_value2enum_35[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_uci_CodeBlockSegmentation_enum2value_35[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_uci_CodeBlockSegmentation_specs_35 = {
+       asn_MAP_uci_CodeBlockSegmentation_value2enum_35,        /* "tag" => N; sorted by tag */
+       asn_MAP_uci_CodeBlockSegmentation_enum2value_35,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_uci_CodeBlockSegmentation_tags_35[] = {
+       (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_uci_CodeBlockSegmentation_35 = {
+       "uci-CodeBlockSegmentation",
+       "uci-CodeBlockSegmentation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_uci_CodeBlockSegmentation_tags_35,
+       sizeof(asn_DEF_uci_CodeBlockSegmentation_tags_35)
+               /sizeof(asn_DEF_uci_CodeBlockSegmentation_tags_35[0]) - 1, /* 1 */
+       asn_DEF_uci_CodeBlockSegmentation_tags_35,      /* Same as above */
+       sizeof(asn_DEF_uci_CodeBlockSegmentation_tags_35)
+               /sizeof(asn_DEF_uci_CodeBlockSegmentation_tags_35[0]), /* 2 */
+       { &asn_OER_type_uci_CodeBlockSegmentation_constr_35, &asn_PER_type_uci_CodeBlockSegmentation_constr_35, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_uci_CodeBlockSegmentation_specs_35     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_onePUCCH_LongAndShortFormat_value2enum_37[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_onePUCCH_LongAndShortFormat_enum2value_37[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_onePUCCH_LongAndShortFormat_specs_37 = {
+       asn_MAP_onePUCCH_LongAndShortFormat_value2enum_37,      /* "tag" => N; sorted by tag */
+       asn_MAP_onePUCCH_LongAndShortFormat_enum2value_37,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_onePUCCH_LongAndShortFormat_tags_37[] = {
+       (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_onePUCCH_LongAndShortFormat_37 = {
+       "onePUCCH-LongAndShortFormat",
+       "onePUCCH-LongAndShortFormat",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_onePUCCH_LongAndShortFormat_tags_37,
+       sizeof(asn_DEF_onePUCCH_LongAndShortFormat_tags_37)
+               /sizeof(asn_DEF_onePUCCH_LongAndShortFormat_tags_37[0]) - 1, /* 1 */
+       asn_DEF_onePUCCH_LongAndShortFormat_tags_37,    /* Same as above */
+       sizeof(asn_DEF_onePUCCH_LongAndShortFormat_tags_37)
+               /sizeof(asn_DEF_onePUCCH_LongAndShortFormat_tags_37[0]), /* 2 */
+       { &asn_OER_type_onePUCCH_LongAndShortFormat_constr_37, &asn_PER_type_onePUCCH_LongAndShortFormat_constr_37, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_onePUCCH_LongAndShortFormat_specs_37   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUCCH_AnyOthersInSlot_value2enum_39[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPUCCH_AnyOthersInSlot_enum2value_39[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUCCH_AnyOthersInSlot_specs_39 = {
+       asn_MAP_twoPUCCH_AnyOthersInSlot_value2enum_39, /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUCCH_AnyOthersInSlot_enum2value_39, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39[] = {
+       (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_twoPUCCH_AnyOthersInSlot_39 = {
+       "twoPUCCH-AnyOthersInSlot",
+       "twoPUCCH-AnyOthersInSlot",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39,
+       sizeof(asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39)
+               /sizeof(asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39[0]) - 1, /* 1 */
+       asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39,       /* Same as above */
+       sizeof(asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39)
+               /sizeof(asn_DEF_twoPUCCH_AnyOthersInSlot_tags_39[0]), /* 2 */
+       { &asn_OER_type_twoPUCCH_AnyOthersInSlot_constr_39, &asn_PER_type_twoPUCCH_AnyOthersInSlot_constr_39, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUCCH_AnyOthersInSlot_specs_39      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_intraSlotFreqHopping_PUSCH_value2enum_41[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_intraSlotFreqHopping_PUSCH_enum2value_41[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_intraSlotFreqHopping_PUSCH_specs_41 = {
+       asn_MAP_intraSlotFreqHopping_PUSCH_value2enum_41,       /* "tag" => N; sorted by tag */
+       asn_MAP_intraSlotFreqHopping_PUSCH_enum2value_41,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_intraSlotFreqHopping_PUSCH_tags_41[] = {
+       (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_intraSlotFreqHopping_PUSCH_41 = {
+       "intraSlotFreqHopping-PUSCH",
+       "intraSlotFreqHopping-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_intraSlotFreqHopping_PUSCH_tags_41,
+       sizeof(asn_DEF_intraSlotFreqHopping_PUSCH_tags_41)
+               /sizeof(asn_DEF_intraSlotFreqHopping_PUSCH_tags_41[0]) - 1, /* 1 */
+       asn_DEF_intraSlotFreqHopping_PUSCH_tags_41,     /* Same as above */
+       sizeof(asn_DEF_intraSlotFreqHopping_PUSCH_tags_41)
+               /sizeof(asn_DEF_intraSlotFreqHopping_PUSCH_tags_41[0]), /* 2 */
+       { &asn_OER_type_intraSlotFreqHopping_PUSCH_constr_41, &asn_PER_type_intraSlotFreqHopping_PUSCH_constr_41, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_intraSlotFreqHopping_PUSCH_specs_41    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_LBRM_value2enum_43[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pusch_LBRM_enum2value_43[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_LBRM_specs_43 = {
+       asn_MAP_pusch_LBRM_value2enum_43,       /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_LBRM_enum2value_43,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_LBRM_tags_43[] = {
+       (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_LBRM_43 = {
+       "pusch-LBRM",
+       "pusch-LBRM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_LBRM_tags_43,
+       sizeof(asn_DEF_pusch_LBRM_tags_43)
+               /sizeof(asn_DEF_pusch_LBRM_tags_43[0]) - 1, /* 1 */
+       asn_DEF_pusch_LBRM_tags_43,     /* Same as above */
+       sizeof(asn_DEF_pusch_LBRM_tags_43)
+               /sizeof(asn_DEF_pusch_LBRM_tags_43[0]), /* 2 */
+       { &asn_OER_type_pusch_LBRM_constr_43, &asn_PER_type_pusch_LBRM_constr_43, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_LBRM_specs_43    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tpc_PUSCH_RNTI_value2enum_46[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_tpc_PUSCH_RNTI_enum2value_46[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tpc_PUSCH_RNTI_specs_46 = {
+       asn_MAP_tpc_PUSCH_RNTI_value2enum_46,   /* "tag" => N; sorted by tag */
+       asn_MAP_tpc_PUSCH_RNTI_enum2value_46,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tpc_PUSCH_RNTI_tags_46[] = {
+       (ASN_TAG_CLASS_CONTEXT | (24 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_PUSCH_RNTI_46 = {
+       "tpc-PUSCH-RNTI",
+       "tpc-PUSCH-RNTI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tpc_PUSCH_RNTI_tags_46,
+       sizeof(asn_DEF_tpc_PUSCH_RNTI_tags_46)
+               /sizeof(asn_DEF_tpc_PUSCH_RNTI_tags_46[0]) - 1, /* 1 */
+       asn_DEF_tpc_PUSCH_RNTI_tags_46, /* Same as above */
+       sizeof(asn_DEF_tpc_PUSCH_RNTI_tags_46)
+               /sizeof(asn_DEF_tpc_PUSCH_RNTI_tags_46[0]), /* 2 */
+       { &asn_OER_type_tpc_PUSCH_RNTI_constr_46, &asn_PER_type_tpc_PUSCH_RNTI_constr_46, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tpc_PUSCH_RNTI_specs_46        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tpc_PUCCH_RNTI_value2enum_48[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_tpc_PUCCH_RNTI_enum2value_48[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tpc_PUCCH_RNTI_specs_48 = {
+       asn_MAP_tpc_PUCCH_RNTI_value2enum_48,   /* "tag" => N; sorted by tag */
+       asn_MAP_tpc_PUCCH_RNTI_enum2value_48,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tpc_PUCCH_RNTI_tags_48[] = {
+       (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_PUCCH_RNTI_48 = {
+       "tpc-PUCCH-RNTI",
+       "tpc-PUCCH-RNTI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tpc_PUCCH_RNTI_tags_48,
+       sizeof(asn_DEF_tpc_PUCCH_RNTI_tags_48)
+               /sizeof(asn_DEF_tpc_PUCCH_RNTI_tags_48[0]) - 1, /* 1 */
+       asn_DEF_tpc_PUCCH_RNTI_tags_48, /* Same as above */
+       sizeof(asn_DEF_tpc_PUCCH_RNTI_tags_48)
+               /sizeof(asn_DEF_tpc_PUCCH_RNTI_tags_48[0]), /* 2 */
+       { &asn_OER_type_tpc_PUCCH_RNTI_constr_48, &asn_PER_type_tpc_PUCCH_RNTI_constr_48, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tpc_PUCCH_RNTI_specs_48        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tpc_SRS_RNTI_value2enum_50[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_tpc_SRS_RNTI_enum2value_50[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tpc_SRS_RNTI_specs_50 = {
+       asn_MAP_tpc_SRS_RNTI_value2enum_50,     /* "tag" => N; sorted by tag */
+       asn_MAP_tpc_SRS_RNTI_enum2value_50,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tpc_SRS_RNTI_tags_50[] = {
+       (ASN_TAG_CLASS_CONTEXT | (26 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tpc_SRS_RNTI_50 = {
+       "tpc-SRS-RNTI",
+       "tpc-SRS-RNTI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tpc_SRS_RNTI_tags_50,
+       sizeof(asn_DEF_tpc_SRS_RNTI_tags_50)
+               /sizeof(asn_DEF_tpc_SRS_RNTI_tags_50[0]) - 1, /* 1 */
+       asn_DEF_tpc_SRS_RNTI_tags_50,   /* Same as above */
+       sizeof(asn_DEF_tpc_SRS_RNTI_tags_50)
+               /sizeof(asn_DEF_tpc_SRS_RNTI_tags_50[0]), /* 2 */
+       { &asn_OER_type_tpc_SRS_RNTI_constr_50, &asn_PER_type_tpc_SRS_RNTI_constr_50, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tpc_SRS_RNTI_specs_50  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_absoluteTPC_Command_value2enum_52[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_absoluteTPC_Command_enum2value_52[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_absoluteTPC_Command_specs_52 = {
+       asn_MAP_absoluteTPC_Command_value2enum_52,      /* "tag" => N; sorted by tag */
+       asn_MAP_absoluteTPC_Command_enum2value_52,      /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_absoluteTPC_Command_tags_52[] = {
+       (ASN_TAG_CLASS_CONTEXT | (27 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_absoluteTPC_Command_52 = {
+       "absoluteTPC-Command",
+       "absoluteTPC-Command",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_absoluteTPC_Command_tags_52,
+       sizeof(asn_DEF_absoluteTPC_Command_tags_52)
+               /sizeof(asn_DEF_absoluteTPC_Command_tags_52[0]) - 1, /* 1 */
+       asn_DEF_absoluteTPC_Command_tags_52,    /* Same as above */
+       sizeof(asn_DEF_absoluteTPC_Command_tags_52)
+               /sizeof(asn_DEF_absoluteTPC_Command_tags_52[0]), /* 2 */
+       { &asn_OER_type_absoluteTPC_Command_constr_52, &asn_PER_type_absoluteTPC_Command_constr_52, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_absoluteTPC_Command_specs_52   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoDifferentTPC_Loop_PUSCH_value2enum_54[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoDifferentTPC_Loop_PUSCH_enum2value_54[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoDifferentTPC_Loop_PUSCH_specs_54 = {
+       asn_MAP_twoDifferentTPC_Loop_PUSCH_value2enum_54,       /* "tag" => N; sorted by tag */
+       asn_MAP_twoDifferentTPC_Loop_PUSCH_enum2value_54,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54[] = {
+       (ASN_TAG_CLASS_CONTEXT | (28 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUSCH_54 = {
+       "twoDifferentTPC-Loop-PUSCH",
+       "twoDifferentTPC-Loop-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54,
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54[0]) - 1, /* 1 */
+       asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54,     /* Same as above */
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_54[0]), /* 2 */
+       { &asn_OER_type_twoDifferentTPC_Loop_PUSCH_constr_54, &asn_PER_type_twoDifferentTPC_Loop_PUSCH_constr_54, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoDifferentTPC_Loop_PUSCH_specs_54    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoDifferentTPC_Loop_PUCCH_value2enum_56[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoDifferentTPC_Loop_PUCCH_enum2value_56[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoDifferentTPC_Loop_PUCCH_specs_56 = {
+       asn_MAP_twoDifferentTPC_Loop_PUCCH_value2enum_56,       /* "tag" => N; sorted by tag */
+       asn_MAP_twoDifferentTPC_Loop_PUCCH_enum2value_56,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56[] = {
+       (ASN_TAG_CLASS_CONTEXT | (29 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUCCH_56 = {
+       "twoDifferentTPC-Loop-PUCCH",
+       "twoDifferentTPC-Loop-PUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56,
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56[0]) - 1, /* 1 */
+       asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56,     /* Same as above */
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_56[0]), /* 2 */
+       { &asn_OER_type_twoDifferentTPC_Loop_PUCCH_constr_56, &asn_PER_type_twoDifferentTPC_Loop_PUCCH_constr_56, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoDifferentTPC_Loop_PUCCH_specs_56    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pusch_HalfPi_BPSK_value2enum_58[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pusch_HalfPi_BPSK_enum2value_58[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pusch_HalfPi_BPSK_specs_58 = {
+       asn_MAP_pusch_HalfPi_BPSK_value2enum_58,        /* "tag" => N; sorted by tag */
+       asn_MAP_pusch_HalfPi_BPSK_enum2value_58,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pusch_HalfPi_BPSK_tags_58[] = {
+       (ASN_TAG_CLASS_CONTEXT | (30 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_HalfPi_BPSK_58 = {
+       "pusch-HalfPi-BPSK",
+       "pusch-HalfPi-BPSK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pusch_HalfPi_BPSK_tags_58,
+       sizeof(asn_DEF_pusch_HalfPi_BPSK_tags_58)
+               /sizeof(asn_DEF_pusch_HalfPi_BPSK_tags_58[0]) - 1, /* 1 */
+       asn_DEF_pusch_HalfPi_BPSK_tags_58,      /* Same as above */
+       sizeof(asn_DEF_pusch_HalfPi_BPSK_tags_58)
+               /sizeof(asn_DEF_pusch_HalfPi_BPSK_tags_58[0]), /* 2 */
+       { &asn_OER_type_pusch_HalfPi_BPSK_constr_58, &asn_PER_type_pusch_HalfPi_BPSK_constr_58, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pusch_HalfPi_BPSK_specs_58     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pucch_F3_4_HalfPi_BPSK_value2enum_60[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_pucch_F3_4_HalfPi_BPSK_enum2value_60[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pucch_F3_4_HalfPi_BPSK_specs_60 = {
+       asn_MAP_pucch_F3_4_HalfPi_BPSK_value2enum_60,   /* "tag" => N; sorted by tag */
+       asn_MAP_pucch_F3_4_HalfPi_BPSK_enum2value_60,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (31 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pucch_F3_4_HalfPi_BPSK_60 = {
+       "pucch-F3-4-HalfPi-BPSK",
+       "pucch-F3-4-HalfPi-BPSK",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60,
+       sizeof(asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60)
+               /sizeof(asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60[0]) - 1, /* 1 */
+       asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60, /* Same as above */
+       sizeof(asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60)
+               /sizeof(asn_DEF_pucch_F3_4_HalfPi_BPSK_tags_60[0]), /* 2 */
+       { &asn_OER_type_pucch_F3_4_HalfPi_BPSK_constr_60, &asn_PER_type_pucch_F3_4_HalfPi_BPSK_constr_60, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pucch_F3_4_HalfPi_BPSK_specs_60        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_almostContiguousCP_OFDM_UL_value2enum_62[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_almostContiguousCP_OFDM_UL_enum2value_62[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_almostContiguousCP_OFDM_UL_specs_62 = {
+       asn_MAP_almostContiguousCP_OFDM_UL_value2enum_62,       /* "tag" => N; sorted by tag */
+       asn_MAP_almostContiguousCP_OFDM_UL_enum2value_62,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_almostContiguousCP_OFDM_UL_tags_62[] = {
+       (ASN_TAG_CLASS_CONTEXT | (32 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_almostContiguousCP_OFDM_UL_62 = {
+       "almostContiguousCP-OFDM-UL",
+       "almostContiguousCP-OFDM-UL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_almostContiguousCP_OFDM_UL_tags_62,
+       sizeof(asn_DEF_almostContiguousCP_OFDM_UL_tags_62)
+               /sizeof(asn_DEF_almostContiguousCP_OFDM_UL_tags_62[0]) - 1, /* 1 */
+       asn_DEF_almostContiguousCP_OFDM_UL_tags_62,     /* Same as above */
+       sizeof(asn_DEF_almostContiguousCP_OFDM_UL_tags_62)
+               /sizeof(asn_DEF_almostContiguousCP_OFDM_UL_tags_62[0]), /* 2 */
+       { &asn_OER_type_almostContiguousCP_OFDM_UL_constr_62, &asn_PER_type_almostContiguousCP_OFDM_UL_constr_62, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_almostContiguousCP_OFDM_UL_specs_62    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_CSI_RS_value2enum_64[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_CSI_RS_enum2value_64[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_CSI_RS_specs_64 = {
+       asn_MAP_sp_CSI_RS_value2enum_64,        /* "tag" => N; sorted by tag */
+       asn_MAP_sp_CSI_RS_enum2value_64,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_CSI_RS_tags_64[] = {
+       (ASN_TAG_CLASS_CONTEXT | (33 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sp_CSI_RS_64 = {
+       "sp-CSI-RS",
+       "sp-CSI-RS",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_CSI_RS_tags_64,
+       sizeof(asn_DEF_sp_CSI_RS_tags_64)
+               /sizeof(asn_DEF_sp_CSI_RS_tags_64[0]) - 1, /* 1 */
+       asn_DEF_sp_CSI_RS_tags_64,      /* Same as above */
+       sizeof(asn_DEF_sp_CSI_RS_tags_64)
+               /sizeof(asn_DEF_sp_CSI_RS_tags_64[0]), /* 2 */
+       { &asn_OER_type_sp_CSI_RS_constr_64, &asn_PER_type_sp_CSI_RS_constr_64, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_CSI_RS_specs_64     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sp_CSI_IM_value2enum_66[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_sp_CSI_IM_enum2value_66[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sp_CSI_IM_specs_66 = {
+       asn_MAP_sp_CSI_IM_value2enum_66,        /* "tag" => N; sorted by tag */
+       asn_MAP_sp_CSI_IM_enum2value_66,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sp_CSI_IM_tags_66[] = {
+       (ASN_TAG_CLASS_CONTEXT | (34 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sp_CSI_IM_66 = {
+       "sp-CSI-IM",
+       "sp-CSI-IM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sp_CSI_IM_tags_66,
+       sizeof(asn_DEF_sp_CSI_IM_tags_66)
+               /sizeof(asn_DEF_sp_CSI_IM_tags_66[0]) - 1, /* 1 */
+       asn_DEF_sp_CSI_IM_tags_66,      /* Same as above */
+       sizeof(asn_DEF_sp_CSI_IM_tags_66)
+               /sizeof(asn_DEF_sp_CSI_IM_tags_66[0]), /* 2 */
+       { &asn_OER_type_sp_CSI_IM_constr_66, &asn_PER_type_sp_CSI_IM_constr_66, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sp_CSI_IM_specs_66     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tdd_MultiDL_UL_SwitchPerSlot_value2enum_68[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_tdd_MultiDL_UL_SwitchPerSlot_enum2value_68[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tdd_MultiDL_UL_SwitchPerSlot_specs_68 = {
+       asn_MAP_tdd_MultiDL_UL_SwitchPerSlot_value2enum_68,     /* "tag" => N; sorted by tag */
+       asn_MAP_tdd_MultiDL_UL_SwitchPerSlot_enum2value_68,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68[] = {
+       (ASN_TAG_CLASS_CONTEXT | (35 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_68 = {
+       "tdd-MultiDL-UL-SwitchPerSlot",
+       "tdd-MultiDL-UL-SwitchPerSlot",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68,
+       sizeof(asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68)
+               /sizeof(asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68[0]) - 1, /* 1 */
+       asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68,   /* Same as above */
+       sizeof(asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68)
+               /sizeof(asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_tags_68[0]), /* 2 */
+       { &asn_OER_type_tdd_MultiDL_UL_SwitchPerSlot_constr_68, &asn_PER_type_tdd_MultiDL_UL_SwitchPerSlot_constr_68, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tdd_MultiDL_UL_SwitchPerSlot_specs_68  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_multipleCORESET_value2enum_70[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_multipleCORESET_enum2value_70[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_multipleCORESET_specs_70 = {
+       asn_MAP_multipleCORESET_value2enum_70,  /* "tag" => N; sorted by tag */
+       asn_MAP_multipleCORESET_enum2value_70,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_multipleCORESET_tags_70[] = {
+       (ASN_TAG_CLASS_CONTEXT | (36 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_multipleCORESET_70 = {
+       "multipleCORESET",
+       "multipleCORESET",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_multipleCORESET_tags_70,
+       sizeof(asn_DEF_multipleCORESET_tags_70)
+               /sizeof(asn_DEF_multipleCORESET_tags_70[0]) - 1, /* 1 */
+       asn_DEF_multipleCORESET_tags_70,        /* Same as above */
+       sizeof(asn_DEF_multipleCORESET_tags_70)
+               /sizeof(asn_DEF_multipleCORESET_tags_70[0]), /* 2 */
+       { &asn_OER_type_multipleCORESET_constr_70, &asn_PER_type_multipleCORESET_constr_70, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_multipleCORESET_specs_70       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersFRX_Diff_1[] = {
+       { ATF_POINTER, 37, offsetof(struct Phy_ParametersFRX_Diff, dynamicSFI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicSFI_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicSFI"
+               },
+       { ATF_POINTER, 36, offsetof(struct Phy_ParametersFRX_Diff, oneFL_DMRS_TwoAdditionalDMRS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_oneFL_DMRS_TwoAdditionalDMRS_constr_4, &asn_PER_memb_oneFL_DMRS_TwoAdditionalDMRS_constr_4,  memb_oneFL_DMRS_TwoAdditionalDMRS_constraint_1 },
+               0, 0, /* No default value */
+               "oneFL-DMRS-TwoAdditionalDMRS"
+               },
+       { ATF_POINTER, 35, offsetof(struct Phy_ParametersFRX_Diff, twoFL_DMRS),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twoFL_DMRS_constr_5, &asn_PER_memb_twoFL_DMRS_constr_5,  memb_twoFL_DMRS_constraint_1 },
+               0, 0, /* No default value */
+               "twoFL-DMRS"
+               },
+       { ATF_POINTER, 34, offsetof(struct Phy_ParametersFRX_Diff, twoFL_DMRS_TwoAdditionalDMRS),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twoFL_DMRS_TwoAdditionalDMRS_constr_6, &asn_PER_memb_twoFL_DMRS_TwoAdditionalDMRS_constr_6,  memb_twoFL_DMRS_TwoAdditionalDMRS_constraint_1 },
+               0, 0, /* No default value */
+               "twoFL-DMRS-TwoAdditionalDMRS"
+               },
+       { ATF_POINTER, 33, offsetof(struct Phy_ParametersFRX_Diff, oneFL_DMRS_ThreeAdditionalDMRS),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_oneFL_DMRS_ThreeAdditionalDMRS_constr_7, &asn_PER_memb_oneFL_DMRS_ThreeAdditionalDMRS_constr_7,  memb_oneFL_DMRS_ThreeAdditionalDMRS_constraint_1 },
+               0, 0, /* No default value */
+               "oneFL-DMRS-ThreeAdditionalDMRS"
+               },
+       { ATF_POINTER, 32, offsetof(struct Phy_ParametersFRX_Diff, supportedDMRS_TypeDL),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedDMRS_TypeDL_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedDMRS-TypeDL"
+               },
+       { ATF_POINTER, 31, offsetof(struct Phy_ParametersFRX_Diff, supportedDMRS_TypeUL),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedDMRS_TypeUL_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedDMRS-TypeUL"
+               },
+       { ATF_POINTER, 30, offsetof(struct Phy_ParametersFRX_Diff, semiOpenLoopCSI),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_semiOpenLoopCSI_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiOpenLoopCSI"
+               },
+       { ATF_POINTER, 29, offsetof(struct Phy_ParametersFRX_Diff, csi_ReportWithoutPMI),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_ReportWithoutPMI_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-ReportWithoutPMI"
+               },
+       { ATF_POINTER, 28, offsetof(struct Phy_ParametersFRX_Diff, csi_ReportWithoutCQI),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_csi_ReportWithoutCQI_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-ReportWithoutCQI"
+               },
+       { ATF_POINTER, 27, offsetof(struct Phy_ParametersFRX_Diff, onePortsPTRS),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_onePortsPTRS_constr_20, &asn_PER_memb_onePortsPTRS_constr_20,  memb_onePortsPTRS_constraint_1 },
+               0, 0, /* No default value */
+               "onePortsPTRS"
+               },
+       { ATF_POINTER, 26, offsetof(struct Phy_ParametersFRX_Diff, twoPUCCH_F0_2_ConsecSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUCCH_F0_2_ConsecSymbols_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUCCH-F0-2-ConsecSymbols"
+               },
+       { ATF_POINTER, 25, offsetof(struct Phy_ParametersFRX_Diff, pucch_F2_WithFH),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_F2_WithFH_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-F2-WithFH"
+               },
+       { ATF_POINTER, 24, offsetof(struct Phy_ParametersFRX_Diff, pucch_F3_WithFH),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_F3_WithFH_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-F3-WithFH"
+               },
+       { ATF_POINTER, 23, offsetof(struct Phy_ParametersFRX_Diff, pucch_F4_WithFH),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_F4_WithFH_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-F4-WithFH"
+               },
+       { ATF_POINTER, 22, offsetof(struct Phy_ParametersFRX_Diff, freqHoppingPUCCH_F0_2),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_freqHoppingPUCCH_F0_2_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqHoppingPUCCH-F0-2"
+               },
+       { ATF_POINTER, 21, offsetof(struct Phy_ParametersFRX_Diff, freqHoppingPUCCH_F1_3_4),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_freqHoppingPUCCH_F1_3_4_31,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqHoppingPUCCH-F1-3-4"
+               },
+       { ATF_POINTER, 20, offsetof(struct Phy_ParametersFRX_Diff, mux_SR_HARQ_ACK_CSI_PUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mux-SR-HARQ-ACK-CSI-PUCCH"
+               },
+       { ATF_POINTER, 19, offsetof(struct Phy_ParametersFRX_Diff, uci_CodeBlockSegmentation),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_uci_CodeBlockSegmentation_35,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uci-CodeBlockSegmentation"
+               },
+       { ATF_POINTER, 18, offsetof(struct Phy_ParametersFRX_Diff, onePUCCH_LongAndShortFormat),
+               (ASN_TAG_CLASS_CONTEXT | (19 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_onePUCCH_LongAndShortFormat_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "onePUCCH-LongAndShortFormat"
+               },
+       { ATF_POINTER, 17, offsetof(struct Phy_ParametersFRX_Diff, twoPUCCH_AnyOthersInSlot),
+               (ASN_TAG_CLASS_CONTEXT | (20 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUCCH_AnyOthersInSlot_39,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUCCH-AnyOthersInSlot"
+               },
+       { ATF_POINTER, 16, offsetof(struct Phy_ParametersFRX_Diff, intraSlotFreqHopping_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (21 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_intraSlotFreqHopping_PUSCH_41,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraSlotFreqHopping-PUSCH"
+               },
+       { ATF_POINTER, 15, offsetof(struct Phy_ParametersFRX_Diff, pusch_LBRM),
+               (ASN_TAG_CLASS_CONTEXT | (22 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_LBRM_43,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-LBRM"
+               },
+       { ATF_POINTER, 14, offsetof(struct Phy_ParametersFRX_Diff, pdcch_BlindDetectionCA),
+               (ASN_TAG_CLASS_CONTEXT | (23 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_pdcch_BlindDetectionCA_constr_45, &asn_PER_memb_pdcch_BlindDetectionCA_constr_45,  memb_pdcch_BlindDetectionCA_constraint_1 },
+               0, 0, /* No default value */
+               "pdcch-BlindDetectionCA"
+               },
+       { ATF_POINTER, 13, offsetof(struct Phy_ParametersFRX_Diff, tpc_PUSCH_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (24 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tpc_PUSCH_RNTI_46,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUSCH-RNTI"
+               },
+       { ATF_POINTER, 12, offsetof(struct Phy_ParametersFRX_Diff, tpc_PUCCH_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (25 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tpc_PUCCH_RNTI_48,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUCCH-RNTI"
+               },
+       { ATF_POINTER, 11, offsetof(struct Phy_ParametersFRX_Diff, tpc_SRS_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (26 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tpc_SRS_RNTI_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-SRS-RNTI"
+               },
+       { ATF_POINTER, 10, offsetof(struct Phy_ParametersFRX_Diff, absoluteTPC_Command),
+               (ASN_TAG_CLASS_CONTEXT | (27 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_absoluteTPC_Command_52,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absoluteTPC-Command"
+               },
+       { ATF_POINTER, 9, offsetof(struct Phy_ParametersFRX_Diff, twoDifferentTPC_Loop_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (28 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoDifferentTPC_Loop_PUSCH_54,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoDifferentTPC-Loop-PUSCH"
+               },
+       { ATF_POINTER, 8, offsetof(struct Phy_ParametersFRX_Diff, twoDifferentTPC_Loop_PUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (29 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoDifferentTPC_Loop_PUCCH_56,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoDifferentTPC-Loop-PUCCH"
+               },
+       { ATF_POINTER, 7, offsetof(struct Phy_ParametersFRX_Diff, pusch_HalfPi_BPSK),
+               (ASN_TAG_CLASS_CONTEXT | (30 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pusch_HalfPi_BPSK_58,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-HalfPi-BPSK"
+               },
+       { ATF_POINTER, 6, offsetof(struct Phy_ParametersFRX_Diff, pucch_F3_4_HalfPi_BPSK),
+               (ASN_TAG_CLASS_CONTEXT | (31 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pucch_F3_4_HalfPi_BPSK_60,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pucch-F3-4-HalfPi-BPSK"
+               },
+       { ATF_POINTER, 5, offsetof(struct Phy_ParametersFRX_Diff, almostContiguousCP_OFDM_UL),
+               (ASN_TAG_CLASS_CONTEXT | (32 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_almostContiguousCP_OFDM_UL_62,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "almostContiguousCP-OFDM-UL"
+               },
+       { ATF_POINTER, 4, offsetof(struct Phy_ParametersFRX_Diff, sp_CSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (33 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_CSI_RS_64,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-CSI-RS"
+               },
+       { ATF_POINTER, 3, offsetof(struct Phy_ParametersFRX_Diff, sp_CSI_IM),
+               (ASN_TAG_CLASS_CONTEXT | (34 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sp_CSI_IM_66,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-CSI-IM"
+               },
+       { ATF_POINTER, 2, offsetof(struct Phy_ParametersFRX_Diff, tdd_MultiDL_UL_SwitchPerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (35 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_68,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-MultiDL-UL-SwitchPerSlot"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersFRX_Diff, multipleCORESET),
+               (ASN_TAG_CLASS_CONTEXT | (36 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_multipleCORESET_70,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "multipleCORESET"
+               },
+};
+static const int asn_MAP_Phy_ParametersFRX_Diff_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, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersFRX_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersFRX_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dynamicSFI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oneFL-DMRS-TwoAdditionalDMRS */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* twoFL-DMRS */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* twoFL-DMRS-TwoAdditionalDMRS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* oneFL-DMRS-ThreeAdditionalDMRS */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* supportedDMRS-TypeDL */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* supportedDMRS-TypeUL */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* semiOpenLoopCSI */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* csi-ReportWithoutPMI */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* csi-ReportWithoutCQI */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* onePortsPTRS */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* twoPUCCH-F0-2-ConsecSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* pucch-F2-WithFH */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* pucch-F3-WithFH */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* pucch-F4-WithFH */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* freqHoppingPUCCH-F0-2 */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* freqHoppingPUCCH-F1-3-4 */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* mux-SR-HARQ-ACK-CSI-PUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 }, /* uci-CodeBlockSegmentation */
+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 19, 0, 0 }, /* onePUCCH-LongAndShortFormat */
+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 20, 0, 0 }, /* twoPUCCH-AnyOthersInSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (21 << 2)), 21, 0, 0 }, /* intraSlotFreqHopping-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (22 << 2)), 22, 0, 0 }, /* pusch-LBRM */
+    { (ASN_TAG_CLASS_CONTEXT | (23 << 2)), 23, 0, 0 }, /* pdcch-BlindDetectionCA */
+    { (ASN_TAG_CLASS_CONTEXT | (24 << 2)), 24, 0, 0 }, /* tpc-PUSCH-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (25 << 2)), 25, 0, 0 }, /* tpc-PUCCH-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (26 << 2)), 26, 0, 0 }, /* tpc-SRS-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (27 << 2)), 27, 0, 0 }, /* absoluteTPC-Command */
+    { (ASN_TAG_CLASS_CONTEXT | (28 << 2)), 28, 0, 0 }, /* twoDifferentTPC-Loop-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (29 << 2)), 29, 0, 0 }, /* twoDifferentTPC-Loop-PUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (30 << 2)), 30, 0, 0 }, /* pusch-HalfPi-BPSK */
+    { (ASN_TAG_CLASS_CONTEXT | (31 << 2)), 31, 0, 0 }, /* pucch-F3-4-HalfPi-BPSK */
+    { (ASN_TAG_CLASS_CONTEXT | (32 << 2)), 32, 0, 0 }, /* almostContiguousCP-OFDM-UL */
+    { (ASN_TAG_CLASS_CONTEXT | (33 << 2)), 33, 0, 0 }, /* sp-CSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (34 << 2)), 34, 0, 0 }, /* sp-CSI-IM */
+    { (ASN_TAG_CLASS_CONTEXT | (35 << 2)), 35, 0, 0 }, /* tdd-MultiDL-UL-SwitchPerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (36 << 2)), 36, 0, 0 } /* multipleCORESET */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFRX_Diff_specs_1 = {
+       sizeof(struct Phy_ParametersFRX_Diff),
+       offsetof(struct Phy_ParametersFRX_Diff, _asn_ctx),
+       asn_MAP_Phy_ParametersFRX_Diff_tag2el_1,
+       37,     /* Count of tags in the map */
+       asn_MAP_Phy_ParametersFRX_Diff_oms_1,   /* Optional members */
+       37, 0,  /* Root/Additions */
+       37,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFRX_Diff = {
+       "Phy-ParametersFRX-Diff",
+       "Phy-ParametersFRX-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersFRX_Diff_tags_1,
+       sizeof(asn_DEF_Phy_ParametersFRX_Diff_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFRX_Diff_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersFRX_Diff_tags_1,  /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersFRX_Diff_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersFRX_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersFRX_Diff_1,
+       37,     /* Elements count */
+       &asn_SPC_Phy_ParametersFRX_Diff_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersFRX-Diff.h b/src/codec_utils/RRC/Phy-ParametersFRX-Diff.h
new file mode 100644 (file)
index 0000000..03ab49b
--- /dev/null
@@ -0,0 +1,210 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersFRX_Diff_H_
+#define        _Phy_ParametersFRX_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BIT_STRING.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Phy_ParametersFRX_Diff__dynamicSFI {
+       Phy_ParametersFRX_Diff__dynamicSFI_supported    = 0
+} e_Phy_ParametersFRX_Diff__dynamicSFI;
+typedef enum Phy_ParametersFRX_Diff__supportedDMRS_TypeDL {
+       Phy_ParametersFRX_Diff__supportedDMRS_TypeDL_type1      = 0,
+       Phy_ParametersFRX_Diff__supportedDMRS_TypeDL_type1And2  = 1
+} e_Phy_ParametersFRX_Diff__supportedDMRS_TypeDL;
+typedef enum Phy_ParametersFRX_Diff__supportedDMRS_TypeUL {
+       Phy_ParametersFRX_Diff__supportedDMRS_TypeUL_type1      = 0,
+       Phy_ParametersFRX_Diff__supportedDMRS_TypeUL_type1And2  = 1
+} e_Phy_ParametersFRX_Diff__supportedDMRS_TypeUL;
+typedef enum Phy_ParametersFRX_Diff__semiOpenLoopCSI {
+       Phy_ParametersFRX_Diff__semiOpenLoopCSI_supported       = 0
+} e_Phy_ParametersFRX_Diff__semiOpenLoopCSI;
+typedef enum Phy_ParametersFRX_Diff__csi_ReportWithoutPMI {
+       Phy_ParametersFRX_Diff__csi_ReportWithoutPMI_supported  = 0
+} e_Phy_ParametersFRX_Diff__csi_ReportWithoutPMI;
+typedef enum Phy_ParametersFRX_Diff__csi_ReportWithoutCQI {
+       Phy_ParametersFRX_Diff__csi_ReportWithoutCQI_supported  = 0
+} e_Phy_ParametersFRX_Diff__csi_ReportWithoutCQI;
+typedef enum Phy_ParametersFRX_Diff__twoPUCCH_F0_2_ConsecSymbols {
+       Phy_ParametersFRX_Diff__twoPUCCH_F0_2_ConsecSymbols_supported   = 0
+} e_Phy_ParametersFRX_Diff__twoPUCCH_F0_2_ConsecSymbols;
+typedef enum Phy_ParametersFRX_Diff__pucch_F2_WithFH {
+       Phy_ParametersFRX_Diff__pucch_F2_WithFH_supported       = 0
+} e_Phy_ParametersFRX_Diff__pucch_F2_WithFH;
+typedef enum Phy_ParametersFRX_Diff__pucch_F3_WithFH {
+       Phy_ParametersFRX_Diff__pucch_F3_WithFH_supported       = 0
+} e_Phy_ParametersFRX_Diff__pucch_F3_WithFH;
+typedef enum Phy_ParametersFRX_Diff__pucch_F4_WithFH {
+       Phy_ParametersFRX_Diff__pucch_F4_WithFH_supported       = 0
+} e_Phy_ParametersFRX_Diff__pucch_F4_WithFH;
+typedef enum Phy_ParametersFRX_Diff__freqHoppingPUCCH_F0_2 {
+       Phy_ParametersFRX_Diff__freqHoppingPUCCH_F0_2_notSupported      = 0
+} e_Phy_ParametersFRX_Diff__freqHoppingPUCCH_F0_2;
+typedef enum Phy_ParametersFRX_Diff__freqHoppingPUCCH_F1_3_4 {
+       Phy_ParametersFRX_Diff__freqHoppingPUCCH_F1_3_4_notSupported    = 0
+} e_Phy_ParametersFRX_Diff__freqHoppingPUCCH_F1_3_4;
+typedef enum Phy_ParametersFRX_Diff__mux_SR_HARQ_ACK_CSI_PUCCH {
+       Phy_ParametersFRX_Diff__mux_SR_HARQ_ACK_CSI_PUCCH_supported     = 0
+} e_Phy_ParametersFRX_Diff__mux_SR_HARQ_ACK_CSI_PUCCH;
+typedef enum Phy_ParametersFRX_Diff__uci_CodeBlockSegmentation {
+       Phy_ParametersFRX_Diff__uci_CodeBlockSegmentation_supported     = 0
+} e_Phy_ParametersFRX_Diff__uci_CodeBlockSegmentation;
+typedef enum Phy_ParametersFRX_Diff__onePUCCH_LongAndShortFormat {
+       Phy_ParametersFRX_Diff__onePUCCH_LongAndShortFormat_supported   = 0
+} e_Phy_ParametersFRX_Diff__onePUCCH_LongAndShortFormat;
+typedef enum Phy_ParametersFRX_Diff__twoPUCCH_AnyOthersInSlot {
+       Phy_ParametersFRX_Diff__twoPUCCH_AnyOthersInSlot_supported      = 0
+} e_Phy_ParametersFRX_Diff__twoPUCCH_AnyOthersInSlot;
+typedef enum Phy_ParametersFRX_Diff__intraSlotFreqHopping_PUSCH {
+       Phy_ParametersFRX_Diff__intraSlotFreqHopping_PUSCH_supported    = 0
+} e_Phy_ParametersFRX_Diff__intraSlotFreqHopping_PUSCH;
+typedef enum Phy_ParametersFRX_Diff__pusch_LBRM {
+       Phy_ParametersFRX_Diff__pusch_LBRM_supported    = 0
+} e_Phy_ParametersFRX_Diff__pusch_LBRM;
+typedef enum Phy_ParametersFRX_Diff__tpc_PUSCH_RNTI {
+       Phy_ParametersFRX_Diff__tpc_PUSCH_RNTI_supported        = 0
+} e_Phy_ParametersFRX_Diff__tpc_PUSCH_RNTI;
+typedef enum Phy_ParametersFRX_Diff__tpc_PUCCH_RNTI {
+       Phy_ParametersFRX_Diff__tpc_PUCCH_RNTI_supported        = 0
+} e_Phy_ParametersFRX_Diff__tpc_PUCCH_RNTI;
+typedef enum Phy_ParametersFRX_Diff__tpc_SRS_RNTI {
+       Phy_ParametersFRX_Diff__tpc_SRS_RNTI_supported  = 0
+} e_Phy_ParametersFRX_Diff__tpc_SRS_RNTI;
+typedef enum Phy_ParametersFRX_Diff__absoluteTPC_Command {
+       Phy_ParametersFRX_Diff__absoluteTPC_Command_supported   = 0
+} e_Phy_ParametersFRX_Diff__absoluteTPC_Command;
+typedef enum Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUSCH {
+       Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUSCH_supported    = 0
+} e_Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUSCH;
+typedef enum Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUCCH {
+       Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUCCH_supported    = 0
+} e_Phy_ParametersFRX_Diff__twoDifferentTPC_Loop_PUCCH;
+typedef enum Phy_ParametersFRX_Diff__pusch_HalfPi_BPSK {
+       Phy_ParametersFRX_Diff__pusch_HalfPi_BPSK_supported     = 0
+} e_Phy_ParametersFRX_Diff__pusch_HalfPi_BPSK;
+typedef enum Phy_ParametersFRX_Diff__pucch_F3_4_HalfPi_BPSK {
+       Phy_ParametersFRX_Diff__pucch_F3_4_HalfPi_BPSK_supported        = 0
+} e_Phy_ParametersFRX_Diff__pucch_F3_4_HalfPi_BPSK;
+typedef enum Phy_ParametersFRX_Diff__almostContiguousCP_OFDM_UL {
+       Phy_ParametersFRX_Diff__almostContiguousCP_OFDM_UL_supported    = 0
+} e_Phy_ParametersFRX_Diff__almostContiguousCP_OFDM_UL;
+typedef enum Phy_ParametersFRX_Diff__sp_CSI_RS {
+       Phy_ParametersFRX_Diff__sp_CSI_RS_supported     = 0
+} e_Phy_ParametersFRX_Diff__sp_CSI_RS;
+typedef enum Phy_ParametersFRX_Diff__sp_CSI_IM {
+       Phy_ParametersFRX_Diff__sp_CSI_IM_supported     = 0
+} e_Phy_ParametersFRX_Diff__sp_CSI_IM;
+typedef enum Phy_ParametersFRX_Diff__tdd_MultiDL_UL_SwitchPerSlot {
+       Phy_ParametersFRX_Diff__tdd_MultiDL_UL_SwitchPerSlot_supported  = 0
+} e_Phy_ParametersFRX_Diff__tdd_MultiDL_UL_SwitchPerSlot;
+typedef enum Phy_ParametersFRX_Diff__multipleCORESET {
+       Phy_ParametersFRX_Diff__multipleCORESET_supported       = 0
+} e_Phy_ParametersFRX_Diff__multipleCORESET;
+
+/* Phy-ParametersFRX-Diff */
+typedef struct Phy_ParametersFRX_Diff {
+       long    *dynamicSFI;    /* OPTIONAL */
+       BIT_STRING_t    *oneFL_DMRS_TwoAdditionalDMRS;  /* OPTIONAL */
+       BIT_STRING_t    *twoFL_DMRS;    /* OPTIONAL */
+       BIT_STRING_t    *twoFL_DMRS_TwoAdditionalDMRS;  /* OPTIONAL */
+       BIT_STRING_t    *oneFL_DMRS_ThreeAdditionalDMRS;        /* OPTIONAL */
+       long    *supportedDMRS_TypeDL;  /* OPTIONAL */
+       long    *supportedDMRS_TypeUL;  /* OPTIONAL */
+       long    *semiOpenLoopCSI;       /* OPTIONAL */
+       long    *csi_ReportWithoutPMI;  /* OPTIONAL */
+       long    *csi_ReportWithoutCQI;  /* OPTIONAL */
+       BIT_STRING_t    *onePortsPTRS;  /* OPTIONAL */
+       long    *twoPUCCH_F0_2_ConsecSymbols;   /* OPTIONAL */
+       long    *pucch_F2_WithFH;       /* OPTIONAL */
+       long    *pucch_F3_WithFH;       /* OPTIONAL */
+       long    *pucch_F4_WithFH;       /* OPTIONAL */
+       long    *freqHoppingPUCCH_F0_2; /* OPTIONAL */
+       long    *freqHoppingPUCCH_F1_3_4;       /* OPTIONAL */
+       long    *mux_SR_HARQ_ACK_CSI_PUCCH;     /* OPTIONAL */
+       long    *uci_CodeBlockSegmentation;     /* OPTIONAL */
+       long    *onePUCCH_LongAndShortFormat;   /* OPTIONAL */
+       long    *twoPUCCH_AnyOthersInSlot;      /* OPTIONAL */
+       long    *intraSlotFreqHopping_PUSCH;    /* OPTIONAL */
+       long    *pusch_LBRM;    /* OPTIONAL */
+       long    *pdcch_BlindDetectionCA;        /* OPTIONAL */
+       long    *tpc_PUSCH_RNTI;        /* OPTIONAL */
+       long    *tpc_PUCCH_RNTI;        /* OPTIONAL */
+       long    *tpc_SRS_RNTI;  /* OPTIONAL */
+       long    *absoluteTPC_Command;   /* OPTIONAL */
+       long    *twoDifferentTPC_Loop_PUSCH;    /* OPTIONAL */
+       long    *twoDifferentTPC_Loop_PUCCH;    /* OPTIONAL */
+       long    *pusch_HalfPi_BPSK;     /* OPTIONAL */
+       long    *pucch_F3_4_HalfPi_BPSK;        /* OPTIONAL */
+       long    *almostContiguousCP_OFDM_UL;    /* OPTIONAL */
+       long    *sp_CSI_RS;     /* OPTIONAL */
+       long    *sp_CSI_IM;     /* OPTIONAL */
+       long    *tdd_MultiDL_UL_SwitchPerSlot;  /* OPTIONAL */
+       long    *multipleCORESET;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersFRX_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicSFI_2;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedDMRS_TypeDL_8;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedDMRS_TypeUL_11;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_semiOpenLoopCSI_14;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_ReportWithoutPMI_16;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_csi_ReportWithoutCQI_18;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUCCH_F0_2_ConsecSymbols_21;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_F2_WithFH_23;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_F3_WithFH_25;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_F4_WithFH_27;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_freqHoppingPUCCH_F0_2_29;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_freqHoppingPUCCH_F1_3_4_31;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mux_SR_HARQ_ACK_CSI_PUCCH_33;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_uci_CodeBlockSegmentation_35;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_onePUCCH_LongAndShortFormat_37;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUCCH_AnyOthersInSlot_39;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_intraSlotFreqHopping_PUSCH_41; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_LBRM_43; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tpc_PUSCH_RNTI_46;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tpc_PUCCH_RNTI_48;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tpc_SRS_RNTI_50;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_absoluteTPC_Command_52;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUSCH_54; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUCCH_56; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pusch_HalfPi_BPSK_58;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pucch_F3_4_HalfPi_BPSK_60;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_almostContiguousCP_OFDM_UL_62; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_CSI_RS_64;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sp_CSI_IM_66;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_tdd_MultiDL_UL_SwitchPerSlot_68;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_multipleCORESET_70;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersFRX_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersFRX_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersFRX_Diff_1[37];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersFRX_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersMRDC.c b/src/codec_utils/RRC/Phy-ParametersMRDC.c
new file mode 100644 (file)
index 0000000..6895787
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersMRDC.h"
+
+#include "NAICS-Capability-Entry.h"
+static int
+memb_naics_Capability_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 <= 8)) {
+               /* 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_naics_Capability_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_naics_Capability_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_naics_Capability_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_naics_Capability_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_naics_Capability_List_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_NAICS_Capability_Entry,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_naics_Capability_List_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_naics_Capability_List_specs_2 = {
+       sizeof(struct Phy_ParametersMRDC__naics_Capability_List),
+       offsetof(struct Phy_ParametersMRDC__naics_Capability_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_naics_Capability_List_2 = {
+       "naics-Capability-List",
+       "naics-Capability-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_naics_Capability_List_tags_2,
+       sizeof(asn_DEF_naics_Capability_List_tags_2)
+               /sizeof(asn_DEF_naics_Capability_List_tags_2[0]) - 1, /* 1 */
+       asn_DEF_naics_Capability_List_tags_2,   /* Same as above */
+       sizeof(asn_DEF_naics_Capability_List_tags_2)
+               /sizeof(asn_DEF_naics_Capability_List_tags_2[0]), /* 2 */
+       { &asn_OER_type_naics_Capability_List_constr_2, &asn_PER_type_naics_Capability_List_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_naics_Capability_List_2,
+       1,      /* Single element */
+       &asn_SPC_naics_Capability_List_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersMRDC_1[] = {
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersMRDC, naics_Capability_List),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_naics_Capability_List_2,
+               0,
+               { &asn_OER_memb_naics_Capability_List_constr_2, &asn_PER_memb_naics_Capability_List_constr_2,  memb_naics_Capability_List_constraint_1 },
+               0, 0, /* No default value */
+               "naics-Capability-List"
+               },
+};
+static const int asn_MAP_Phy_ParametersMRDC_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersMRDC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersMRDC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* naics-Capability-List */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersMRDC_specs_1 = {
+       sizeof(struct Phy_ParametersMRDC),
+       offsetof(struct Phy_ParametersMRDC, _asn_ctx),
+       asn_MAP_Phy_ParametersMRDC_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_Phy_ParametersMRDC_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersMRDC = {
+       "Phy-ParametersMRDC",
+       "Phy-ParametersMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersMRDC_tags_1,
+       sizeof(asn_DEF_Phy_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersMRDC_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersMRDC_tags_1,      /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersMRDC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersMRDC_1,
+       1,      /* Elements count */
+       &asn_SPC_Phy_ParametersMRDC_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersMRDC.h b/src/codec_utils/RRC/Phy-ParametersMRDC.h
new file mode 100644 (file)
index 0000000..8621b39
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersMRDC_H_
+#define        _Phy_ParametersMRDC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct NAICS_Capability_Entry;
+
+/* Phy-ParametersMRDC */
+typedef struct Phy_ParametersMRDC {
+       struct Phy_ParametersMRDC__naics_Capability_List {
+               A_SEQUENCE_OF(struct NAICS_Capability_Entry) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *naics_Capability_List;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersMRDC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersMRDC;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersMRDC_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersMRDC_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersMRDC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Phy-ParametersXDD-Diff.c b/src/codec_utils/RRC/Phy-ParametersXDD-Diff.c
new file mode 100644 (file)
index 0000000..e59e731
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Phy-ParametersXDD-Diff.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.
+ */
+static asn_oer_constraints_t asn_OER_type_dynamicSFI_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dynamicSFI_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoPUCCH_F0_2_ConsecSymbols_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoPUCCH_F0_2_ConsecSymbols_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoDifferentTPC_Loop_PUSCH_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoDifferentTPC_Loop_PUSCH_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_twoDifferentTPC_Loop_PUCCH_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_twoDifferentTPC_Loop_PUCCH_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dynamicSFI_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_dynamicSFI_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dynamicSFI_specs_2 = {
+       asn_MAP_dynamicSFI_value2enum_2,        /* "tag" => N; sorted by tag */
+       asn_MAP_dynamicSFI_enum2value_2,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dynamicSFI_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_dynamicSFI_2 = {
+       "dynamicSFI",
+       "dynamicSFI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dynamicSFI_tags_2,
+       sizeof(asn_DEF_dynamicSFI_tags_2)
+               /sizeof(asn_DEF_dynamicSFI_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dynamicSFI_tags_2,      /* Same as above */
+       sizeof(asn_DEF_dynamicSFI_tags_2)
+               /sizeof(asn_DEF_dynamicSFI_tags_2[0]), /* 2 */
+       { &asn_OER_type_dynamicSFI_constr_2, &asn_PER_type_dynamicSFI_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dynamicSFI_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoPUCCH_F0_2_ConsecSymbols_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoPUCCH_F0_2_ConsecSymbols_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoPUCCH_F0_2_ConsecSymbols_specs_4 = {
+       asn_MAP_twoPUCCH_F0_2_ConsecSymbols_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_twoPUCCH_F0_2_ConsecSymbols_enum2value_4,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4[] = {
+       (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_twoPUCCH_F0_2_ConsecSymbols_4 = {
+       "twoPUCCH-F0-2-ConsecSymbols",
+       "twoPUCCH-F0-2-ConsecSymbols",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4,
+       sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4)
+               /sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4[0]) - 1, /* 1 */
+       asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4,     /* Same as above */
+       sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4)
+               /sizeof(asn_DEF_twoPUCCH_F0_2_ConsecSymbols_tags_4[0]), /* 2 */
+       { &asn_OER_type_twoPUCCH_F0_2_ConsecSymbols_constr_4, &asn_PER_type_twoPUCCH_F0_2_ConsecSymbols_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoPUCCH_F0_2_ConsecSymbols_specs_4    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoDifferentTPC_Loop_PUSCH_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoDifferentTPC_Loop_PUSCH_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoDifferentTPC_Loop_PUSCH_specs_6 = {
+       asn_MAP_twoDifferentTPC_Loop_PUSCH_value2enum_6,        /* "tag" => N; sorted by tag */
+       asn_MAP_twoDifferentTPC_Loop_PUSCH_enum2value_6,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6[] = {
+       (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_twoDifferentTPC_Loop_PUSCH_6 = {
+       "twoDifferentTPC-Loop-PUSCH",
+       "twoDifferentTPC-Loop-PUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6,
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6[0]) - 1, /* 1 */
+       asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6,      /* Same as above */
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUSCH_tags_6[0]), /* 2 */
+       { &asn_OER_type_twoDifferentTPC_Loop_PUSCH_constr_6, &asn_PER_type_twoDifferentTPC_Loop_PUSCH_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoDifferentTPC_Loop_PUSCH_specs_6     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_twoDifferentTPC_Loop_PUCCH_value2enum_8[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_twoDifferentTPC_Loop_PUCCH_enum2value_8[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_twoDifferentTPC_Loop_PUCCH_specs_8 = {
+       asn_MAP_twoDifferentTPC_Loop_PUCCH_value2enum_8,        /* "tag" => N; sorted by tag */
+       asn_MAP_twoDifferentTPC_Loop_PUCCH_enum2value_8,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8[] = {
+       (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_twoDifferentTPC_Loop_PUCCH_8 = {
+       "twoDifferentTPC-Loop-PUCCH",
+       "twoDifferentTPC-Loop-PUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8,
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8[0]) - 1, /* 1 */
+       asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8,      /* Same as above */
+       sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8)
+               /sizeof(asn_DEF_twoDifferentTPC_Loop_PUCCH_tags_8[0]), /* 2 */
+       { &asn_OER_type_twoDifferentTPC_Loop_PUCCH_constr_8, &asn_PER_type_twoDifferentTPC_Loop_PUCCH_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_twoDifferentTPC_Loop_PUCCH_specs_8     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_Phy_ParametersXDD_Diff_1[] = {
+       { ATF_POINTER, 4, offsetof(struct Phy_ParametersXDD_Diff, dynamicSFI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dynamicSFI_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dynamicSFI"
+               },
+       { ATF_POINTER, 3, offsetof(struct Phy_ParametersXDD_Diff, twoPUCCH_F0_2_ConsecSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoPUCCH_F0_2_ConsecSymbols_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoPUCCH-F0-2-ConsecSymbols"
+               },
+       { ATF_POINTER, 2, offsetof(struct Phy_ParametersXDD_Diff, twoDifferentTPC_Loop_PUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoDifferentTPC_Loop_PUSCH_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoDifferentTPC-Loop-PUSCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct Phy_ParametersXDD_Diff, twoDifferentTPC_Loop_PUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_twoDifferentTPC_Loop_PUCCH_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "twoDifferentTPC-Loop-PUCCH"
+               },
+};
+static const int asn_MAP_Phy_ParametersXDD_Diff_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_Phy_ParametersXDD_Diff_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Phy_ParametersXDD_Diff_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dynamicSFI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* twoPUCCH-F0-2-ConsecSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* twoDifferentTPC-Loop-PUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* twoDifferentTPC-Loop-PUCCH */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersXDD_Diff_specs_1 = {
+       sizeof(struct Phy_ParametersXDD_Diff),
+       offsetof(struct Phy_ParametersXDD_Diff, _asn_ctx),
+       asn_MAP_Phy_ParametersXDD_Diff_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_Phy_ParametersXDD_Diff_oms_1,   /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Phy_ParametersXDD_Diff = {
+       "Phy-ParametersXDD-Diff",
+       "Phy-ParametersXDD-Diff",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Phy_ParametersXDD_Diff_tags_1,
+       sizeof(asn_DEF_Phy_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       asn_DEF_Phy_ParametersXDD_Diff_tags_1,  /* Same as above */
+       sizeof(asn_DEF_Phy_ParametersXDD_Diff_tags_1)
+               /sizeof(asn_DEF_Phy_ParametersXDD_Diff_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Phy_ParametersXDD_Diff_1,
+       4,      /* Elements count */
+       &asn_SPC_Phy_ParametersXDD_Diff_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Phy-ParametersXDD-Diff.h b/src/codec_utils/RRC/Phy-ParametersXDD-Diff.h
new file mode 100644 (file)
index 0000000..60bf45e
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Phy_ParametersXDD_Diff_H_
+#define        _Phy_ParametersXDD_Diff_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Phy_ParametersXDD_Diff__dynamicSFI {
+       Phy_ParametersXDD_Diff__dynamicSFI_supported    = 0
+} e_Phy_ParametersXDD_Diff__dynamicSFI;
+typedef enum Phy_ParametersXDD_Diff__twoPUCCH_F0_2_ConsecSymbols {
+       Phy_ParametersXDD_Diff__twoPUCCH_F0_2_ConsecSymbols_supported   = 0
+} e_Phy_ParametersXDD_Diff__twoPUCCH_F0_2_ConsecSymbols;
+typedef enum Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUSCH {
+       Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUSCH_supported    = 0
+} e_Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUSCH;
+typedef enum Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUCCH {
+       Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUCCH_supported    = 0
+} e_Phy_ParametersXDD_Diff__twoDifferentTPC_Loop_PUCCH;
+
+/* Phy-ParametersXDD-Diff */
+typedef struct Phy_ParametersXDD_Diff {
+       long    *dynamicSFI;    /* OPTIONAL */
+       long    *twoPUCCH_F0_2_ConsecSymbols;   /* OPTIONAL */
+       long    *twoDifferentTPC_Loop_PUSCH;    /* OPTIONAL */
+       long    *twoDifferentTPC_Loop_PUCCH;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Phy_ParametersXDD_Diff_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dynamicSFI_2;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoPUCCH_F0_2_ConsecSymbols_4; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUSCH_6;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_twoDifferentTPC_Loop_PUCCH_8;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_Phy_ParametersXDD_Diff;
+extern asn_SEQUENCE_specifics_t asn_SPC_Phy_ParametersXDD_Diff_specs_1;
+extern asn_TYPE_member_t asn_MBR_Phy_ParametersXDD_Diff_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Phy_ParametersXDD_Diff_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PhysCellId.c b/src/codec_utils/RRC/PhysCellId.c
new file mode 100644 (file)
index 0000000..7ce017c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PhysCellId.h"
+
+int
+PhysCellId_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 <= 1007)) {
+               /* 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_PhysCellId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1007) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PhysCellId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1007 }   /* (0..1007) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PhysCellId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PhysCellId = {
+       "PhysCellId",
+       "PhysCellId",
+       &asn_OP_NativeInteger,
+       asn_DEF_PhysCellId_tags_1,
+       sizeof(asn_DEF_PhysCellId_tags_1)
+               /sizeof(asn_DEF_PhysCellId_tags_1[0]), /* 1 */
+       asn_DEF_PhysCellId_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PhysCellId_tags_1)
+               /sizeof(asn_DEF_PhysCellId_tags_1[0]), /* 1 */
+       { &asn_OER_type_PhysCellId_constr_1, &asn_PER_type_PhysCellId_constr_1, PhysCellId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PhysCellId.h b/src/codec_utils/RRC/PhysCellId.h
new file mode 100644 (file)
index 0000000..23e0f3a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PhysCellId_H_
+#define        _PhysCellId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PhysCellId */
+typedef long    PhysCellId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PhysCellId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PhysCellId;
+asn_struct_free_f PhysCellId_free;
+asn_struct_print_f PhysCellId_print;
+asn_constr_check_f PhysCellId_constraint;
+ber_type_decoder_f PhysCellId_decode_ber;
+der_type_encoder_f PhysCellId_encode_der;
+xer_type_decoder_f PhysCellId_decode_xer;
+xer_type_encoder_f PhysCellId_encode_xer;
+oer_type_decoder_f PhysCellId_decode_oer;
+oer_type_encoder_f PhysCellId_encode_oer;
+per_type_decoder_f PhysCellId_decode_uper;
+per_type_encoder_f PhysCellId_encode_uper;
+per_type_decoder_f PhysCellId_decode_aper;
+per_type_encoder_f PhysCellId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PhysCellId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PhysicalCellGroupConfig.c b/src/codec_utils/RRC/PhysicalCellGroupConfig.c
new file mode 100644 (file)
index 0000000..c78000a
--- /dev/null
@@ -0,0 +1,505 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PhysicalCellGroupConfig.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.
+ */
+static asn_oer_constraints_t asn_OER_type_harq_ACK_SpatialBundlingPUCCH_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_harq_ACK_SpatialBundlingPUCCH_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_harq_ACK_SpatialBundlingPUSCH_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_harq_ACK_SpatialBundlingPUSCH_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_HARQ_ACK_Codebook_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_HARQ_ACK_Codebook_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cs_RNTI_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cs_RNTI_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_xScale_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_xScale_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_harq_ACK_SpatialBundlingPUCCH_value2enum_2[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_harq_ACK_SpatialBundlingPUCCH_enum2value_2[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_harq_ACK_SpatialBundlingPUCCH_specs_2 = {
+       asn_MAP_harq_ACK_SpatialBundlingPUCCH_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_harq_ACK_SpatialBundlingPUCCH_enum2value_2,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_harq_ACK_SpatialBundlingPUCCH_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_harq_ACK_SpatialBundlingPUCCH_2 = {
+       "harq-ACK-SpatialBundlingPUCCH",
+       "harq-ACK-SpatialBundlingPUCCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2,
+       sizeof(asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2)
+               /sizeof(asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2[0]) - 1, /* 1 */
+       asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2,   /* Same as above */
+       sizeof(asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2)
+               /sizeof(asn_DEF_harq_ACK_SpatialBundlingPUCCH_tags_2[0]), /* 2 */
+       { &asn_OER_type_harq_ACK_SpatialBundlingPUCCH_constr_2, &asn_PER_type_harq_ACK_SpatialBundlingPUCCH_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_harq_ACK_SpatialBundlingPUCCH_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_harq_ACK_SpatialBundlingPUSCH_value2enum_4[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_harq_ACK_SpatialBundlingPUSCH_enum2value_4[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_harq_ACK_SpatialBundlingPUSCH_specs_4 = {
+       asn_MAP_harq_ACK_SpatialBundlingPUSCH_value2enum_4,     /* "tag" => N; sorted by tag */
+       asn_MAP_harq_ACK_SpatialBundlingPUSCH_enum2value_4,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4[] = {
+       (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_harq_ACK_SpatialBundlingPUSCH_4 = {
+       "harq-ACK-SpatialBundlingPUSCH",
+       "harq-ACK-SpatialBundlingPUSCH",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4,
+       sizeof(asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4)
+               /sizeof(asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4[0]) - 1, /* 1 */
+       asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4,   /* Same as above */
+       sizeof(asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4)
+               /sizeof(asn_DEF_harq_ACK_SpatialBundlingPUSCH_tags_4[0]), /* 2 */
+       { &asn_OER_type_harq_ACK_SpatialBundlingPUSCH_constr_4, &asn_PER_type_harq_ACK_SpatialBundlingPUSCH_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_harq_ACK_SpatialBundlingPUSCH_specs_4  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pdsch_HARQ_ACK_Codebook_value2enum_7[] = {
+       { 0,    10,     "semiStatic" },
+       { 1,    7,      "dynamic" }
+};
+static const unsigned int asn_MAP_pdsch_HARQ_ACK_Codebook_enum2value_7[] = {
+       1,      /* dynamic(1) */
+       0       /* semiStatic(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pdsch_HARQ_ACK_Codebook_specs_7 = {
+       asn_MAP_pdsch_HARQ_ACK_Codebook_value2enum_7,   /* "tag" => N; sorted by tag */
+       asn_MAP_pdsch_HARQ_ACK_Codebook_enum2value_7,   /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7[] = {
+       (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_pdsch_HARQ_ACK_Codebook_7 = {
+       "pdsch-HARQ-ACK-Codebook",
+       "pdsch-HARQ-ACK-Codebook",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7,
+       sizeof(asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7)
+               /sizeof(asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7[0]) - 1, /* 1 */
+       asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7, /* Same as above */
+       sizeof(asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7)
+               /sizeof(asn_DEF_pdsch_HARQ_ACK_Codebook_tags_7[0]), /* 2 */
+       { &asn_OER_type_pdsch_HARQ_ACK_Codebook_constr_7, &asn_PER_type_pdsch_HARQ_ACK_Codebook_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pdsch_HARQ_ACK_Codebook_specs_7        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cs_RNTI_14[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct PhysicalCellGroupConfig__cs_RNTI, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PhysicalCellGroupConfig__cs_RNTI, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_cs_RNTI_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_cs_RNTI_specs_14 = {
+       sizeof(struct PhysicalCellGroupConfig__cs_RNTI),
+       offsetof(struct PhysicalCellGroupConfig__cs_RNTI, _asn_ctx),
+       offsetof(struct PhysicalCellGroupConfig__cs_RNTI, present),
+       sizeof(((struct PhysicalCellGroupConfig__cs_RNTI *)0)->present),
+       asn_MAP_cs_RNTI_tag2el_14,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cs_RNTI_14 = {
+       "cs-RNTI",
+       "cs-RNTI",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_cs_RNTI_constr_14, &asn_PER_type_cs_RNTI_constr_14, CHOICE_constraint },
+       asn_MBR_cs_RNTI_14,
+       2,      /* Elements count */
+       &asn_SPC_cs_RNTI_specs_14       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_18[] = {
+       { ATF_POINTER, 2, offsetof(struct PhysicalCellGroupConfig__ext1, mcs_C_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-C-RNTI"
+               },
+       { ATF_POINTER, 1, offsetof(struct PhysicalCellGroupConfig__ext1, p_UE_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-UE-FR1"
+               },
+};
+static const int asn_MAP_ext1_oms_18[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_18[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mcs-C-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* p-UE-FR1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_18 = {
+       sizeof(struct PhysicalCellGroupConfig__ext1),
+       offsetof(struct PhysicalCellGroupConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_18,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_18,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_18 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_18,
+       sizeof(asn_DEF_ext1_tags_18)
+               /sizeof(asn_DEF_ext1_tags_18[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_18,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_18)
+               /sizeof(asn_DEF_ext1_tags_18[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_18,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_18  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_xScale_value2enum_22[] = {
+       { 0,    3,      "dB0" },
+       { 1,    3,      "dB6" },
+       { 2,    6,      "spare2" },
+       { 3,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_xScale_enum2value_22[] = {
+       0,      /* dB0(0) */
+       1,      /* dB6(1) */
+       3,      /* spare1(3) */
+       2       /* spare2(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_xScale_specs_22 = {
+       asn_MAP_xScale_value2enum_22,   /* "tag" => N; sorted by tag */
+       asn_MAP_xScale_enum2value_22,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_xScale_tags_22[] = {
+       (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_xScale_22 = {
+       "xScale",
+       "xScale",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_xScale_tags_22,
+       sizeof(asn_DEF_xScale_tags_22)
+               /sizeof(asn_DEF_xScale_tags_22[0]) - 1, /* 1 */
+       asn_DEF_xScale_tags_22, /* Same as above */
+       sizeof(asn_DEF_xScale_tags_22)
+               /sizeof(asn_DEF_xScale_tags_22[0]), /* 2 */
+       { &asn_OER_type_xScale_constr_22, &asn_PER_type_xScale_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_xScale_specs_22        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext2_21[] = {
+       { ATF_POINTER, 1, offsetof(struct PhysicalCellGroupConfig__ext2, xScale),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_xScale_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "xScale"
+               },
+};
+static const int asn_MAP_ext2_oms_21[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext2_tags_21[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext2_tag2el_21[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* xScale */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext2_specs_21 = {
+       sizeof(struct PhysicalCellGroupConfig__ext2),
+       offsetof(struct PhysicalCellGroupConfig__ext2, _asn_ctx),
+       asn_MAP_ext2_tag2el_21,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext2_oms_21,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext2_21 = {
+       "ext2",
+       "ext2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext2_tags_21,
+       sizeof(asn_DEF_ext2_tags_21)
+               /sizeof(asn_DEF_ext2_tags_21[0]) - 1, /* 1 */
+       asn_DEF_ext2_tags_21,   /* Same as above */
+       sizeof(asn_DEF_ext2_tags_21)
+               /sizeof(asn_DEF_ext2_tags_21[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext2_21,
+       1,      /* Elements count */
+       &asn_SPC_ext2_specs_21  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PhysicalCellGroupConfig_1[] = {
+       { ATF_POINTER, 3, offsetof(struct PhysicalCellGroupConfig, harq_ACK_SpatialBundlingPUCCH),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_harq_ACK_SpatialBundlingPUCCH_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "harq-ACK-SpatialBundlingPUCCH"
+               },
+       { ATF_POINTER, 2, offsetof(struct PhysicalCellGroupConfig, harq_ACK_SpatialBundlingPUSCH),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_harq_ACK_SpatialBundlingPUSCH_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "harq-ACK-SpatialBundlingPUSCH"
+               },
+       { ATF_POINTER, 1, offsetof(struct PhysicalCellGroupConfig, p_NR_FR1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-NR-FR1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PhysicalCellGroupConfig, pdsch_HARQ_ACK_Codebook),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pdsch_HARQ_ACK_Codebook_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-HARQ-ACK-Codebook"
+               },
+       { ATF_POINTER, 7, offsetof(struct PhysicalCellGroupConfig, tpc_SRS_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-SRS-RNTI"
+               },
+       { ATF_POINTER, 6, offsetof(struct PhysicalCellGroupConfig, tpc_PUCCH_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUCCH-RNTI"
+               },
+       { ATF_POINTER, 5, offsetof(struct PhysicalCellGroupConfig, tpc_PUSCH_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-PUSCH-RNTI"
+               },
+       { ATF_POINTER, 4, offsetof(struct PhysicalCellGroupConfig, sp_CSI_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sp-CSI-RNTI"
+               },
+       { ATF_POINTER, 3, offsetof(struct PhysicalCellGroupConfig, cs_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_cs_RNTI_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cs-RNTI"
+               },
+       { ATF_POINTER, 2, offsetof(struct PhysicalCellGroupConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_ext1_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+       { ATF_POINTER, 1, offsetof(struct PhysicalCellGroupConfig, ext2),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_ext2_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext2"
+               },
+};
+static const int asn_MAP_PhysicalCellGroupConfig_oms_1[] = { 0, 1, 2, 4, 5, 6, 7, 8, 9, 10 };
+static const ber_tlv_tag_t asn_DEF_PhysicalCellGroupConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_PhysicalCellGroupConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* harq-ACK-SpatialBundlingPUCCH */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* harq-ACK-SpatialBundlingPUSCH */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* p-NR-FR1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pdsch-HARQ-ACK-Codebook */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* tpc-SRS-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* tpc-PUCCH-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tpc-PUSCH-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sp-CSI-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* cs-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* ext1 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* ext2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_PhysicalCellGroupConfig_specs_1 = {
+       sizeof(struct PhysicalCellGroupConfig),
+       offsetof(struct PhysicalCellGroupConfig, _asn_ctx),
+       asn_MAP_PhysicalCellGroupConfig_tag2el_1,
+       11,     /* Count of tags in the map */
+       asn_MAP_PhysicalCellGroupConfig_oms_1,  /* Optional members */
+       8, 2,   /* Root/Additions */
+       9,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_PhysicalCellGroupConfig = {
+       "PhysicalCellGroupConfig",
+       "PhysicalCellGroupConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_PhysicalCellGroupConfig_tags_1,
+       sizeof(asn_DEF_PhysicalCellGroupConfig_tags_1)
+               /sizeof(asn_DEF_PhysicalCellGroupConfig_tags_1[0]), /* 1 */
+       asn_DEF_PhysicalCellGroupConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_PhysicalCellGroupConfig_tags_1)
+               /sizeof(asn_DEF_PhysicalCellGroupConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_PhysicalCellGroupConfig_1,
+       11,     /* Elements count */
+       &asn_SPC_PhysicalCellGroupConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PhysicalCellGroupConfig.h b/src/codec_utils/RRC/PhysicalCellGroupConfig.h
new file mode 100644 (file)
index 0000000..5079755
--- /dev/null
@@ -0,0 +1,105 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PhysicalCellGroupConfig_H_
+#define        _PhysicalCellGroupConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "P-Max.h"
+#include "RNTI-Value.h"
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUCCH {
+       PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUCCH_true     = 0
+} e_PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUCCH;
+typedef enum PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUSCH {
+       PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUSCH_true     = 0
+} e_PhysicalCellGroupConfig__harq_ACK_SpatialBundlingPUSCH;
+typedef enum PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook {
+       PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_semiStatic     = 0,
+       PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook_dynamic        = 1
+} e_PhysicalCellGroupConfig__pdsch_HARQ_ACK_Codebook;
+typedef enum PhysicalCellGroupConfig__cs_RNTI_PR {
+       PhysicalCellGroupConfig__cs_RNTI_PR_NOTHING,    /* No components present */
+       PhysicalCellGroupConfig__cs_RNTI_PR_release,
+       PhysicalCellGroupConfig__cs_RNTI_PR_setup
+} PhysicalCellGroupConfig__cs_RNTI_PR;
+typedef enum PhysicalCellGroupConfig__ext2__xScale {
+       PhysicalCellGroupConfig__ext2__xScale_dB0       = 0,
+       PhysicalCellGroupConfig__ext2__xScale_dB6       = 1,
+       PhysicalCellGroupConfig__ext2__xScale_spare2    = 2,
+       PhysicalCellGroupConfig__ext2__xScale_spare1    = 3
+} e_PhysicalCellGroupConfig__ext2__xScale;
+
+/* PhysicalCellGroupConfig */
+typedef struct PhysicalCellGroupConfig {
+       long    *harq_ACK_SpatialBundlingPUCCH; /* OPTIONAL */
+       long    *harq_ACK_SpatialBundlingPUSCH; /* OPTIONAL */
+       P_Max_t *p_NR_FR1;      /* OPTIONAL */
+       long     pdsch_HARQ_ACK_Codebook;
+       RNTI_Value_t    *tpc_SRS_RNTI;  /* OPTIONAL */
+       RNTI_Value_t    *tpc_PUCCH_RNTI;        /* OPTIONAL */
+       RNTI_Value_t    *tpc_PUSCH_RNTI;        /* OPTIONAL */
+       RNTI_Value_t    *sp_CSI_RNTI;   /* OPTIONAL */
+       struct PhysicalCellGroupConfig__cs_RNTI {
+               PhysicalCellGroupConfig__cs_RNTI_PR present;
+               union PhysicalCellGroupConfig__cs_RNTI_u {
+                       NULL_t   release;
+                       RNTI_Value_t     setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *cs_RNTI;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct PhysicalCellGroupConfig__ext1 {
+               RNTI_Value_t    *mcs_C_RNTI;    /* OPTIONAL */
+               P_Max_t *p_UE_FR1;      /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       struct PhysicalCellGroupConfig__ext2 {
+               long    *xScale;        /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext2;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PhysicalCellGroupConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_harq_ACK_SpatialBundlingPUCCH_2;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_harq_ACK_SpatialBundlingPUSCH_4;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pdsch_HARQ_ACK_Codebook_7;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_xScale_22;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_PhysicalCellGroupConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_PhysicalCellGroupConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_PhysicalCellGroupConfig_1[11];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PhysicalCellGroupConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PollByte.c b/src/codec_utils/RRC/PollByte.c
new file mode 100644 (file)
index 0000000..df9c54c
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PollByte.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PollByte_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PollByte_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_PollByte_value2enum_1[] = {
+       { 0,    3,      "kB1" },
+       { 1,    3,      "kB2" },
+       { 2,    3,      "kB5" },
+       { 3,    3,      "kB8" },
+       { 4,    4,      "kB10" },
+       { 5,    4,      "kB15" },
+       { 6,    4,      "kB25" },
+       { 7,    4,      "kB50" },
+       { 8,    4,      "kB75" },
+       { 9,    5,      "kB100" },
+       { 10,   5,      "kB125" },
+       { 11,   5,      "kB250" },
+       { 12,   5,      "kB375" },
+       { 13,   5,      "kB500" },
+       { 14,   5,      "kB750" },
+       { 15,   6,      "kB1000" },
+       { 16,   6,      "kB1250" },
+       { 17,   6,      "kB1500" },
+       { 18,   6,      "kB2000" },
+       { 19,   6,      "kB3000" },
+       { 20,   6,      "kB4000" },
+       { 21,   6,      "kB4500" },
+       { 22,   6,      "kB5000" },
+       { 23,   6,      "kB5500" },
+       { 24,   6,      "kB6000" },
+       { 25,   6,      "kB6500" },
+       { 26,   6,      "kB7000" },
+       { 27,   6,      "kB7500" },
+       { 28,   3,      "mB8" },
+       { 29,   3,      "mB9" },
+       { 30,   4,      "mB10" },
+       { 31,   4,      "mB11" },
+       { 32,   4,      "mB12" },
+       { 33,   4,      "mB13" },
+       { 34,   4,      "mB14" },
+       { 35,   4,      "mB15" },
+       { 36,   4,      "mB16" },
+       { 37,   4,      "mB17" },
+       { 38,   4,      "mB18" },
+       { 39,   4,      "mB20" },
+       { 40,   4,      "mB25" },
+       { 41,   4,      "mB30" },
+       { 42,   4,      "mB40" },
+       { 43,   8,      "infinity" },
+       { 44,   7,      "spare20" },
+       { 45,   7,      "spare19" },
+       { 46,   7,      "spare18" },
+       { 47,   7,      "spare17" },
+       { 48,   7,      "spare16" },
+       { 49,   7,      "spare15" },
+       { 50,   7,      "spare14" },
+       { 51,   7,      "spare13" },
+       { 52,   7,      "spare12" },
+       { 53,   7,      "spare11" },
+       { 54,   7,      "spare10" },
+       { 55,   6,      "spare9" },
+       { 56,   6,      "spare8" },
+       { 57,   6,      "spare7" },
+       { 58,   6,      "spare6" },
+       { 59,   6,      "spare5" },
+       { 60,   6,      "spare4" },
+       { 61,   6,      "spare3" },
+       { 62,   6,      "spare2" },
+       { 63,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_PollByte_enum2value_1[] = {
+       43,     /* infinity(43) */
+       0,      /* kB1(0) */
+       4,      /* kB10(4) */
+       9,      /* kB100(9) */
+       15,     /* kB1000(15) */
+       10,     /* kB125(10) */
+       16,     /* kB1250(16) */
+       5,      /* kB15(5) */
+       17,     /* kB1500(17) */
+       1,      /* kB2(1) */
+       18,     /* kB2000(18) */
+       6,      /* kB25(6) */
+       11,     /* kB250(11) */
+       19,     /* kB3000(19) */
+       12,     /* kB375(12) */
+       20,     /* kB4000(20) */
+       21,     /* kB4500(21) */
+       2,      /* kB5(2) */
+       7,      /* kB50(7) */
+       13,     /* kB500(13) */
+       22,     /* kB5000(22) */
+       23,     /* kB5500(23) */
+       24,     /* kB6000(24) */
+       25,     /* kB6500(25) */
+       26,     /* kB7000(26) */
+       8,      /* kB75(8) */
+       14,     /* kB750(14) */
+       27,     /* kB7500(27) */
+       3,      /* kB8(3) */
+       30,     /* mB10(30) */
+       31,     /* mB11(31) */
+       32,     /* mB12(32) */
+       33,     /* mB13(33) */
+       34,     /* mB14(34) */
+       35,     /* mB15(35) */
+       36,     /* mB16(36) */
+       37,     /* mB17(37) */
+       38,     /* mB18(38) */
+       39,     /* mB20(39) */
+       40,     /* mB25(40) */
+       41,     /* mB30(41) */
+       42,     /* mB40(42) */
+       28,     /* mB8(28) */
+       29,     /* mB9(29) */
+       63,     /* spare1(63) */
+       54,     /* spare10(54) */
+       53,     /* spare11(53) */
+       52,     /* spare12(52) */
+       51,     /* spare13(51) */
+       50,     /* spare14(50) */
+       49,     /* spare15(49) */
+       48,     /* spare16(48) */
+       47,     /* spare17(47) */
+       46,     /* spare18(46) */
+       45,     /* spare19(45) */
+       62,     /* spare2(62) */
+       44,     /* spare20(44) */
+       61,     /* spare3(61) */
+       60,     /* spare4(60) */
+       59,     /* spare5(59) */
+       58,     /* spare6(58) */
+       57,     /* spare7(57) */
+       56,     /* spare8(56) */
+       55      /* spare9(55) */
+};
+const asn_INTEGER_specifics_t asn_SPC_PollByte_specs_1 = {
+       asn_MAP_PollByte_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_PollByte_enum2value_1,  /* N => "tag"; sorted by N */
+       64,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_PollByte_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PollByte = {
+       "PollByte",
+       "PollByte",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_PollByte_tags_1,
+       sizeof(asn_DEF_PollByte_tags_1)
+               /sizeof(asn_DEF_PollByte_tags_1[0]), /* 1 */
+       asn_DEF_PollByte_tags_1,        /* Same as above */
+       sizeof(asn_DEF_PollByte_tags_1)
+               /sizeof(asn_DEF_PollByte_tags_1[0]), /* 1 */
+       { &asn_OER_type_PollByte_constr_1, &asn_PER_type_PollByte_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_PollByte_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PollByte.h b/src/codec_utils/RRC/PollByte.h
new file mode 100644 (file)
index 0000000..58b7756
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PollByte_H_
+#define        _PollByte_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PollByte {
+       PollByte_kB1    = 0,
+       PollByte_kB2    = 1,
+       PollByte_kB5    = 2,
+       PollByte_kB8    = 3,
+       PollByte_kB10   = 4,
+       PollByte_kB15   = 5,
+       PollByte_kB25   = 6,
+       PollByte_kB50   = 7,
+       PollByte_kB75   = 8,
+       PollByte_kB100  = 9,
+       PollByte_kB125  = 10,
+       PollByte_kB250  = 11,
+       PollByte_kB375  = 12,
+       PollByte_kB500  = 13,
+       PollByte_kB750  = 14,
+       PollByte_kB1000 = 15,
+       PollByte_kB1250 = 16,
+       PollByte_kB1500 = 17,
+       PollByte_kB2000 = 18,
+       PollByte_kB3000 = 19,
+       PollByte_kB4000 = 20,
+       PollByte_kB4500 = 21,
+       PollByte_kB5000 = 22,
+       PollByte_kB5500 = 23,
+       PollByte_kB6000 = 24,
+       PollByte_kB6500 = 25,
+       PollByte_kB7000 = 26,
+       PollByte_kB7500 = 27,
+       PollByte_mB8    = 28,
+       PollByte_mB9    = 29,
+       PollByte_mB10   = 30,
+       PollByte_mB11   = 31,
+       PollByte_mB12   = 32,
+       PollByte_mB13   = 33,
+       PollByte_mB14   = 34,
+       PollByte_mB15   = 35,
+       PollByte_mB16   = 36,
+       PollByte_mB17   = 37,
+       PollByte_mB18   = 38,
+       PollByte_mB20   = 39,
+       PollByte_mB25   = 40,
+       PollByte_mB30   = 41,
+       PollByte_mB40   = 42,
+       PollByte_infinity       = 43,
+       PollByte_spare20        = 44,
+       PollByte_spare19        = 45,
+       PollByte_spare18        = 46,
+       PollByte_spare17        = 47,
+       PollByte_spare16        = 48,
+       PollByte_spare15        = 49,
+       PollByte_spare14        = 50,
+       PollByte_spare13        = 51,
+       PollByte_spare12        = 52,
+       PollByte_spare11        = 53,
+       PollByte_spare10        = 54,
+       PollByte_spare9 = 55,
+       PollByte_spare8 = 56,
+       PollByte_spare7 = 57,
+       PollByte_spare6 = 58,
+       PollByte_spare5 = 59,
+       PollByte_spare4 = 60,
+       PollByte_spare3 = 61,
+       PollByte_spare2 = 62,
+       PollByte_spare1 = 63
+} e_PollByte;
+
+/* PollByte */
+typedef long    PollByte_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PollByte_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PollByte;
+extern const asn_INTEGER_specifics_t asn_SPC_PollByte_specs_1;
+asn_struct_free_f PollByte_free;
+asn_struct_print_f PollByte_print;
+asn_constr_check_f PollByte_constraint;
+ber_type_decoder_f PollByte_decode_ber;
+der_type_encoder_f PollByte_encode_der;
+xer_type_decoder_f PollByte_decode_xer;
+xer_type_encoder_f PollByte_encode_xer;
+oer_type_decoder_f PollByte_decode_oer;
+oer_type_encoder_f PollByte_encode_oer;
+per_type_decoder_f PollByte_decode_uper;
+per_type_encoder_f PollByte_encode_uper;
+per_type_decoder_f PollByte_decode_aper;
+per_type_encoder_f PollByte_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PollByte_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PollPDU.c b/src/codec_utils/RRC/PollPDU.c
new file mode 100644 (file)
index 0000000..fa80548
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PollPDU.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PollPDU_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PollPDU_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_PollPDU_value2enum_1[] = {
+       { 0,    2,      "p4" },
+       { 1,    2,      "p8" },
+       { 2,    3,      "p16" },
+       { 3,    3,      "p32" },
+       { 4,    3,      "p64" },
+       { 5,    4,      "p128" },
+       { 6,    4,      "p256" },
+       { 7,    4,      "p512" },
+       { 8,    5,      "p1024" },
+       { 9,    5,      "p2048" },
+       { 10,   5,      "p4096" },
+       { 11,   5,      "p6144" },
+       { 12,   5,      "p8192" },
+       { 13,   6,      "p12288" },
+       { 14,   6,      "p16384" },
+       { 15,   6,      "p20480" },
+       { 16,   6,      "p24576" },
+       { 17,   6,      "p28672" },
+       { 18,   6,      "p32768" },
+       { 19,   6,      "p40960" },
+       { 20,   6,      "p49152" },
+       { 21,   6,      "p57344" },
+       { 22,   6,      "p65536" },
+       { 23,   8,      "infinity" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_PollPDU_enum2value_1[] = {
+       23,     /* infinity(23) */
+       8,      /* p1024(8) */
+       13,     /* p12288(13) */
+       5,      /* p128(5) */
+       2,      /* p16(2) */
+       14,     /* p16384(14) */
+       9,      /* p2048(9) */
+       15,     /* p20480(15) */
+       16,     /* p24576(16) */
+       6,      /* p256(6) */
+       17,     /* p28672(17) */
+       3,      /* p32(3) */
+       18,     /* p32768(18) */
+       0,      /* p4(0) */
+       10,     /* p4096(10) */
+       19,     /* p40960(19) */
+       20,     /* p49152(20) */
+       7,      /* p512(7) */
+       21,     /* p57344(21) */
+       11,     /* p6144(11) */
+       4,      /* p64(4) */
+       22,     /* p65536(22) */
+       1,      /* p8(1) */
+       12,     /* p8192(12) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24      /* spare8(24) */
+};
+const asn_INTEGER_specifics_t asn_SPC_PollPDU_specs_1 = {
+       asn_MAP_PollPDU_value2enum_1,   /* "tag" => N; sorted by tag */
+       asn_MAP_PollPDU_enum2value_1,   /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_PollPDU_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PollPDU = {
+       "PollPDU",
+       "PollPDU",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_PollPDU_tags_1,
+       sizeof(asn_DEF_PollPDU_tags_1)
+               /sizeof(asn_DEF_PollPDU_tags_1[0]), /* 1 */
+       asn_DEF_PollPDU_tags_1, /* Same as above */
+       sizeof(asn_DEF_PollPDU_tags_1)
+               /sizeof(asn_DEF_PollPDU_tags_1[0]), /* 1 */
+       { &asn_OER_type_PollPDU_constr_1, &asn_PER_type_PollPDU_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_PollPDU_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PollPDU.h b/src/codec_utils/RRC/PollPDU.h
new file mode 100644 (file)
index 0000000..237b58b
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PollPDU_H_
+#define        _PollPDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PollPDU {
+       PollPDU_p4      = 0,
+       PollPDU_p8      = 1,
+       PollPDU_p16     = 2,
+       PollPDU_p32     = 3,
+       PollPDU_p64     = 4,
+       PollPDU_p128    = 5,
+       PollPDU_p256    = 6,
+       PollPDU_p512    = 7,
+       PollPDU_p1024   = 8,
+       PollPDU_p2048   = 9,
+       PollPDU_p4096   = 10,
+       PollPDU_p6144   = 11,
+       PollPDU_p8192   = 12,
+       PollPDU_p12288  = 13,
+       PollPDU_p16384  = 14,
+       PollPDU_p20480  = 15,
+       PollPDU_p24576  = 16,
+       PollPDU_p28672  = 17,
+       PollPDU_p32768  = 18,
+       PollPDU_p40960  = 19,
+       PollPDU_p49152  = 20,
+       PollPDU_p57344  = 21,
+       PollPDU_p65536  = 22,
+       PollPDU_infinity        = 23,
+       PollPDU_spare8  = 24,
+       PollPDU_spare7  = 25,
+       PollPDU_spare6  = 26,
+       PollPDU_spare5  = 27,
+       PollPDU_spare4  = 28,
+       PollPDU_spare3  = 29,
+       PollPDU_spare2  = 30,
+       PollPDU_spare1  = 31
+} e_PollPDU;
+
+/* PollPDU */
+typedef long    PollPDU_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PollPDU_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PollPDU;
+extern const asn_INTEGER_specifics_t asn_SPC_PollPDU_specs_1;
+asn_struct_free_f PollPDU_free;
+asn_struct_print_f PollPDU_print;
+asn_constr_check_f PollPDU_constraint;
+ber_type_decoder_f PollPDU_decode_ber;
+der_type_encoder_f PollPDU_encode_der;
+xer_type_decoder_f PollPDU_decode_xer;
+xer_type_encoder_f PollPDU_encode_xer;
+oer_type_decoder_f PollPDU_decode_oer;
+oer_type_encoder_f PollPDU_encode_oer;
+per_type_decoder_f PollPDU_decode_uper;
+per_type_encoder_f PollPDU_encode_uper;
+per_type_decoder_f PollPDU_decode_aper;
+per_type_encoder_f PollPDU_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PollPDU_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PortIndex2.c b/src/codec_utils/RRC/PortIndex2.c
new file mode 100644 (file)
index 0000000..c5dd7af
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PortIndex2.h"
+
+int
+PortIndex2_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PortIndex2_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PortIndex2_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PortIndex2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PortIndex2 = {
+       "PortIndex2",
+       "PortIndex2",
+       &asn_OP_NativeInteger,
+       asn_DEF_PortIndex2_tags_1,
+       sizeof(asn_DEF_PortIndex2_tags_1)
+               /sizeof(asn_DEF_PortIndex2_tags_1[0]), /* 1 */
+       asn_DEF_PortIndex2_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PortIndex2_tags_1)
+               /sizeof(asn_DEF_PortIndex2_tags_1[0]), /* 1 */
+       { &asn_OER_type_PortIndex2_constr_1, &asn_PER_type_PortIndex2_constr_1, PortIndex2_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PortIndex2.h b/src/codec_utils/RRC/PortIndex2.h
new file mode 100644 (file)
index 0000000..cbfd885
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PortIndex2_H_
+#define        _PortIndex2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PortIndex2 */
+typedef long    PortIndex2_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PortIndex2_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PortIndex2;
+asn_struct_free_f PortIndex2_free;
+asn_struct_print_f PortIndex2_print;
+asn_constr_check_f PortIndex2_constraint;
+ber_type_decoder_f PortIndex2_decode_ber;
+der_type_encoder_f PortIndex2_encode_der;
+xer_type_decoder_f PortIndex2_decode_xer;
+xer_type_encoder_f PortIndex2_encode_xer;
+oer_type_decoder_f PortIndex2_decode_oer;
+oer_type_encoder_f PortIndex2_encode_oer;
+per_type_decoder_f PortIndex2_decode_uper;
+per_type_encoder_f PortIndex2_encode_uper;
+per_type_decoder_f PortIndex2_decode_aper;
+per_type_encoder_f PortIndex2_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PortIndex2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PortIndex4.c b/src/codec_utils/RRC/PortIndex4.c
new file mode 100644 (file)
index 0000000..310a0da
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PortIndex4.h"
+
+int
+PortIndex4_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_PortIndex4_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PortIndex4_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PortIndex4_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PortIndex4 = {
+       "PortIndex4",
+       "PortIndex4",
+       &asn_OP_NativeInteger,
+       asn_DEF_PortIndex4_tags_1,
+       sizeof(asn_DEF_PortIndex4_tags_1)
+               /sizeof(asn_DEF_PortIndex4_tags_1[0]), /* 1 */
+       asn_DEF_PortIndex4_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PortIndex4_tags_1)
+               /sizeof(asn_DEF_PortIndex4_tags_1[0]), /* 1 */
+       { &asn_OER_type_PortIndex4_constr_1, &asn_PER_type_PortIndex4_constr_1, PortIndex4_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PortIndex4.h b/src/codec_utils/RRC/PortIndex4.h
new file mode 100644 (file)
index 0000000..bd92b52
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PortIndex4_H_
+#define        _PortIndex4_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PortIndex4 */
+typedef long    PortIndex4_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PortIndex4_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PortIndex4;
+asn_struct_free_f PortIndex4_free;
+asn_struct_print_f PortIndex4_print;
+asn_constr_check_f PortIndex4_constraint;
+ber_type_decoder_f PortIndex4_decode_ber;
+der_type_encoder_f PortIndex4_encode_der;
+xer_type_decoder_f PortIndex4_decode_xer;
+xer_type_encoder_f PortIndex4_encode_xer;
+oer_type_decoder_f PortIndex4_decode_oer;
+oer_type_encoder_f PortIndex4_encode_oer;
+per_type_decoder_f PortIndex4_decode_uper;
+per_type_encoder_f PortIndex4_encode_uper;
+per_type_decoder_f PortIndex4_decode_aper;
+per_type_encoder_f PortIndex4_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PortIndex4_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PortIndex8.c b/src/codec_utils/RRC/PortIndex8.c
new file mode 100644 (file)
index 0000000..c35efdf
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PortIndex8.h"
+
+int
+PortIndex8_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 <= 7)) {
+               /* 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_PortIndex8_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_PortIndex8_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_PortIndex8_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_PortIndex8 = {
+       "PortIndex8",
+       "PortIndex8",
+       &asn_OP_NativeInteger,
+       asn_DEF_PortIndex8_tags_1,
+       sizeof(asn_DEF_PortIndex8_tags_1)
+               /sizeof(asn_DEF_PortIndex8_tags_1[0]), /* 1 */
+       asn_DEF_PortIndex8_tags_1,      /* Same as above */
+       sizeof(asn_DEF_PortIndex8_tags_1)
+               /sizeof(asn_DEF_PortIndex8_tags_1[0]), /* 1 */
+       { &asn_OER_type_PortIndex8_constr_1, &asn_PER_type_PortIndex8_constr_1, PortIndex8_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/PortIndex8.h b/src/codec_utils/RRC/PortIndex8.h
new file mode 100644 (file)
index 0000000..243da04
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PortIndex8_H_
+#define        _PortIndex8_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PortIndex8 */
+typedef long    PortIndex8_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_PortIndex8_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_PortIndex8;
+asn_struct_free_f PortIndex8_free;
+asn_struct_print_f PortIndex8_print;
+asn_constr_check_f PortIndex8_constraint;
+ber_type_decoder_f PortIndex8_decode_ber;
+der_type_encoder_f PortIndex8_encode_der;
+xer_type_decoder_f PortIndex8_decode_xer;
+xer_type_encoder_f PortIndex8_encode_xer;
+oer_type_decoder_f PortIndex8_decode_oer;
+oer_type_encoder_f PortIndex8_encode_oer;
+per_type_decoder_f PortIndex8_decode_uper;
+per_type_encoder_f PortIndex8_encode_uper;
+per_type_decoder_f PortIndex8_decode_aper;
+per_type_encoder_f PortIndex8_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PortIndex8_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/PortIndexFor8Ranks.c b/src/codec_utils/RRC/PortIndexFor8Ranks.c
new file mode 100644 (file)
index 0000000..5b87a03
--- /dev/null
@@ -0,0 +1,1199 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "PortIndexFor8Ranks.h"
+
+static int
+memb_rank2_8_constraint_2(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 == 2)) {
+               /* 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_rank3_8_constraint_2(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 == 3)) {
+               /* 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_rank4_8_constraint_2(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 == 4)) {
+               /* 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_rank5_8_constraint_2(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 == 5)) {
+               /* 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_rank6_8_constraint_2(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 == 6)) {
+               /* 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_rank7_8_constraint_2(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 == 7)) {
+               /* 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_rank8_8_constraint_2(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 == 8)) {
+               /* 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_rank2_4_constraint_18(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 == 2)) {
+               /* 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_rank3_4_constraint_18(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 == 3)) {
+               /* 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_rank4_4_constraint_18(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 == 4)) {
+               /* 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_rank2_2_constraint_26(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 == 2)) {
+               /* 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_rank2_8_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_type_rank2_8_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank3_8_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_type_rank3_8_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank4_8_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_type_rank4_8_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank5_8_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_type_rank5_8_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank6_8_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_type_rank6_8_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank7_8_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       7       /* (SIZE(7..7)) */};
+static asn_per_constraints_t asn_PER_type_rank7_8_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  7,  7 }        /* (SIZE(7..7)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank8_8_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_type_rank8_8_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank2_8_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_rank2_8_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank3_8_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_rank3_8_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank4_8_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_rank4_8_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank5_8_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_memb_rank5_8_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank6_8_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       6       /* (SIZE(6..6)) */};
+static asn_per_constraints_t asn_PER_memb_rank6_8_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank7_8_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       7       /* (SIZE(7..7)) */};
+static asn_per_constraints_t asn_PER_memb_rank7_8_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  7,  7 }        /* (SIZE(7..7)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank8_8_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_rank8_8_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank2_4_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_type_rank2_4_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank3_4_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_type_rank3_4_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank4_4_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_type_rank4_4_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank2_4_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_rank2_4_constr_20 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank3_4_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       3       /* (SIZE(3..3)) */};
+static asn_per_constraints_t asn_PER_memb_rank3_4_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  3,  3 }        /* (SIZE(3..3)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank4_4_constr_24 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_rank4_4_constr_24 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rank2_2_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_type_rank2_2_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rank2_2_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_rank2_2_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_PortIndexFor8Ranks_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_PortIndexFor8Ranks_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_rank2_8_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank2_8_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank2_8_specs_4 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank2_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank2_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank2_8_4 = {
+       "rank2-8",
+       "rank2-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank2_8_tags_4,
+       sizeof(asn_DEF_rank2_8_tags_4)
+               /sizeof(asn_DEF_rank2_8_tags_4[0]) - 1, /* 1 */
+       asn_DEF_rank2_8_tags_4, /* Same as above */
+       sizeof(asn_DEF_rank2_8_tags_4)
+               /sizeof(asn_DEF_rank2_8_tags_4[0]), /* 2 */
+       { &asn_OER_type_rank2_8_constr_4, &asn_PER_type_rank2_8_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_rank2_8_4,
+       1,      /* Single element */
+       &asn_SPC_rank2_8_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank3_8_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank3_8_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank3_8_specs_6 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank3_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank3_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank3_8_6 = {
+       "rank3-8",
+       "rank3-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank3_8_tags_6,
+       sizeof(asn_DEF_rank3_8_tags_6)
+               /sizeof(asn_DEF_rank3_8_tags_6[0]) - 1, /* 1 */
+       asn_DEF_rank3_8_tags_6, /* Same as above */
+       sizeof(asn_DEF_rank3_8_tags_6)
+               /sizeof(asn_DEF_rank3_8_tags_6[0]), /* 2 */
+       { &asn_OER_type_rank3_8_constr_6, &asn_PER_type_rank3_8_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_rank3_8_6,
+       1,      /* Single element */
+       &asn_SPC_rank3_8_specs_6        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank4_8_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank4_8_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank4_8_specs_8 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank4_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank4_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank4_8_8 = {
+       "rank4-8",
+       "rank4-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank4_8_tags_8,
+       sizeof(asn_DEF_rank4_8_tags_8)
+               /sizeof(asn_DEF_rank4_8_tags_8[0]) - 1, /* 1 */
+       asn_DEF_rank4_8_tags_8, /* Same as above */
+       sizeof(asn_DEF_rank4_8_tags_8)
+               /sizeof(asn_DEF_rank4_8_tags_8[0]), /* 2 */
+       { &asn_OER_type_rank4_8_constr_8, &asn_PER_type_rank4_8_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_rank4_8_8,
+       1,      /* Single element */
+       &asn_SPC_rank4_8_specs_8        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank5_8_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank5_8_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank5_8_specs_10 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank5_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank5_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank5_8_10 = {
+       "rank5-8",
+       "rank5-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank5_8_tags_10,
+       sizeof(asn_DEF_rank5_8_tags_10)
+               /sizeof(asn_DEF_rank5_8_tags_10[0]) - 1, /* 1 */
+       asn_DEF_rank5_8_tags_10,        /* Same as above */
+       sizeof(asn_DEF_rank5_8_tags_10)
+               /sizeof(asn_DEF_rank5_8_tags_10[0]), /* 2 */
+       { &asn_OER_type_rank5_8_constr_10, &asn_PER_type_rank5_8_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_rank5_8_10,
+       1,      /* Single element */
+       &asn_SPC_rank5_8_specs_10       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank6_8_12[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank6_8_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank6_8_specs_12 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank6_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank6_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank6_8_12 = {
+       "rank6-8",
+       "rank6-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank6_8_tags_12,
+       sizeof(asn_DEF_rank6_8_tags_12)
+               /sizeof(asn_DEF_rank6_8_tags_12[0]) - 1, /* 1 */
+       asn_DEF_rank6_8_tags_12,        /* Same as above */
+       sizeof(asn_DEF_rank6_8_tags_12)
+               /sizeof(asn_DEF_rank6_8_tags_12[0]), /* 2 */
+       { &asn_OER_type_rank6_8_constr_12, &asn_PER_type_rank6_8_constr_12, SEQUENCE_OF_constraint },
+       asn_MBR_rank6_8_12,
+       1,      /* Single element */
+       &asn_SPC_rank6_8_specs_12       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank7_8_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank7_8_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank7_8_specs_14 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank7_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank7_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank7_8_14 = {
+       "rank7-8",
+       "rank7-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank7_8_tags_14,
+       sizeof(asn_DEF_rank7_8_tags_14)
+               /sizeof(asn_DEF_rank7_8_tags_14[0]) - 1, /* 1 */
+       asn_DEF_rank7_8_tags_14,        /* Same as above */
+       sizeof(asn_DEF_rank7_8_tags_14)
+               /sizeof(asn_DEF_rank7_8_tags_14[0]), /* 2 */
+       { &asn_OER_type_rank7_8_constr_14, &asn_PER_type_rank7_8_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_rank7_8_14,
+       1,      /* Single element */
+       &asn_SPC_rank7_8_specs_14       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank8_8_16[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank8_8_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank8_8_specs_16 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8__rank8_8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8__rank8_8, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank8_8_16 = {
+       "rank8-8",
+       "rank8-8",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank8_8_tags_16,
+       sizeof(asn_DEF_rank8_8_tags_16)
+               /sizeof(asn_DEF_rank8_8_tags_16[0]) - 1, /* 1 */
+       asn_DEF_rank8_8_tags_16,        /* Same as above */
+       sizeof(asn_DEF_rank8_8_tags_16)
+               /sizeof(asn_DEF_rank8_8_tags_16[0]), /* 2 */
+       { &asn_OER_type_rank8_8_constr_16, &asn_PER_type_rank8_8_constr_16, SEQUENCE_OF_constraint },
+       asn_MBR_rank8_8_16,
+       1,      /* Single element */
+       &asn_SPC_rank8_8_specs_16       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_portIndex8_2[] = {
+       { ATF_POINTER, 8, offsetof(struct PortIndexFor8Ranks__portIndex8, rank1_8),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PortIndex8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rank1-8"
+               },
+       { ATF_POINTER, 7, offsetof(struct PortIndexFor8Ranks__portIndex8, rank2_8),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rank2_8_4,
+               0,
+               { &asn_OER_memb_rank2_8_constr_4, &asn_PER_memb_rank2_8_constr_4,  memb_rank2_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank2-8"
+               },
+       { ATF_POINTER, 6, offsetof(struct PortIndexFor8Ranks__portIndex8, rank3_8),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_rank3_8_6,
+               0,
+               { &asn_OER_memb_rank3_8_constr_6, &asn_PER_memb_rank3_8_constr_6,  memb_rank3_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank3-8"
+               },
+       { ATF_POINTER, 5, offsetof(struct PortIndexFor8Ranks__portIndex8, rank4_8),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_rank4_8_8,
+               0,
+               { &asn_OER_memb_rank4_8_constr_8, &asn_PER_memb_rank4_8_constr_8,  memb_rank4_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank4-8"
+               },
+       { ATF_POINTER, 4, offsetof(struct PortIndexFor8Ranks__portIndex8, rank5_8),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_rank5_8_10,
+               0,
+               { &asn_OER_memb_rank5_8_constr_10, &asn_PER_memb_rank5_8_constr_10,  memb_rank5_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank5-8"
+               },
+       { ATF_POINTER, 3, offsetof(struct PortIndexFor8Ranks__portIndex8, rank6_8),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_rank6_8_12,
+               0,
+               { &asn_OER_memb_rank6_8_constr_12, &asn_PER_memb_rank6_8_constr_12,  memb_rank6_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank6-8"
+               },
+       { ATF_POINTER, 2, offsetof(struct PortIndexFor8Ranks__portIndex8, rank7_8),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_rank7_8_14,
+               0,
+               { &asn_OER_memb_rank7_8_constr_14, &asn_PER_memb_rank7_8_constr_14,  memb_rank7_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank7-8"
+               },
+       { ATF_POINTER, 1, offsetof(struct PortIndexFor8Ranks__portIndex8, rank8_8),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_rank8_8_16,
+               0,
+               { &asn_OER_memb_rank8_8_constr_16, &asn_PER_memb_rank8_8_constr_16,  memb_rank8_8_constraint_2 },
+               0, 0, /* No default value */
+               "rank8-8"
+               },
+};
+static const int asn_MAP_portIndex8_oms_2[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_portIndex8_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_portIndex8_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rank1-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rank2-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rank3-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rank4-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rank5-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rank6-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rank7-8 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* rank8-8 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_portIndex8_specs_2 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex8),
+       offsetof(struct PortIndexFor8Ranks__portIndex8, _asn_ctx),
+       asn_MAP_portIndex8_tag2el_2,
+       8,      /* Count of tags in the map */
+       asn_MAP_portIndex8_oms_2,       /* Optional members */
+       8, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_portIndex8_2 = {
+       "portIndex8",
+       "portIndex8",
+       &asn_OP_SEQUENCE,
+       asn_DEF_portIndex8_tags_2,
+       sizeof(asn_DEF_portIndex8_tags_2)
+               /sizeof(asn_DEF_portIndex8_tags_2[0]) - 1, /* 1 */
+       asn_DEF_portIndex8_tags_2,      /* Same as above */
+       sizeof(asn_DEF_portIndex8_tags_2)
+               /sizeof(asn_DEF_portIndex8_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_portIndex8_2,
+       8,      /* Elements count */
+       &asn_SPC_portIndex8_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank2_4_20[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank2_4_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank2_4_specs_20 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex4__rank2_4),
+       offsetof(struct PortIndexFor8Ranks__portIndex4__rank2_4, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank2_4_20 = {
+       "rank2-4",
+       "rank2-4",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank2_4_tags_20,
+       sizeof(asn_DEF_rank2_4_tags_20)
+               /sizeof(asn_DEF_rank2_4_tags_20[0]) - 1, /* 1 */
+       asn_DEF_rank2_4_tags_20,        /* Same as above */
+       sizeof(asn_DEF_rank2_4_tags_20)
+               /sizeof(asn_DEF_rank2_4_tags_20[0]), /* 2 */
+       { &asn_OER_type_rank2_4_constr_20, &asn_PER_type_rank2_4_constr_20, SEQUENCE_OF_constraint },
+       asn_MBR_rank2_4_20,
+       1,      /* Single element */
+       &asn_SPC_rank2_4_specs_20       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank3_4_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank3_4_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank3_4_specs_22 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex4__rank3_4),
+       offsetof(struct PortIndexFor8Ranks__portIndex4__rank3_4, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank3_4_22 = {
+       "rank3-4",
+       "rank3-4",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank3_4_tags_22,
+       sizeof(asn_DEF_rank3_4_tags_22)
+               /sizeof(asn_DEF_rank3_4_tags_22[0]) - 1, /* 1 */
+       asn_DEF_rank3_4_tags_22,        /* Same as above */
+       sizeof(asn_DEF_rank3_4_tags_22)
+               /sizeof(asn_DEF_rank3_4_tags_22[0]), /* 2 */
+       { &asn_OER_type_rank3_4_constr_22, &asn_PER_type_rank3_4_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_rank3_4_22,
+       1,      /* Single element */
+       &asn_SPC_rank3_4_specs_22       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank4_4_24[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank4_4_tags_24[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank4_4_specs_24 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex4__rank4_4),
+       offsetof(struct PortIndexFor8Ranks__portIndex4__rank4_4, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank4_4_24 = {
+       "rank4-4",
+       "rank4-4",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank4_4_tags_24,
+       sizeof(asn_DEF_rank4_4_tags_24)
+               /sizeof(asn_DEF_rank4_4_tags_24[0]) - 1, /* 1 */
+       asn_DEF_rank4_4_tags_24,        /* Same as above */
+       sizeof(asn_DEF_rank4_4_tags_24)
+               /sizeof(asn_DEF_rank4_4_tags_24[0]), /* 2 */
+       { &asn_OER_type_rank4_4_constr_24, &asn_PER_type_rank4_4_constr_24, SEQUENCE_OF_constraint },
+       asn_MBR_rank4_4_24,
+       1,      /* Single element */
+       &asn_SPC_rank4_4_specs_24       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_portIndex4_18[] = {
+       { ATF_POINTER, 4, offsetof(struct PortIndexFor8Ranks__portIndex4, rank1_4),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PortIndex4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rank1-4"
+               },
+       { ATF_POINTER, 3, offsetof(struct PortIndexFor8Ranks__portIndex4, rank2_4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rank2_4_20,
+               0,
+               { &asn_OER_memb_rank2_4_constr_20, &asn_PER_memb_rank2_4_constr_20,  memb_rank2_4_constraint_18 },
+               0, 0, /* No default value */
+               "rank2-4"
+               },
+       { ATF_POINTER, 2, offsetof(struct PortIndexFor8Ranks__portIndex4, rank3_4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_rank3_4_22,
+               0,
+               { &asn_OER_memb_rank3_4_constr_22, &asn_PER_memb_rank3_4_constr_22,  memb_rank3_4_constraint_18 },
+               0, 0, /* No default value */
+               "rank3-4"
+               },
+       { ATF_POINTER, 1, offsetof(struct PortIndexFor8Ranks__portIndex4, rank4_4),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_rank4_4_24,
+               0,
+               { &asn_OER_memb_rank4_4_constr_24, &asn_PER_memb_rank4_4_constr_24,  memb_rank4_4_constraint_18 },
+               0, 0, /* No default value */
+               "rank4-4"
+               },
+};
+static const int asn_MAP_portIndex4_oms_18[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_portIndex4_tags_18[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_portIndex4_tag2el_18[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rank1-4 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rank2-4 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rank3-4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* rank4-4 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_portIndex4_specs_18 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex4),
+       offsetof(struct PortIndexFor8Ranks__portIndex4, _asn_ctx),
+       asn_MAP_portIndex4_tag2el_18,
+       4,      /* Count of tags in the map */
+       asn_MAP_portIndex4_oms_18,      /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_portIndex4_18 = {
+       "portIndex4",
+       "portIndex4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_portIndex4_tags_18,
+       sizeof(asn_DEF_portIndex4_tags_18)
+               /sizeof(asn_DEF_portIndex4_tags_18[0]) - 1, /* 1 */
+       asn_DEF_portIndex4_tags_18,     /* Same as above */
+       sizeof(asn_DEF_portIndex4_tags_18)
+               /sizeof(asn_DEF_portIndex4_tags_18[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_portIndex4_18,
+       4,      /* Elements count */
+       &asn_SPC_portIndex4_specs_18    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rank2_2_28[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PortIndex2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rank2_2_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rank2_2_specs_28 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex2__rank2_2),
+       offsetof(struct PortIndexFor8Ranks__portIndex2__rank2_2, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rank2_2_28 = {
+       "rank2-2",
+       "rank2-2",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rank2_2_tags_28,
+       sizeof(asn_DEF_rank2_2_tags_28)
+               /sizeof(asn_DEF_rank2_2_tags_28[0]) - 1, /* 1 */
+       asn_DEF_rank2_2_tags_28,        /* Same as above */
+       sizeof(asn_DEF_rank2_2_tags_28)
+               /sizeof(asn_DEF_rank2_2_tags_28[0]), /* 2 */
+       { &asn_OER_type_rank2_2_constr_28, &asn_PER_type_rank2_2_constr_28, SEQUENCE_OF_constraint },
+       asn_MBR_rank2_2_28,
+       1,      /* Single element */
+       &asn_SPC_rank2_2_specs_28       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_portIndex2_26[] = {
+       { ATF_POINTER, 2, offsetof(struct PortIndexFor8Ranks__portIndex2, rank1_2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PortIndex2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rank1-2"
+               },
+       { ATF_POINTER, 1, offsetof(struct PortIndexFor8Ranks__portIndex2, rank2_2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rank2_2_28,
+               0,
+               { &asn_OER_memb_rank2_2_constr_28, &asn_PER_memb_rank2_2_constr_28,  memb_rank2_2_constraint_26 },
+               0, 0, /* No default value */
+               "rank2-2"
+               },
+};
+static const int asn_MAP_portIndex2_oms_26[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_portIndex2_tags_26[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_portIndex2_tag2el_26[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rank1-2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* rank2-2 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_portIndex2_specs_26 = {
+       sizeof(struct PortIndexFor8Ranks__portIndex2),
+       offsetof(struct PortIndexFor8Ranks__portIndex2, _asn_ctx),
+       asn_MAP_portIndex2_tag2el_26,
+       2,      /* Count of tags in the map */
+       asn_MAP_portIndex2_oms_26,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_portIndex2_26 = {
+       "portIndex2",
+       "portIndex2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_portIndex2_tags_26,
+       sizeof(asn_DEF_portIndex2_tags_26)
+               /sizeof(asn_DEF_portIndex2_tags_26[0]) - 1, /* 1 */
+       asn_DEF_portIndex2_tags_26,     /* Same as above */
+       sizeof(asn_DEF_portIndex2_tags_26)
+               /sizeof(asn_DEF_portIndex2_tags_26[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_portIndex2_26,
+       2,      /* Elements count */
+       &asn_SPC_portIndex2_specs_26    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_PortIndexFor8Ranks_1[] = {
+       { ATF_POINTER, 0, offsetof(struct PortIndexFor8Ranks, choice.portIndex8),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_portIndex8_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "portIndex8"
+               },
+       { ATF_POINTER, 0, offsetof(struct PortIndexFor8Ranks, choice.portIndex4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_portIndex4_18,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "portIndex4"
+               },
+       { ATF_POINTER, 0, offsetof(struct PortIndexFor8Ranks, choice.portIndex2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_portIndex2_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "portIndex2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct PortIndexFor8Ranks, choice.portIndex1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "portIndex1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_PortIndexFor8Ranks_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* portIndex8 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* portIndex4 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* portIndex2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* portIndex1 */
+};
+asn_CHOICE_specifics_t asn_SPC_PortIndexFor8Ranks_specs_1 = {
+       sizeof(struct PortIndexFor8Ranks),
+       offsetof(struct PortIndexFor8Ranks, _asn_ctx),
+       offsetof(struct PortIndexFor8Ranks, present),
+       sizeof(((struct PortIndexFor8Ranks *)0)->present),
+       asn_MAP_PortIndexFor8Ranks_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_PortIndexFor8Ranks = {
+       "PortIndexFor8Ranks",
+       "PortIndexFor8Ranks",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_PortIndexFor8Ranks_constr_1, &asn_PER_type_PortIndexFor8Ranks_constr_1, CHOICE_constraint },
+       asn_MBR_PortIndexFor8Ranks_1,
+       4,      /* Elements count */
+       &asn_SPC_PortIndexFor8Ranks_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/PortIndexFor8Ranks.h b/src/codec_utils/RRC/PortIndexFor8Ranks.h
new file mode 100644 (file)
index 0000000..719fb03
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _PortIndexFor8Ranks_H_
+#define        _PortIndexFor8Ranks_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include "PortIndex8.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+#include "PortIndex4.h"
+#include "PortIndex2.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum PortIndexFor8Ranks_PR {
+       PortIndexFor8Ranks_PR_NOTHING,  /* No components present */
+       PortIndexFor8Ranks_PR_portIndex8,
+       PortIndexFor8Ranks_PR_portIndex4,
+       PortIndexFor8Ranks_PR_portIndex2,
+       PortIndexFor8Ranks_PR_portIndex1
+} PortIndexFor8Ranks_PR;
+
+/* PortIndexFor8Ranks */
+typedef struct PortIndexFor8Ranks {
+       PortIndexFor8Ranks_PR present;
+       union PortIndexFor8Ranks_u {
+               struct PortIndexFor8Ranks__portIndex8 {
+                       PortIndex8_t    *rank1_8;       /* OPTIONAL */
+                       struct PortIndexFor8Ranks__portIndex8__rank2_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank2_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank3_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank3_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank4_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank4_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank5_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank5_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank6_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank6_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank7_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank7_8;
+                       struct PortIndexFor8Ranks__portIndex8__rank8_8 {
+                               A_SEQUENCE_OF(PortIndex8_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank8_8;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *portIndex8;
+               struct PortIndexFor8Ranks__portIndex4 {
+                       PortIndex4_t    *rank1_4;       /* OPTIONAL */
+                       struct PortIndexFor8Ranks__portIndex4__rank2_4 {
+                               A_SEQUENCE_OF(PortIndex4_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank2_4;
+                       struct PortIndexFor8Ranks__portIndex4__rank3_4 {
+                               A_SEQUENCE_OF(PortIndex4_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank3_4;
+                       struct PortIndexFor8Ranks__portIndex4__rank4_4 {
+                               A_SEQUENCE_OF(PortIndex4_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank4_4;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *portIndex4;
+               struct PortIndexFor8Ranks__portIndex2 {
+                       PortIndex2_t    *rank1_2;       /* OPTIONAL */
+                       struct PortIndexFor8Ranks__portIndex2__rank2_2 {
+                               A_SEQUENCE_OF(PortIndex2_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *rank2_2;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *portIndex2;
+               NULL_t   portIndex1;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} PortIndexFor8Ranks_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PortIndexFor8Ranks;
+extern asn_CHOICE_specifics_t asn_SPC_PortIndexFor8Ranks_specs_1;
+extern asn_TYPE_member_t asn_MBR_PortIndexFor8Ranks_1[4];
+extern asn_per_constraints_t asn_PER_type_PortIndexFor8Ranks_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PortIndexFor8Ranks_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Q-OffsetRange.c b/src/codec_utils/RRC/Q-OffsetRange.c
new file mode 100644 (file)
index 0000000..137d365
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Q-OffsetRange.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_Q_OffsetRange_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_Q_OffsetRange_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  30 }       /* (0..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_Q_OffsetRange_value2enum_1[] = {
+       { 0,    5,      "dB-24" },
+       { 1,    5,      "dB-22" },
+       { 2,    5,      "dB-20" },
+       { 3,    5,      "dB-18" },
+       { 4,    5,      "dB-16" },
+       { 5,    5,      "dB-14" },
+       { 6,    5,      "dB-12" },
+       { 7,    5,      "dB-10" },
+       { 8,    4,      "dB-8" },
+       { 9,    4,      "dB-6" },
+       { 10,   4,      "dB-5" },
+       { 11,   4,      "dB-4" },
+       { 12,   4,      "dB-3" },
+       { 13,   4,      "dB-2" },
+       { 14,   4,      "dB-1" },
+       { 15,   3,      "dB0" },
+       { 16,   3,      "dB1" },
+       { 17,   3,      "dB2" },
+       { 18,   3,      "dB3" },
+       { 19,   3,      "dB4" },
+       { 20,   3,      "dB5" },
+       { 21,   3,      "dB6" },
+       { 22,   3,      "dB8" },
+       { 23,   4,      "dB10" },
+       { 24,   4,      "dB12" },
+       { 25,   4,      "dB14" },
+       { 26,   4,      "dB16" },
+       { 27,   4,      "dB18" },
+       { 28,   4,      "dB20" },
+       { 29,   4,      "dB22" },
+       { 30,   4,      "dB24" }
+};
+static const unsigned int asn_MAP_Q_OffsetRange_enum2value_1[] = {
+       14,     /* dB-1(14) */
+       7,      /* dB-10(7) */
+       6,      /* dB-12(6) */
+       5,      /* dB-14(5) */
+       4,      /* dB-16(4) */
+       3,      /* dB-18(3) */
+       13,     /* dB-2(13) */
+       2,      /* dB-20(2) */
+       1,      /* dB-22(1) */
+       0,      /* dB-24(0) */
+       12,     /* dB-3(12) */
+       11,     /* dB-4(11) */
+       10,     /* dB-5(10) */
+       9,      /* dB-6(9) */
+       8,      /* dB-8(8) */
+       15,     /* dB0(15) */
+       16,     /* dB1(16) */
+       23,     /* dB10(23) */
+       24,     /* dB12(24) */
+       25,     /* dB14(25) */
+       26,     /* dB16(26) */
+       27,     /* dB18(27) */
+       17,     /* dB2(17) */
+       28,     /* dB20(28) */
+       29,     /* dB22(29) */
+       30,     /* dB24(30) */
+       18,     /* dB3(18) */
+       19,     /* dB4(19) */
+       20,     /* dB5(20) */
+       21,     /* dB6(21) */
+       22      /* dB8(22) */
+};
+const asn_INTEGER_specifics_t asn_SPC_Q_OffsetRange_specs_1 = {
+       asn_MAP_Q_OffsetRange_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_Q_OffsetRange_enum2value_1,     /* N => "tag"; sorted by N */
+       31,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_Q_OffsetRange_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Q_OffsetRange = {
+       "Q-OffsetRange",
+       "Q-OffsetRange",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_Q_OffsetRange_tags_1,
+       sizeof(asn_DEF_Q_OffsetRange_tags_1)
+               /sizeof(asn_DEF_Q_OffsetRange_tags_1[0]), /* 1 */
+       asn_DEF_Q_OffsetRange_tags_1,   /* Same as above */
+       sizeof(asn_DEF_Q_OffsetRange_tags_1)
+               /sizeof(asn_DEF_Q_OffsetRange_tags_1[0]), /* 1 */
+       { &asn_OER_type_Q_OffsetRange_constr_1, &asn_PER_type_Q_OffsetRange_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_Q_OffsetRange_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Q-OffsetRange.h b/src/codec_utils/RRC/Q-OffsetRange.h
new file mode 100644 (file)
index 0000000..4f0c655
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Q_OffsetRange_H_
+#define        _Q_OffsetRange_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Q_OffsetRange {
+       Q_OffsetRange_dB_24     = 0,
+       Q_OffsetRange_dB_22     = 1,
+       Q_OffsetRange_dB_20     = 2,
+       Q_OffsetRange_dB_18     = 3,
+       Q_OffsetRange_dB_16     = 4,
+       Q_OffsetRange_dB_14     = 5,
+       Q_OffsetRange_dB_12     = 6,
+       Q_OffsetRange_dB_10     = 7,
+       Q_OffsetRange_dB_8      = 8,
+       Q_OffsetRange_dB_6      = 9,
+       Q_OffsetRange_dB_5      = 10,
+       Q_OffsetRange_dB_4      = 11,
+       Q_OffsetRange_dB_3      = 12,
+       Q_OffsetRange_dB_2      = 13,
+       Q_OffsetRange_dB_1      = 14,
+       Q_OffsetRange_dB0       = 15,
+       Q_OffsetRange_dB1       = 16,
+       Q_OffsetRange_dB2       = 17,
+       Q_OffsetRange_dB3       = 18,
+       Q_OffsetRange_dB4       = 19,
+       Q_OffsetRange_dB5       = 20,
+       Q_OffsetRange_dB6       = 21,
+       Q_OffsetRange_dB8       = 22,
+       Q_OffsetRange_dB10      = 23,
+       Q_OffsetRange_dB12      = 24,
+       Q_OffsetRange_dB14      = 25,
+       Q_OffsetRange_dB16      = 26,
+       Q_OffsetRange_dB18      = 27,
+       Q_OffsetRange_dB20      = 28,
+       Q_OffsetRange_dB22      = 29,
+       Q_OffsetRange_dB24      = 30
+} e_Q_OffsetRange;
+
+/* Q-OffsetRange */
+typedef long    Q_OffsetRange_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_Q_OffsetRange_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_Q_OffsetRange;
+extern const asn_INTEGER_specifics_t asn_SPC_Q_OffsetRange_specs_1;
+asn_struct_free_f Q_OffsetRange_free;
+asn_struct_print_f Q_OffsetRange_print;
+asn_constr_check_f Q_OffsetRange_constraint;
+ber_type_decoder_f Q_OffsetRange_decode_ber;
+der_type_encoder_f Q_OffsetRange_encode_der;
+xer_type_decoder_f Q_OffsetRange_decode_xer;
+xer_type_encoder_f Q_OffsetRange_encode_xer;
+oer_type_decoder_f Q_OffsetRange_decode_oer;
+oer_type_encoder_f Q_OffsetRange_encode_oer;
+per_type_decoder_f Q_OffsetRange_decode_uper;
+per_type_encoder_f Q_OffsetRange_encode_uper;
+per_type_decoder_f Q_OffsetRange_decode_aper;
+per_type_encoder_f Q_OffsetRange_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Q_OffsetRange_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Q-OffsetRangeList.c b/src/codec_utils/RRC/Q-OffsetRangeList.c
new file mode 100644 (file)
index 0000000..f2fe958
--- /dev/null
@@ -0,0 +1,240 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Q-OffsetRangeList.h"
+
+static int asn_DFL_2_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_2_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static int asn_DFL_3_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_3_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static int asn_DFL_4_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_4_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static int asn_DFL_5_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_5_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static int asn_DFL_6_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_6_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+static int asn_DFL_7_cmp_15(const void *sptr) {
+       const Q_OffsetRange_t *st = sptr;
+       
+       if(!st) {
+               return -1; /* No value is not a default value */
+       }
+       
+       /* Test default value 15 */
+       return (*st != 15);
+}
+static int asn_DFL_7_set_15(void **sptr) {
+       Q_OffsetRange_t *st = *sptr;
+       
+       if(!st) {
+               st = (*sptr = CALLOC(1, sizeof(*st)));
+               if(!st) return -1;
+       }
+       
+       /* Install default value 15 */
+       *st = 15;
+       return 0;
+}
+asn_TYPE_member_t asn_MBR_Q_OffsetRangeList_1[] = {
+       { ATF_POINTER, 6, offsetof(struct Q_OffsetRangeList, rsrpOffsetSSB),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_2_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_2_set_15,      /* Set DEFAULT 15 */
+               "rsrpOffsetSSB"
+               },
+       { ATF_POINTER, 5, offsetof(struct Q_OffsetRangeList, rsrqOffsetSSB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_3_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_3_set_15,      /* Set DEFAULT 15 */
+               "rsrqOffsetSSB"
+               },
+       { ATF_POINTER, 4, offsetof(struct Q_OffsetRangeList, sinrOffsetSSB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_4_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_4_set_15,      /* Set DEFAULT 15 */
+               "sinrOffsetSSB"
+               },
+       { ATF_POINTER, 3, offsetof(struct Q_OffsetRangeList, rsrpOffsetCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_5_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_5_set_15,      /* Set DEFAULT 15 */
+               "rsrpOffsetCSI-RS"
+               },
+       { ATF_POINTER, 2, offsetof(struct Q_OffsetRangeList, rsrqOffsetCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_6_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_6_set_15,      /* Set DEFAULT 15 */
+               "rsrqOffsetCSI-RS"
+               },
+       { ATF_POINTER, 1, offsetof(struct Q_OffsetRangeList, sinrOffsetCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_OffsetRange,
+               0,
+               { 0, 0, 0 },
+               &asn_DFL_7_cmp_15,      /* Compare DEFAULT 15 */
+               &asn_DFL_7_set_15,      /* Set DEFAULT 15 */
+               "sinrOffsetCSI-RS"
+               },
+};
+static const int asn_MAP_Q_OffsetRangeList_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_Q_OffsetRangeList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_Q_OffsetRangeList_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rsrpOffsetSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rsrqOffsetSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sinrOffsetSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rsrpOffsetCSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rsrqOffsetCSI-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* sinrOffsetCSI-RS */
+};
+asn_SEQUENCE_specifics_t asn_SPC_Q_OffsetRangeList_specs_1 = {
+       sizeof(struct Q_OffsetRangeList),
+       offsetof(struct Q_OffsetRangeList, _asn_ctx),
+       asn_MAP_Q_OffsetRangeList_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_Q_OffsetRangeList_oms_1,        /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_Q_OffsetRangeList = {
+       "Q-OffsetRangeList",
+       "Q-OffsetRangeList",
+       &asn_OP_SEQUENCE,
+       asn_DEF_Q_OffsetRangeList_tags_1,
+       sizeof(asn_DEF_Q_OffsetRangeList_tags_1)
+               /sizeof(asn_DEF_Q_OffsetRangeList_tags_1[0]), /* 1 */
+       asn_DEF_Q_OffsetRangeList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_Q_OffsetRangeList_tags_1)
+               /sizeof(asn_DEF_Q_OffsetRangeList_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_Q_OffsetRangeList_1,
+       6,      /* Elements count */
+       &asn_SPC_Q_OffsetRangeList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/Q-OffsetRangeList.h b/src/codec_utils/RRC/Q-OffsetRangeList.h
new file mode 100644 (file)
index 0000000..cb3d5e7
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Q_OffsetRangeList_H_
+#define        _Q_OffsetRangeList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "Q-OffsetRange.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Q-OffsetRangeList */
+typedef struct Q_OffsetRangeList {
+       Q_OffsetRange_t *rsrpOffsetSSB; /* DEFAULT 15 */
+       Q_OffsetRange_t *rsrqOffsetSSB; /* DEFAULT 15 */
+       Q_OffsetRange_t *sinrOffsetSSB; /* DEFAULT 15 */
+       Q_OffsetRange_t *rsrpOffsetCSI_RS;      /* DEFAULT 15 */
+       Q_OffsetRange_t *rsrqOffsetCSI_RS;      /* DEFAULT 15 */
+       Q_OffsetRange_t *sinrOffsetCSI_RS;      /* DEFAULT 15 */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} Q_OffsetRangeList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Q_OffsetRangeList;
+extern asn_SEQUENCE_specifics_t asn_SPC_Q_OffsetRangeList_specs_1;
+extern asn_TYPE_member_t asn_MBR_Q_OffsetRangeList_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Q_OffsetRangeList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Q-QualMin.c b/src/codec_utils/RRC/Q-QualMin.c
new file mode 100644 (file)
index 0000000..87da260
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Q-QualMin.h"
+
+int
+Q_QualMin_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 >= -43 && value <= -12)) {
+               /* 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_Q_QualMin_constr_1 CC_NOTUSED = {
+       { 1, 0 }        /* (-43..-12) */,
+       -1};
+asn_per_constraints_t asn_PER_type_Q_QualMin_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5, -43, -12 }      /* (-43..-12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Q_QualMin_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Q_QualMin = {
+       "Q-QualMin",
+       "Q-QualMin",
+       &asn_OP_NativeInteger,
+       asn_DEF_Q_QualMin_tags_1,
+       sizeof(asn_DEF_Q_QualMin_tags_1)
+               /sizeof(asn_DEF_Q_QualMin_tags_1[0]), /* 1 */
+       asn_DEF_Q_QualMin_tags_1,       /* Same as above */
+       sizeof(asn_DEF_Q_QualMin_tags_1)
+               /sizeof(asn_DEF_Q_QualMin_tags_1[0]), /* 1 */
+       { &asn_OER_type_Q_QualMin_constr_1, &asn_PER_type_Q_QualMin_constr_1, Q_QualMin_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/Q-QualMin.h b/src/codec_utils/RRC/Q-QualMin.h
new file mode 100644 (file)
index 0000000..0cbdd27
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Q_QualMin_H_
+#define        _Q_QualMin_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Q-QualMin */
+typedef long    Q_QualMin_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_Q_QualMin_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_Q_QualMin;
+asn_struct_free_f Q_QualMin_free;
+asn_struct_print_f Q_QualMin_print;
+asn_constr_check_f Q_QualMin_constraint;
+ber_type_decoder_f Q_QualMin_decode_ber;
+der_type_encoder_f Q_QualMin_encode_der;
+xer_type_decoder_f Q_QualMin_decode_xer;
+xer_type_encoder_f Q_QualMin_encode_xer;
+oer_type_decoder_f Q_QualMin_decode_oer;
+oer_type_encoder_f Q_QualMin_encode_oer;
+per_type_decoder_f Q_QualMin_decode_uper;
+per_type_encoder_f Q_QualMin_encode_uper;
+per_type_decoder_f Q_QualMin_decode_aper;
+per_type_encoder_f Q_QualMin_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Q_QualMin_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/Q-RxLevMin.c b/src/codec_utils/RRC/Q-RxLevMin.c
new file mode 100644 (file)
index 0000000..90e9a53
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "Q-RxLevMin.h"
+
+int
+Q_RxLevMin_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 >= -70 && value <= -22)) {
+               /* 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_Q_RxLevMin_constr_1 CC_NOTUSED = {
+       { 1, 0 }        /* (-70..-22) */,
+       -1};
+asn_per_constraints_t asn_PER_type_Q_RxLevMin_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6, -70, -22 }      /* (-70..-22) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_Q_RxLevMin_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_Q_RxLevMin = {
+       "Q-RxLevMin",
+       "Q-RxLevMin",
+       &asn_OP_NativeInteger,
+       asn_DEF_Q_RxLevMin_tags_1,
+       sizeof(asn_DEF_Q_RxLevMin_tags_1)
+               /sizeof(asn_DEF_Q_RxLevMin_tags_1[0]), /* 1 */
+       asn_DEF_Q_RxLevMin_tags_1,      /* Same as above */
+       sizeof(asn_DEF_Q_RxLevMin_tags_1)
+               /sizeof(asn_DEF_Q_RxLevMin_tags_1[0]), /* 1 */
+       { &asn_OER_type_Q_RxLevMin_constr_1, &asn_PER_type_Q_RxLevMin_constr_1, Q_RxLevMin_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/Q-RxLevMin.h b/src/codec_utils/RRC/Q-RxLevMin.h
new file mode 100644 (file)
index 0000000..b956190
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _Q_RxLevMin_H_
+#define        _Q_RxLevMin_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Q-RxLevMin */
+typedef long    Q_RxLevMin_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_Q_RxLevMin_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_Q_RxLevMin;
+asn_struct_free_f Q_RxLevMin_free;
+asn_struct_print_f Q_RxLevMin_print;
+asn_constr_check_f Q_RxLevMin_constraint;
+ber_type_decoder_f Q_RxLevMin_decode_ber;
+der_type_encoder_f Q_RxLevMin_encode_der;
+xer_type_decoder_f Q_RxLevMin_decode_xer;
+xer_type_encoder_f Q_RxLevMin_encode_xer;
+oer_type_decoder_f Q_RxLevMin_decode_oer;
+oer_type_encoder_f Q_RxLevMin_encode_oer;
+per_type_decoder_f Q_RxLevMin_decode_uper;
+per_type_encoder_f Q_RxLevMin_encode_uper;
+per_type_decoder_f Q_RxLevMin_decode_aper;
+per_type_encoder_f Q_RxLevMin_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _Q_RxLevMin_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/QCL-Info.c b/src/codec_utils/RRC/QCL-Info.c
new file mode 100644 (file)
index 0000000..61933a3
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QCL-Info.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_referenceSignal_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_referenceSignal_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_qcl_Type_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_qcl_Type_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_referenceSignal_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct QCL_Info__referenceSignal, choice.csi_rs),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-rs"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct QCL_Info__referenceSignal, choice.ssb),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_referenceSignal_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-rs */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb */
+};
+static asn_CHOICE_specifics_t asn_SPC_referenceSignal_specs_4 = {
+       sizeof(struct QCL_Info__referenceSignal),
+       offsetof(struct QCL_Info__referenceSignal, _asn_ctx),
+       offsetof(struct QCL_Info__referenceSignal, present),
+       sizeof(((struct QCL_Info__referenceSignal *)0)->present),
+       asn_MAP_referenceSignal_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_referenceSignal_4 = {
+       "referenceSignal",
+       "referenceSignal",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_referenceSignal_constr_4, &asn_PER_type_referenceSignal_constr_4, CHOICE_constraint },
+       asn_MBR_referenceSignal_4,
+       2,      /* Elements count */
+       &asn_SPC_referenceSignal_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_qcl_Type_value2enum_7[] = {
+       { 0,    5,      "typeA" },
+       { 1,    5,      "typeB" },
+       { 2,    5,      "typeC" },
+       { 3,    5,      "typeD" }
+};
+static const unsigned int asn_MAP_qcl_Type_enum2value_7[] = {
+       0,      /* typeA(0) */
+       1,      /* typeB(1) */
+       2,      /* typeC(2) */
+       3       /* typeD(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_qcl_Type_specs_7 = {
+       asn_MAP_qcl_Type_value2enum_7,  /* "tag" => N; sorted by tag */
+       asn_MAP_qcl_Type_enum2value_7,  /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_qcl_Type_tags_7[] = {
+       (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_qcl_Type_7 = {
+       "qcl-Type",
+       "qcl-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_qcl_Type_tags_7,
+       sizeof(asn_DEF_qcl_Type_tags_7)
+               /sizeof(asn_DEF_qcl_Type_tags_7[0]) - 1, /* 1 */
+       asn_DEF_qcl_Type_tags_7,        /* Same as above */
+       sizeof(asn_DEF_qcl_Type_tags_7)
+               /sizeof(asn_DEF_qcl_Type_tags_7[0]), /* 2 */
+       { &asn_OER_type_qcl_Type_constr_7, &asn_PER_type_qcl_Type_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_qcl_Type_specs_7       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_QCL_Info_1[] = {
+       { ATF_POINTER, 2, offsetof(struct QCL_Info, cell),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cell"
+               },
+       { ATF_POINTER, 1, offsetof(struct QCL_Info, bwp_Id),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct QCL_Info, referenceSignal),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_referenceSignal_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignal"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct QCL_Info, qcl_Type),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_qcl_Type_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qcl-Type"
+               },
+};
+static const int asn_MAP_QCL_Info_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_QCL_Info_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_QCL_Info_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cell */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* bwp-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* referenceSignal */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* qcl-Type */
+};
+asn_SEQUENCE_specifics_t asn_SPC_QCL_Info_specs_1 = {
+       sizeof(struct QCL_Info),
+       offsetof(struct QCL_Info, _asn_ctx),
+       asn_MAP_QCL_Info_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_QCL_Info_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_QCL_Info = {
+       "QCL-Info",
+       "QCL-Info",
+       &asn_OP_SEQUENCE,
+       asn_DEF_QCL_Info_tags_1,
+       sizeof(asn_DEF_QCL_Info_tags_1)
+               /sizeof(asn_DEF_QCL_Info_tags_1[0]), /* 1 */
+       asn_DEF_QCL_Info_tags_1,        /* Same as above */
+       sizeof(asn_DEF_QCL_Info_tags_1)
+               /sizeof(asn_DEF_QCL_Info_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_QCL_Info_1,
+       4,      /* Elements count */
+       &asn_SPC_QCL_Info_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/QCL-Info.h b/src/codec_utils/RRC/QCL-Info.h
new file mode 100644 (file)
index 0000000..e3d852e
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QCL_Info_H_
+#define        _QCL_Info_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include "BWP-Id.h"
+#include <NativeEnumerated.h>
+#include "NZP-CSI-RS-ResourceId.h"
+#include "SSB-Index.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum QCL_Info__referenceSignal_PR {
+       QCL_Info__referenceSignal_PR_NOTHING,   /* No components present */
+       QCL_Info__referenceSignal_PR_csi_rs,
+       QCL_Info__referenceSignal_PR_ssb
+} QCL_Info__referenceSignal_PR;
+typedef enum QCL_Info__qcl_Type {
+       QCL_Info__qcl_Type_typeA        = 0,
+       QCL_Info__qcl_Type_typeB        = 1,
+       QCL_Info__qcl_Type_typeC        = 2,
+       QCL_Info__qcl_Type_typeD        = 3
+} e_QCL_Info__qcl_Type;
+
+/* QCL-Info */
+typedef struct QCL_Info {
+       ServCellIndex_t *cell;  /* OPTIONAL */
+       BWP_Id_t        *bwp_Id;        /* OPTIONAL */
+       struct QCL_Info__referenceSignal {
+               QCL_Info__referenceSignal_PR present;
+               union QCL_Info__referenceSignal_u {
+                       NZP_CSI_RS_ResourceId_t  csi_rs;
+                       SSB_Index_t      ssb;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } referenceSignal;
+       long     qcl_Type;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} QCL_Info_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_qcl_Type_7;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_QCL_Info;
+extern asn_SEQUENCE_specifics_t asn_SPC_QCL_Info_specs_1;
+extern asn_TYPE_member_t asn_MBR_QCL_Info_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QCL_Info_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/QFI.c b/src/codec_utils/RRC/QFI.c
new file mode 100644 (file)
index 0000000..b31154e
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QFI.h"
+
+int
+QFI_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_QFI_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_QFI_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_QFI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_QFI = {
+       "QFI",
+       "QFI",
+       &asn_OP_NativeInteger,
+       asn_DEF_QFI_tags_1,
+       sizeof(asn_DEF_QFI_tags_1)
+               /sizeof(asn_DEF_QFI_tags_1[0]), /* 1 */
+       asn_DEF_QFI_tags_1,     /* Same as above */
+       sizeof(asn_DEF_QFI_tags_1)
+               /sizeof(asn_DEF_QFI_tags_1[0]), /* 1 */
+       { &asn_OER_type_QFI_constr_1, &asn_PER_type_QFI_constr_1, QFI_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/QFI.h b/src/codec_utils/RRC/QFI.h
new file mode 100644 (file)
index 0000000..cdc6a4a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QFI_H_
+#define        _QFI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QFI */
+typedef long    QFI_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_QFI_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_QFI;
+asn_struct_free_f QFI_free;
+asn_struct_print_f QFI_print;
+asn_constr_check_f QFI_constraint;
+ber_type_decoder_f QFI_decode_ber;
+der_type_encoder_f QFI_encode_der;
+xer_type_decoder_f QFI_decode_xer;
+xer_type_encoder_f QFI_encode_xer;
+oer_type_decoder_f QFI_decode_oer;
+oer_type_encoder_f QFI_encode_oer;
+per_type_decoder_f QFI_decode_uper;
+per_type_encoder_f QFI_encode_uper;
+per_type_decoder_f QFI_decode_aper;
+per_type_encoder_f QFI_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QFI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/QuantityConfig.c b/src/codec_utils/RRC/QuantityConfig.c
new file mode 100644 (file)
index 0000000..4661790
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QuantityConfig.h"
+
+#include "QuantityConfigNR.h"
+#include "FilterConfig.h"
+static int
+memb_quantityConfigNR_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 <= 2)) {
+               /* 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_quantityConfigNR_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_type_quantityConfigNR_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_quantityConfigNR_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_memb_quantityConfigNR_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_quantityConfigNR_List_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_QuantityConfigNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_quantityConfigNR_List_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_quantityConfigNR_List_specs_2 = {
+       sizeof(struct QuantityConfig__quantityConfigNR_List),
+       offsetof(struct QuantityConfig__quantityConfigNR_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_quantityConfigNR_List_2 = {
+       "quantityConfigNR-List",
+       "quantityConfigNR-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_quantityConfigNR_List_tags_2,
+       sizeof(asn_DEF_quantityConfigNR_List_tags_2)
+               /sizeof(asn_DEF_quantityConfigNR_List_tags_2[0]) - 1, /* 1 */
+       asn_DEF_quantityConfigNR_List_tags_2,   /* Same as above */
+       sizeof(asn_DEF_quantityConfigNR_List_tags_2)
+               /sizeof(asn_DEF_quantityConfigNR_List_tags_2[0]), /* 2 */
+       { &asn_OER_type_quantityConfigNR_List_constr_2, &asn_PER_type_quantityConfigNR_List_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_quantityConfigNR_List_2,
+       1,      /* Single element */
+       &asn_SPC_quantityConfigNR_List_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_5[] = {
+       { ATF_POINTER, 1, offsetof(struct QuantityConfig__ext1, quantityConfigEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "quantityConfigEUTRA"
+               },
+};
+static const int asn_MAP_ext1_oms_5[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* quantityConfigEUTRA */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_5 = {
+       sizeof(struct QuantityConfig__ext1),
+       offsetof(struct QuantityConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_5,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_5,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_5 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_5,
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_5,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_5,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_5   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_QuantityConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct QuantityConfig, quantityConfigNR_List),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_quantityConfigNR_List_2,
+               0,
+               { &asn_OER_memb_quantityConfigNR_List_constr_2, &asn_PER_memb_quantityConfigNR_List_constr_2,  memb_quantityConfigNR_List_constraint_1 },
+               0, 0, /* No default value */
+               "quantityConfigNR-List"
+               },
+       { ATF_POINTER, 1, offsetof(struct QuantityConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ext1_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_QuantityConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_QuantityConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_QuantityConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* quantityConfigNR-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_QuantityConfig_specs_1 = {
+       sizeof(struct QuantityConfig),
+       offsetof(struct QuantityConfig, _asn_ctx),
+       asn_MAP_QuantityConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_QuantityConfig_oms_1,   /* Optional members */
+       1, 1,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_QuantityConfig = {
+       "QuantityConfig",
+       "QuantityConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_QuantityConfig_tags_1,
+       sizeof(asn_DEF_QuantityConfig_tags_1)
+               /sizeof(asn_DEF_QuantityConfig_tags_1[0]), /* 1 */
+       asn_DEF_QuantityConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_QuantityConfig_tags_1)
+               /sizeof(asn_DEF_QuantityConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_QuantityConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_QuantityConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/QuantityConfig.h b/src/codec_utils/RRC/QuantityConfig.h
new file mode 100644 (file)
index 0000000..ab14696
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QuantityConfig_H_
+#define        _QuantityConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct QuantityConfigNR;
+struct FilterConfig;
+
+/* QuantityConfig */
+typedef struct QuantityConfig {
+       struct QuantityConfig__quantityConfigNR_List {
+               A_SEQUENCE_OF(struct QuantityConfigNR) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *quantityConfigNR_List;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct QuantityConfig__ext1 {
+               struct FilterConfig     *quantityConfigEUTRA;   /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} QuantityConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_QuantityConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_QuantityConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_QuantityConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QuantityConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/QuantityConfigNR.c b/src/codec_utils/RRC/QuantityConfigNR.c
new file mode 100644 (file)
index 0000000..a7e941c
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QuantityConfigNR.h"
+
+#include "QuantityConfigRS.h"
+asn_TYPE_member_t asn_MBR_QuantityConfigNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct QuantityConfigNR, quantityConfigCell),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QuantityConfigRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "quantityConfigCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct QuantityConfigNR, quantityConfigRS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QuantityConfigRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "quantityConfigRS-Index"
+               },
+};
+static const int asn_MAP_QuantityConfigNR_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_QuantityConfigNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_QuantityConfigNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* quantityConfigCell */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* quantityConfigRS-Index */
+};
+asn_SEQUENCE_specifics_t asn_SPC_QuantityConfigNR_specs_1 = {
+       sizeof(struct QuantityConfigNR),
+       offsetof(struct QuantityConfigNR, _asn_ctx),
+       asn_MAP_QuantityConfigNR_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_QuantityConfigNR_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_QuantityConfigNR = {
+       "QuantityConfigNR",
+       "QuantityConfigNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_QuantityConfigNR_tags_1,
+       sizeof(asn_DEF_QuantityConfigNR_tags_1)
+               /sizeof(asn_DEF_QuantityConfigNR_tags_1[0]), /* 1 */
+       asn_DEF_QuantityConfigNR_tags_1,        /* Same as above */
+       sizeof(asn_DEF_QuantityConfigNR_tags_1)
+               /sizeof(asn_DEF_QuantityConfigNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_QuantityConfigNR_1,
+       2,      /* Elements count */
+       &asn_SPC_QuantityConfigNR_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/QuantityConfigNR.h b/src/codec_utils/RRC/QuantityConfigNR.h
new file mode 100644 (file)
index 0000000..4ab293c
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QuantityConfigNR_H_
+#define        _QuantityConfigNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "QuantityConfigRS.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct QuantityConfigRS;
+
+/* QuantityConfigNR */
+typedef struct QuantityConfigNR {
+       QuantityConfigRS_t       quantityConfigCell;
+       struct QuantityConfigRS *quantityConfigRS_Index;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} QuantityConfigNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_QuantityConfigNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_QuantityConfigNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_QuantityConfigNR_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QuantityConfigNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/QuantityConfigRS.c b/src/codec_utils/RRC/QuantityConfigRS.c
new file mode 100644 (file)
index 0000000..caf22ad
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "QuantityConfigRS.h"
+
+asn_TYPE_member_t asn_MBR_QuantityConfigRS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct QuantityConfigRS, ssb_FilterConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-FilterConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct QuantityConfigRS, csi_RS_FilterConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FilterConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-FilterConfig"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_QuantityConfigRS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_QuantityConfigRS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-FilterConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-FilterConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_QuantityConfigRS_specs_1 = {
+       sizeof(struct QuantityConfigRS),
+       offsetof(struct QuantityConfigRS, _asn_ctx),
+       asn_MAP_QuantityConfigRS_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_QuantityConfigRS = {
+       "QuantityConfigRS",
+       "QuantityConfigRS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_QuantityConfigRS_tags_1,
+       sizeof(asn_DEF_QuantityConfigRS_tags_1)
+               /sizeof(asn_DEF_QuantityConfigRS_tags_1[0]), /* 1 */
+       asn_DEF_QuantityConfigRS_tags_1,        /* Same as above */
+       sizeof(asn_DEF_QuantityConfigRS_tags_1)
+               /sizeof(asn_DEF_QuantityConfigRS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_QuantityConfigRS_1,
+       2,      /* Elements count */
+       &asn_SPC_QuantityConfigRS_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/QuantityConfigRS.h b/src/codec_utils/RRC/QuantityConfigRS.h
new file mode 100644 (file)
index 0000000..5c1359a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _QuantityConfigRS_H_
+#define        _QuantityConfigRS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FilterConfig.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* QuantityConfigRS */
+typedef struct QuantityConfigRS {
+       FilterConfig_t   ssb_FilterConfig;
+       FilterConfig_t   csi_RS_FilterConfig;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} QuantityConfigRS_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_QuantityConfigRS;
+extern asn_SEQUENCE_specifics_t asn_SPC_QuantityConfigRS_specs_1;
+extern asn_TYPE_member_t asn_MBR_QuantityConfigRS_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _QuantityConfigRS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RA-Prioritization.c b/src/codec_utils/RRC/RA-Prioritization.c
new file mode 100644 (file)
index 0000000..843fa12
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RA-Prioritization.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.
+ */
+static asn_oer_constraints_t asn_OER_type_powerRampingStepHighPriority_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_powerRampingStepHighPriority_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_scalingFactorBI_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scalingFactorBI_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_powerRampingStepHighPriority_value2enum_2[] = {
+       { 0,    3,      "dB0" },
+       { 1,    3,      "dB2" },
+       { 2,    3,      "dB4" },
+       { 3,    3,      "dB6" }
+};
+static const unsigned int asn_MAP_powerRampingStepHighPriority_enum2value_2[] = {
+       0,      /* dB0(0) */
+       1,      /* dB2(1) */
+       2,      /* dB4(2) */
+       3       /* dB6(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_powerRampingStepHighPriority_specs_2 = {
+       asn_MAP_powerRampingStepHighPriority_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_powerRampingStepHighPriority_enum2value_2,      /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_powerRampingStepHighPriority_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_powerRampingStepHighPriority_2 = {
+       "powerRampingStepHighPriority",
+       "powerRampingStepHighPriority",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_powerRampingStepHighPriority_tags_2,
+       sizeof(asn_DEF_powerRampingStepHighPriority_tags_2)
+               /sizeof(asn_DEF_powerRampingStepHighPriority_tags_2[0]) - 1, /* 1 */
+       asn_DEF_powerRampingStepHighPriority_tags_2,    /* Same as above */
+       sizeof(asn_DEF_powerRampingStepHighPriority_tags_2)
+               /sizeof(asn_DEF_powerRampingStepHighPriority_tags_2[0]), /* 2 */
+       { &asn_OER_type_powerRampingStepHighPriority_constr_2, &asn_PER_type_powerRampingStepHighPriority_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_powerRampingStepHighPriority_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scalingFactorBI_value2enum_7[] = {
+       { 0,    4,      "zero" },
+       { 1,    5,      "dot25" },
+       { 2,    4,      "dot5" },
+       { 3,    5,      "dot75" }
+};
+static const unsigned int asn_MAP_scalingFactorBI_enum2value_7[] = {
+       1,      /* dot25(1) */
+       2,      /* dot5(2) */
+       3,      /* dot75(3) */
+       0       /* zero(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scalingFactorBI_specs_7 = {
+       asn_MAP_scalingFactorBI_value2enum_7,   /* "tag" => N; sorted by tag */
+       asn_MAP_scalingFactorBI_enum2value_7,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scalingFactorBI_tags_7[] = {
+       (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_scalingFactorBI_7 = {
+       "scalingFactorBI",
+       "scalingFactorBI",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scalingFactorBI_tags_7,
+       sizeof(asn_DEF_scalingFactorBI_tags_7)
+               /sizeof(asn_DEF_scalingFactorBI_tags_7[0]) - 1, /* 1 */
+       asn_DEF_scalingFactorBI_tags_7, /* Same as above */
+       sizeof(asn_DEF_scalingFactorBI_tags_7)
+               /sizeof(asn_DEF_scalingFactorBI_tags_7[0]), /* 2 */
+       { &asn_OER_type_scalingFactorBI_constr_7, &asn_PER_type_scalingFactorBI_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scalingFactorBI_specs_7        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RA_Prioritization_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RA_Prioritization, powerRampingStepHighPriority),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_powerRampingStepHighPriority_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerRampingStepHighPriority"
+               },
+       { ATF_POINTER, 1, offsetof(struct RA_Prioritization, scalingFactorBI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scalingFactorBI_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scalingFactorBI"
+               },
+};
+static const int asn_MAP_RA_Prioritization_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RA_Prioritization_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RA_Prioritization_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* powerRampingStepHighPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scalingFactorBI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RA_Prioritization_specs_1 = {
+       sizeof(struct RA_Prioritization),
+       offsetof(struct RA_Prioritization, _asn_ctx),
+       asn_MAP_RA_Prioritization_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RA_Prioritization_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RA_Prioritization = {
+       "RA-Prioritization",
+       "RA-Prioritization",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RA_Prioritization_tags_1,
+       sizeof(asn_DEF_RA_Prioritization_tags_1)
+               /sizeof(asn_DEF_RA_Prioritization_tags_1[0]), /* 1 */
+       asn_DEF_RA_Prioritization_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RA_Prioritization_tags_1)
+               /sizeof(asn_DEF_RA_Prioritization_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RA_Prioritization_1,
+       2,      /* Elements count */
+       &asn_SPC_RA_Prioritization_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RA-Prioritization.h b/src/codec_utils/RRC/RA-Prioritization.h
new file mode 100644 (file)
index 0000000..1fe01a5
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RA_Prioritization_H_
+#define        _RA_Prioritization_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RA_Prioritization__powerRampingStepHighPriority {
+       RA_Prioritization__powerRampingStepHighPriority_dB0     = 0,
+       RA_Prioritization__powerRampingStepHighPriority_dB2     = 1,
+       RA_Prioritization__powerRampingStepHighPriority_dB4     = 2,
+       RA_Prioritization__powerRampingStepHighPriority_dB6     = 3
+} e_RA_Prioritization__powerRampingStepHighPriority;
+typedef enum RA_Prioritization__scalingFactorBI {
+       RA_Prioritization__scalingFactorBI_zero = 0,
+       RA_Prioritization__scalingFactorBI_dot25        = 1,
+       RA_Prioritization__scalingFactorBI_dot5 = 2,
+       RA_Prioritization__scalingFactorBI_dot75        = 3
+} e_RA_Prioritization__scalingFactorBI;
+
+/* RA-Prioritization */
+typedef struct RA_Prioritization {
+       long     powerRampingStepHighPriority;
+       long    *scalingFactorBI;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RA_Prioritization_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_powerRampingStepHighPriority_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_scalingFactorBI_7;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RA_Prioritization;
+extern asn_SEQUENCE_specifics_t asn_SPC_RA_Prioritization_specs_1;
+extern asn_TYPE_member_t asn_MBR_RA_Prioritization_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RA_Prioritization_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RACH-ConfigCommon.c b/src/codec_utils/RRC/RACH-ConfigCommon.c
new file mode 100644 (file)
index 0000000..104e025
--- /dev/null
@@ -0,0 +1,1286 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RACH-ConfigCommon.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.
+ */
+static int
+memb_four_constraint_4(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 <= 16)) {
+               /* 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_eight_constraint_4(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 <= 8)) {
+               /* 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_sixteen_constraint_4(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 <= 4)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_numberOfRA_PreamblesGroupA_constraint_85(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 <= 64)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_l839_constraint_124(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 <= 837)) {
+               /* 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_l139_constraint_124(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 <= 137)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_totalNumberOfRA_Preambles_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 <= 63)) {
+               /* 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_oneEighth_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_oneEighth_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_oneFourth_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_oneFourth_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_oneHalf_constr_39 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_oneHalf_constr_39 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_one_constr_56 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_one_constr_56 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_two_constr_73 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_two_constr_73 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_four_constr_82 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_four_constr_82 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_eight_constr_83 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_eight_constr_83 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sixteen_constr_84 CC_NOTUSED = {
+       { 1, 1 }        /* (1..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sixteen_constr_84 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ra_Msg3SizeGroupA_constr_86 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ra_Msg3SizeGroupA_constr_86 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_messagePowerOffsetGroupB_constr_103 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_messagePowerOffsetGroupB_constr_103 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_numberOfRA_PreamblesGroupA_constr_112 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_numberOfRA_PreamblesGroupA_constr_112 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ra_ContentionResolutionTimer_constr_113 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ra_ContentionResolutionTimer_constr_113 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_l839_constr_125 CC_NOTUSED = {
+       { 2, 1 }        /* (0..837) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_l839_constr_125 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  837 }    /* (0..837) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_l139_constr_126 CC_NOTUSED = {
+       { 1, 1 }        /* (0..137) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_l139_constr_126 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  137 }      /* (0..137) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_prach_RootSequenceIndex_constr_124 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_prach_RootSequenceIndex_constr_124 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_restrictedSetConfig_constr_128 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_restrictedSetConfig_constr_128 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_msg3_transformPrecoder_constr_132 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_msg3_transformPrecoder_constr_132 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_totalNumberOfRA_Preambles_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberOfRA_Preambles_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (1..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_oneEighth_value2enum_5[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n20" },
+       { 5,    3,      "n24" },
+       { 6,    3,      "n28" },
+       { 7,    3,      "n32" },
+       { 8,    3,      "n36" },
+       { 9,    3,      "n40" },
+       { 10,   3,      "n44" },
+       { 11,   3,      "n48" },
+       { 12,   3,      "n52" },
+       { 13,   3,      "n56" },
+       { 14,   3,      "n60" },
+       { 15,   3,      "n64" }
+};
+static const unsigned int asn_MAP_oneEighth_enum2value_5[] = {
+       2,      /* n12(2) */
+       3,      /* n16(3) */
+       4,      /* n20(4) */
+       5,      /* n24(5) */
+       6,      /* n28(6) */
+       7,      /* n32(7) */
+       8,      /* n36(8) */
+       0,      /* n4(0) */
+       9,      /* n40(9) */
+       10,     /* n44(10) */
+       11,     /* n48(11) */
+       12,     /* n52(12) */
+       13,     /* n56(13) */
+       14,     /* n60(14) */
+       15,     /* n64(15) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_oneEighth_specs_5 = {
+       asn_MAP_oneEighth_value2enum_5, /* "tag" => N; sorted by tag */
+       asn_MAP_oneEighth_enum2value_5, /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_oneEighth_tags_5[] = {
+       (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_oneEighth_5 = {
+       "oneEighth",
+       "oneEighth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_oneEighth_tags_5,
+       sizeof(asn_DEF_oneEighth_tags_5)
+               /sizeof(asn_DEF_oneEighth_tags_5[0]) - 1, /* 1 */
+       asn_DEF_oneEighth_tags_5,       /* Same as above */
+       sizeof(asn_DEF_oneEighth_tags_5)
+               /sizeof(asn_DEF_oneEighth_tags_5[0]), /* 2 */
+       { &asn_OER_type_oneEighth_constr_5, &asn_PER_type_oneEighth_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_oneEighth_specs_5      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_oneFourth_value2enum_22[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n20" },
+       { 5,    3,      "n24" },
+       { 6,    3,      "n28" },
+       { 7,    3,      "n32" },
+       { 8,    3,      "n36" },
+       { 9,    3,      "n40" },
+       { 10,   3,      "n44" },
+       { 11,   3,      "n48" },
+       { 12,   3,      "n52" },
+       { 13,   3,      "n56" },
+       { 14,   3,      "n60" },
+       { 15,   3,      "n64" }
+};
+static const unsigned int asn_MAP_oneFourth_enum2value_22[] = {
+       2,      /* n12(2) */
+       3,      /* n16(3) */
+       4,      /* n20(4) */
+       5,      /* n24(5) */
+       6,      /* n28(6) */
+       7,      /* n32(7) */
+       8,      /* n36(8) */
+       0,      /* n4(0) */
+       9,      /* n40(9) */
+       10,     /* n44(10) */
+       11,     /* n48(11) */
+       12,     /* n52(12) */
+       13,     /* n56(13) */
+       14,     /* n60(14) */
+       15,     /* n64(15) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_oneFourth_specs_22 = {
+       asn_MAP_oneFourth_value2enum_22,        /* "tag" => N; sorted by tag */
+       asn_MAP_oneFourth_enum2value_22,        /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_oneFourth_tags_22[] = {
+       (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_oneFourth_22 = {
+       "oneFourth",
+       "oneFourth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_oneFourth_tags_22,
+       sizeof(asn_DEF_oneFourth_tags_22)
+               /sizeof(asn_DEF_oneFourth_tags_22[0]) - 1, /* 1 */
+       asn_DEF_oneFourth_tags_22,      /* Same as above */
+       sizeof(asn_DEF_oneFourth_tags_22)
+               /sizeof(asn_DEF_oneFourth_tags_22[0]), /* 2 */
+       { &asn_OER_type_oneFourth_constr_22, &asn_PER_type_oneFourth_constr_22, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_oneFourth_specs_22     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_oneHalf_value2enum_39[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n20" },
+       { 5,    3,      "n24" },
+       { 6,    3,      "n28" },
+       { 7,    3,      "n32" },
+       { 8,    3,      "n36" },
+       { 9,    3,      "n40" },
+       { 10,   3,      "n44" },
+       { 11,   3,      "n48" },
+       { 12,   3,      "n52" },
+       { 13,   3,      "n56" },
+       { 14,   3,      "n60" },
+       { 15,   3,      "n64" }
+};
+static const unsigned int asn_MAP_oneHalf_enum2value_39[] = {
+       2,      /* n12(2) */
+       3,      /* n16(3) */
+       4,      /* n20(4) */
+       5,      /* n24(5) */
+       6,      /* n28(6) */
+       7,      /* n32(7) */
+       8,      /* n36(8) */
+       0,      /* n4(0) */
+       9,      /* n40(9) */
+       10,     /* n44(10) */
+       11,     /* n48(11) */
+       12,     /* n52(12) */
+       13,     /* n56(13) */
+       14,     /* n60(14) */
+       15,     /* n64(15) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_oneHalf_specs_39 = {
+       asn_MAP_oneHalf_value2enum_39,  /* "tag" => N; sorted by tag */
+       asn_MAP_oneHalf_enum2value_39,  /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_oneHalf_tags_39[] = {
+       (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_oneHalf_39 = {
+       "oneHalf",
+       "oneHalf",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_oneHalf_tags_39,
+       sizeof(asn_DEF_oneHalf_tags_39)
+               /sizeof(asn_DEF_oneHalf_tags_39[0]) - 1, /* 1 */
+       asn_DEF_oneHalf_tags_39,        /* Same as above */
+       sizeof(asn_DEF_oneHalf_tags_39)
+               /sizeof(asn_DEF_oneHalf_tags_39[0]), /* 2 */
+       { &asn_OER_type_oneHalf_constr_39, &asn_PER_type_oneHalf_constr_39, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_oneHalf_specs_39       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_one_value2enum_56[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n20" },
+       { 5,    3,      "n24" },
+       { 6,    3,      "n28" },
+       { 7,    3,      "n32" },
+       { 8,    3,      "n36" },
+       { 9,    3,      "n40" },
+       { 10,   3,      "n44" },
+       { 11,   3,      "n48" },
+       { 12,   3,      "n52" },
+       { 13,   3,      "n56" },
+       { 14,   3,      "n60" },
+       { 15,   3,      "n64" }
+};
+static const unsigned int asn_MAP_one_enum2value_56[] = {
+       2,      /* n12(2) */
+       3,      /* n16(3) */
+       4,      /* n20(4) */
+       5,      /* n24(5) */
+       6,      /* n28(6) */
+       7,      /* n32(7) */
+       8,      /* n36(8) */
+       0,      /* n4(0) */
+       9,      /* n40(9) */
+       10,     /* n44(10) */
+       11,     /* n48(11) */
+       12,     /* n52(12) */
+       13,     /* n56(13) */
+       14,     /* n60(14) */
+       15,     /* n64(15) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_one_specs_56 = {
+       asn_MAP_one_value2enum_56,      /* "tag" => N; sorted by tag */
+       asn_MAP_one_enum2value_56,      /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_one_tags_56[] = {
+       (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_one_56 = {
+       "one",
+       "one",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_one_tags_56,
+       sizeof(asn_DEF_one_tags_56)
+               /sizeof(asn_DEF_one_tags_56[0]) - 1, /* 1 */
+       asn_DEF_one_tags_56,    /* Same as above */
+       sizeof(asn_DEF_one_tags_56)
+               /sizeof(asn_DEF_one_tags_56[0]), /* 2 */
+       { &asn_OER_type_one_constr_56, &asn_PER_type_one_constr_56, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_one_specs_56   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_two_value2enum_73[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n12" },
+       { 3,    3,      "n16" },
+       { 4,    3,      "n20" },
+       { 5,    3,      "n24" },
+       { 6,    3,      "n28" },
+       { 7,    3,      "n32" }
+};
+static const unsigned int asn_MAP_two_enum2value_73[] = {
+       2,      /* n12(2) */
+       3,      /* n16(3) */
+       4,      /* n20(4) */
+       5,      /* n24(5) */
+       6,      /* n28(6) */
+       7,      /* n32(7) */
+       0,      /* n4(0) */
+       1       /* n8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_two_specs_73 = {
+       asn_MAP_two_value2enum_73,      /* "tag" => N; sorted by tag */
+       asn_MAP_two_enum2value_73,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_two_tags_73[] = {
+       (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_two_73 = {
+       "two",
+       "two",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_two_tags_73,
+       sizeof(asn_DEF_two_tags_73)
+               /sizeof(asn_DEF_two_tags_73[0]) - 1, /* 1 */
+       asn_DEF_two_tags_73,    /* Same as above */
+       sizeof(asn_DEF_two_tags_73)
+               /sizeof(asn_DEF_two_tags_73[0]), /* 2 */
+       { &asn_OER_type_two_constr_73, &asn_PER_type_two_constr_73, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_two_specs_73   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneEighth),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_oneEighth_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "oneEighth"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneFourth),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_oneFourth_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "oneFourth"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneHalf),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_oneHalf_39,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "oneHalf"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.one),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_one_56,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "one"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.two),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_two_73,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "two"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.four),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_four_constr_82, &asn_PER_memb_four_constr_82,  memb_four_constraint_4 },
+               0, 0, /* No default value */
+               "four"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.eight),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_eight_constr_83, &asn_PER_memb_eight_constr_83,  memb_eight_constraint_4 },
+               0, 0, /* No default value */
+               "eight"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.sixteen),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sixteen_constr_84, &asn_PER_memb_sixteen_constr_84,  memb_sixteen_constraint_4 },
+               0, 0, /* No default value */
+               "sixteen"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneEighth */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oneFourth */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* oneHalf */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* one */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* two */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sixteen */
+};
+static asn_CHOICE_specifics_t asn_SPC_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_specs_4 = {
+       sizeof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB),
+       offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, _asn_ctx),
+       offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, present),
+       sizeof(((struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB *)0)->present),
+       asn_MAP_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_tag2el_4,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4 = {
+       "ssb-perRACH-OccasionAndCB-PreamblesPerSSB",
+       "ssb-perRACH-OccasionAndCB-PreamblesPerSSB",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4, &asn_PER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4, CHOICE_constraint },
+       asn_MBR_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4,
+       8,      /* Elements count */
+       &asn_SPC_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_specs_4      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ra_Msg3SizeGroupA_value2enum_86[] = {
+       { 0,    3,      "b56" },
+       { 1,    4,      "b144" },
+       { 2,    4,      "b208" },
+       { 3,    4,      "b256" },
+       { 4,    4,      "b282" },
+       { 5,    4,      "b480" },
+       { 6,    4,      "b640" },
+       { 7,    4,      "b800" },
+       { 8,    5,      "b1000" },
+       { 9,    3,      "b72" },
+       { 10,   6,      "spare6" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_ra_Msg3SizeGroupA_enum2value_86[] = {
+       8,      /* b1000(8) */
+       1,      /* b144(1) */
+       2,      /* b208(2) */
+       3,      /* b256(3) */
+       4,      /* b282(4) */
+       5,      /* b480(5) */
+       0,      /* b56(0) */
+       6,      /* b640(6) */
+       9,      /* b72(9) */
+       7,      /* b800(7) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11,     /* spare5(11) */
+       10      /* spare6(10) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ra_Msg3SizeGroupA_specs_86 = {
+       asn_MAP_ra_Msg3SizeGroupA_value2enum_86,        /* "tag" => N; sorted by tag */
+       asn_MAP_ra_Msg3SizeGroupA_enum2value_86,        /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ra_Msg3SizeGroupA_tags_86[] = {
+       (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_ra_Msg3SizeGroupA_86 = {
+       "ra-Msg3SizeGroupA",
+       "ra-Msg3SizeGroupA",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ra_Msg3SizeGroupA_tags_86,
+       sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86)
+               /sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86[0]) - 1, /* 1 */
+       asn_DEF_ra_Msg3SizeGroupA_tags_86,      /* Same as above */
+       sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86)
+               /sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86[0]), /* 2 */
+       { &asn_OER_type_ra_Msg3SizeGroupA_constr_86, &asn_PER_type_ra_Msg3SizeGroupA_constr_86, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ra_Msg3SizeGroupA_specs_86     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_messagePowerOffsetGroupB_value2enum_103[] = {
+       { 0,    13,     "minusinfinity" },
+       { 1,    3,      "dB0" },
+       { 2,    3,      "dB5" },
+       { 3,    3,      "dB8" },
+       { 4,    4,      "dB10" },
+       { 5,    4,      "dB12" },
+       { 6,    4,      "dB15" },
+       { 7,    4,      "dB18" }
+};
+static const unsigned int asn_MAP_messagePowerOffsetGroupB_enum2value_103[] = {
+       1,      /* dB0(1) */
+       4,      /* dB10(4) */
+       5,      /* dB12(5) */
+       6,      /* dB15(6) */
+       7,      /* dB18(7) */
+       2,      /* dB5(2) */
+       3,      /* dB8(3) */
+       0       /* minusinfinity(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_messagePowerOffsetGroupB_specs_103 = {
+       asn_MAP_messagePowerOffsetGroupB_value2enum_103,        /* "tag" => N; sorted by tag */
+       asn_MAP_messagePowerOffsetGroupB_enum2value_103,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_messagePowerOffsetGroupB_tags_103[] = {
+       (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_messagePowerOffsetGroupB_103 = {
+       "messagePowerOffsetGroupB",
+       "messagePowerOffsetGroupB",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_messagePowerOffsetGroupB_tags_103,
+       sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103)
+               /sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103[0]) - 1, /* 1 */
+       asn_DEF_messagePowerOffsetGroupB_tags_103,      /* Same as above */
+       sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103)
+               /sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103[0]), /* 2 */
+       { &asn_OER_type_messagePowerOffsetGroupB_constr_103, &asn_PER_type_messagePowerOffsetGroupB_constr_103, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_messagePowerOffsetGroupB_specs_103     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_groupBconfigured_85[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, ra_Msg3SizeGroupA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ra_Msg3SizeGroupA_86,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-Msg3SizeGroupA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, messagePowerOffsetGroupB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_messagePowerOffsetGroupB_103,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messagePowerOffsetGroupB"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, numberOfRA_PreamblesGroupA),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_numberOfRA_PreamblesGroupA_constr_112, &asn_PER_memb_numberOfRA_PreamblesGroupA_constr_112,  memb_numberOfRA_PreamblesGroupA_constraint_85 },
+               0, 0, /* No default value */
+               "numberOfRA-PreamblesGroupA"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_groupBconfigured_tags_85[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_groupBconfigured_tag2el_85[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ra-Msg3SizeGroupA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* messagePowerOffsetGroupB */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* numberOfRA-PreamblesGroupA */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_groupBconfigured_specs_85 = {
+       sizeof(struct RACH_ConfigCommon__groupBconfigured),
+       offsetof(struct RACH_ConfigCommon__groupBconfigured, _asn_ctx),
+       asn_MAP_groupBconfigured_tag2el_85,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_groupBconfigured_85 = {
+       "groupBconfigured",
+       "groupBconfigured",
+       &asn_OP_SEQUENCE,
+       asn_DEF_groupBconfigured_tags_85,
+       sizeof(asn_DEF_groupBconfigured_tags_85)
+               /sizeof(asn_DEF_groupBconfigured_tags_85[0]) - 1, /* 1 */
+       asn_DEF_groupBconfigured_tags_85,       /* Same as above */
+       sizeof(asn_DEF_groupBconfigured_tags_85)
+               /sizeof(asn_DEF_groupBconfigured_tags_85[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_groupBconfigured_85,
+       3,      /* Elements count */
+       &asn_SPC_groupBconfigured_specs_85      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ra_ContentionResolutionTimer_value2enum_113[] = {
+       { 0,    3,      "sf8" },
+       { 1,    4,      "sf16" },
+       { 2,    4,      "sf24" },
+       { 3,    4,      "sf32" },
+       { 4,    4,      "sf40" },
+       { 5,    4,      "sf48" },
+       { 6,    4,      "sf56" },
+       { 7,    4,      "sf64" }
+};
+static const unsigned int asn_MAP_ra_ContentionResolutionTimer_enum2value_113[] = {
+       1,      /* sf16(1) */
+       2,      /* sf24(2) */
+       3,      /* sf32(3) */
+       4,      /* sf40(4) */
+       5,      /* sf48(5) */
+       6,      /* sf56(6) */
+       7,      /* sf64(7) */
+       0       /* sf8(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ra_ContentionResolutionTimer_specs_113 = {
+       asn_MAP_ra_ContentionResolutionTimer_value2enum_113,    /* "tag" => N; sorted by tag */
+       asn_MAP_ra_ContentionResolutionTimer_enum2value_113,    /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ra_ContentionResolutionTimer_tags_113[] = {
+       (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_ra_ContentionResolutionTimer_113 = {
+       "ra-ContentionResolutionTimer",
+       "ra-ContentionResolutionTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ra_ContentionResolutionTimer_tags_113,
+       sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113)
+               /sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113[0]) - 1, /* 1 */
+       asn_DEF_ra_ContentionResolutionTimer_tags_113,  /* Same as above */
+       sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113)
+               /sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113[0]), /* 2 */
+       { &asn_OER_type_ra_ContentionResolutionTimer_constr_113, &asn_PER_type_ra_ContentionResolutionTimer_constr_113, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ra_ContentionResolutionTimer_specs_113 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_prach_RootSequenceIndex_124[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, choice.l839),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_l839_constr_125, &asn_PER_memb_l839_constr_125,  memb_l839_constraint_124 },
+               0, 0, /* No default value */
+               "l839"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, choice.l139),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_l139_constr_126, &asn_PER_memb_l139_constr_126,  memb_l139_constraint_124 },
+               0, 0, /* No default value */
+               "l139"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_prach_RootSequenceIndex_tag2el_124[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* l839 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* l139 */
+};
+static asn_CHOICE_specifics_t asn_SPC_prach_RootSequenceIndex_specs_124 = {
+       sizeof(struct RACH_ConfigCommon__prach_RootSequenceIndex),
+       offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, _asn_ctx),
+       offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, present),
+       sizeof(((struct RACH_ConfigCommon__prach_RootSequenceIndex *)0)->present),
+       asn_MAP_prach_RootSequenceIndex_tag2el_124,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_prach_RootSequenceIndex_124 = {
+       "prach-RootSequenceIndex",
+       "prach-RootSequenceIndex",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_prach_RootSequenceIndex_constr_124, &asn_PER_type_prach_RootSequenceIndex_constr_124, CHOICE_constraint },
+       asn_MBR_prach_RootSequenceIndex_124,
+       2,      /* Elements count */
+       &asn_SPC_prach_RootSequenceIndex_specs_124      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_restrictedSetConfig_value2enum_128[] = {
+       { 0,    15,     "unrestrictedSet" },
+       { 1,    18,     "restrictedSetTypeA" },
+       { 2,    18,     "restrictedSetTypeB" }
+};
+static const unsigned int asn_MAP_restrictedSetConfig_enum2value_128[] = {
+       1,      /* restrictedSetTypeA(1) */
+       2,      /* restrictedSetTypeB(2) */
+       0       /* unrestrictedSet(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_restrictedSetConfig_specs_128 = {
+       asn_MAP_restrictedSetConfig_value2enum_128,     /* "tag" => N; sorted by tag */
+       asn_MAP_restrictedSetConfig_enum2value_128,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_restrictedSetConfig_tags_128[] = {
+       (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_restrictedSetConfig_128 = {
+       "restrictedSetConfig",
+       "restrictedSetConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_restrictedSetConfig_tags_128,
+       sizeof(asn_DEF_restrictedSetConfig_tags_128)
+               /sizeof(asn_DEF_restrictedSetConfig_tags_128[0]) - 1, /* 1 */
+       asn_DEF_restrictedSetConfig_tags_128,   /* Same as above */
+       sizeof(asn_DEF_restrictedSetConfig_tags_128)
+               /sizeof(asn_DEF_restrictedSetConfig_tags_128[0]), /* 2 */
+       { &asn_OER_type_restrictedSetConfig_constr_128, &asn_PER_type_restrictedSetConfig_constr_128, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_restrictedSetConfig_specs_128  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_msg3_transformPrecoder_value2enum_132[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_msg3_transformPrecoder_enum2value_132[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_msg3_transformPrecoder_specs_132 = {
+       asn_MAP_msg3_transformPrecoder_value2enum_132,  /* "tag" => N; sorted by tag */
+       asn_MAP_msg3_transformPrecoder_enum2value_132,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_msg3_transformPrecoder_tags_132[] = {
+       (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_msg3_transformPrecoder_132 = {
+       "msg3-transformPrecoder",
+       "msg3-transformPrecoder",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_msg3_transformPrecoder_tags_132,
+       sizeof(asn_DEF_msg3_transformPrecoder_tags_132)
+               /sizeof(asn_DEF_msg3_transformPrecoder_tags_132[0]) - 1, /* 1 */
+       asn_DEF_msg3_transformPrecoder_tags_132,        /* Same as above */
+       sizeof(asn_DEF_msg3_transformPrecoder_tags_132)
+               /sizeof(asn_DEF_msg3_transformPrecoder_tags_132[0]), /* 2 */
+       { &asn_OER_type_msg3_transformPrecoder_constr_132, &asn_PER_type_msg3_transformPrecoder_constr_132, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_msg3_transformPrecoder_specs_132       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RACH_ConfigCommon_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, rach_ConfigGeneric),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigGeneric,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigGeneric"
+               },
+       { ATF_POINTER, 3, offsetof(struct RACH_ConfigCommon, totalNumberOfRA_Preambles),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberOfRA_Preambles_constr_3, &asn_PER_memb_totalNumberOfRA_Preambles_constr_3,  memb_totalNumberOfRA_Preambles_constraint_1 },
+               0, 0, /* No default value */
+               "totalNumberOfRA-Preambles"
+               },
+       { ATF_POINTER, 2, offsetof(struct RACH_ConfigCommon, ssb_perRACH_OccasionAndCB_PreamblesPerSSB),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-perRACH-OccasionAndCB-PreamblesPerSSB"
+               },
+       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, groupBconfigured),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_groupBconfigured_85,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "groupBconfigured"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, ra_ContentionResolutionTimer),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ra_ContentionResolutionTimer_113,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-ContentionResolutionTimer"
+               },
+       { ATF_POINTER, 2, offsetof(struct RACH_ConfigCommon, rsrp_ThresholdSSB),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp-ThresholdSSB"
+               },
+       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, rsrp_ThresholdSSB_SUL),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rsrp-ThresholdSSB-SUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, prach_RootSequenceIndex),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_prach_RootSequenceIndex_124,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "prach-RootSequenceIndex"
+               },
+       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, msg1_SubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "msg1-SubcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, restrictedSetConfig),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_restrictedSetConfig_128,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "restrictedSetConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, msg3_transformPrecoder),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_msg3_transformPrecoder_132,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "msg3-transformPrecoder"
+               },
+};
+static const int asn_MAP_RACH_ConfigCommon_oms_1[] = { 1, 2, 3, 5, 6, 8, 10 };
+static const ber_tlv_tag_t asn_DEF_RACH_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RACH_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-ConfigGeneric */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* totalNumberOfRA-Preambles */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-perRACH-OccasionAndCB-PreamblesPerSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* groupBconfigured */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ra-ContentionResolutionTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rsrp-ThresholdSSB */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rsrp-ThresholdSSB-SUL */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* prach-RootSequenceIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* msg1-SubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* restrictedSetConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* msg3-transformPrecoder */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigCommon_specs_1 = {
+       sizeof(struct RACH_ConfigCommon),
+       offsetof(struct RACH_ConfigCommon, _asn_ctx),
+       asn_MAP_RACH_ConfigCommon_tag2el_1,
+       11,     /* Count of tags in the map */
+       asn_MAP_RACH_ConfigCommon_oms_1,        /* Optional members */
+       7, 0,   /* Root/Additions */
+       11,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RACH_ConfigCommon = {
+       "RACH-ConfigCommon",
+       "RACH-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RACH_ConfigCommon_tags_1,
+       sizeof(asn_DEF_RACH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_RACH_ConfigCommon_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RACH_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RACH_ConfigCommon_1,
+       11,     /* Elements count */
+       &asn_SPC_RACH_ConfigCommon_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RACH-ConfigCommon.h b/src/codec_utils/RRC/RACH-ConfigCommon.h
new file mode 100644 (file)
index 0000000..7647b18
--- /dev/null
@@ -0,0 +1,246 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RACH_ConfigCommon_H_
+#define        _RACH_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RACH-ConfigGeneric.h"
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include "RSRP-Range.h"
+#include "SubcarrierSpacing.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_NOTHING,        /* No components present */
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneEighth,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneFourth,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneHalf,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_two,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_four,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_eight,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_sixteen
+} RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR;
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n4      = 0,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n8      = 1,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n12     = 2,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n16     = 3,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n20     = 4,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n24     = 5,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n28     = 6,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n32     = 7,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n36     = 8,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n40     = 9,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n44     = 10,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n48     = 11,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n52     = 12,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n56     = 13,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n60     = 14,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n64     = 15
+} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth;
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n4      = 0,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n8      = 1,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n12     = 2,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n16     = 3,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n20     = 4,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n24     = 5,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n28     = 6,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n32     = 7,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n36     = 8,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n40     = 9,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n44     = 10,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n48     = 11,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n52     = 12,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n56     = 13,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n60     = 14,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n64     = 15
+} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth;
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n4        = 0,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n8        = 1,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n12       = 2,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n16       = 3,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n20       = 4,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n24       = 5,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n28       = 6,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n32       = 7,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n36       = 8,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n40       = 9,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n44       = 10,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n48       = 11,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n52       = 12,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n56       = 13,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n60       = 14,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n64       = 15
+} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf;
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n4    = 0,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n8    = 1,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n12   = 2,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n16   = 3,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n20   = 4,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n24   = 5,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n28   = 6,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n32   = 7,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n36   = 8,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n40   = 9,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n44   = 10,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n48   = 11,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n52   = 12,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n56   = 13,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n60   = 14,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n64   = 15
+} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one;
+typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two {
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n4    = 0,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n8    = 1,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n12   = 2,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n16   = 3,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n20   = 4,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n24   = 5,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n28   = 6,
+       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n32   = 7
+} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two;
+typedef enum RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA {
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b56      = 0,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b144     = 1,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b208     = 2,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b256     = 3,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b282     = 4,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b480     = 5,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b640     = 6,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b800     = 7,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b1000    = 8,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b72      = 9,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare6   = 10,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare5   = 11,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare4   = 12,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare3   = 13,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare2   = 14,
+       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare1   = 15
+} e_RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA;
+typedef enum RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB {
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_minusinfinity     = 0,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB0       = 1,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB5       = 2,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB8       = 3,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB10      = 4,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB12      = 5,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB15      = 6,
+       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB18      = 7
+} e_RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB;
+typedef enum RACH_ConfigCommon__ra_ContentionResolutionTimer {
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf8     = 0,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf16    = 1,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf24    = 2,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf32    = 3,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf40    = 4,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf48    = 5,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf56    = 6,
+       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf64    = 7
+} e_RACH_ConfigCommon__ra_ContentionResolutionTimer;
+typedef enum RACH_ConfigCommon__prach_RootSequenceIndex_PR {
+       RACH_ConfigCommon__prach_RootSequenceIndex_PR_NOTHING,  /* No components present */
+       RACH_ConfigCommon__prach_RootSequenceIndex_PR_l839,
+       RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139
+} RACH_ConfigCommon__prach_RootSequenceIndex_PR;
+typedef enum RACH_ConfigCommon__restrictedSetConfig {
+       RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet  = 0,
+       RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeA       = 1,
+       RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeB       = 2
+} e_RACH_ConfigCommon__restrictedSetConfig;
+typedef enum RACH_ConfigCommon__msg3_transformPrecoder {
+       RACH_ConfigCommon__msg3_transformPrecoder_enabled       = 0
+} e_RACH_ConfigCommon__msg3_transformPrecoder;
+
+/* RACH-ConfigCommon */
+typedef struct RACH_ConfigCommon {
+       RACH_ConfigGeneric_t     rach_ConfigGeneric;
+       long    *totalNumberOfRA_Preambles;     /* OPTIONAL */
+       struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB {
+               RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR present;
+               union RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_u {
+                       long     oneEighth;
+                       long     oneFourth;
+                       long     oneHalf;
+                       long     one;
+                       long     two;
+                       long     four;
+                       long     eight;
+                       long     sixteen;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ssb_perRACH_OccasionAndCB_PreamblesPerSSB;
+       struct RACH_ConfigCommon__groupBconfigured {
+               long     ra_Msg3SizeGroupA;
+               long     messagePowerOffsetGroupB;
+               long     numberOfRA_PreamblesGroupA;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *groupBconfigured;
+       long     ra_ContentionResolutionTimer;
+       RSRP_Range_t    *rsrp_ThresholdSSB;     /* OPTIONAL */
+       RSRP_Range_t    *rsrp_ThresholdSSB_SUL; /* OPTIONAL */
+       struct RACH_ConfigCommon__prach_RootSequenceIndex {
+               RACH_ConfigCommon__prach_RootSequenceIndex_PR present;
+               union RACH_ConfigCommon__prach_RootSequenceIndex_u {
+                       long     l839;
+                       long     l139;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } prach_RootSequenceIndex;
+       SubcarrierSpacing_t     *msg1_SubcarrierSpacing;        /* OPTIONAL */
+       long     restrictedSetConfig;
+       long    *msg3_transformPrecoder;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RACH_ConfigCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_oneEighth_5;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_oneFourth_22;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_oneHalf_39;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_one_56;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_two_73;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ra_Msg3SizeGroupA_86;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_messagePowerOffsetGroupB_103;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ra_ContentionResolutionTimer_113;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_restrictedSetConfig_128;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_msg3_transformPrecoder_132;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RACH_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_RACH_ConfigCommon_1[11];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RACH_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RACH-ConfigDedicated.c b/src/codec_utils/RRC/RACH-ConfigDedicated.c
new file mode 100644 (file)
index 0000000..87f1fce
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RACH-ConfigDedicated.h"
+
+#include "CFRA.h"
+#include "RA-Prioritization.h"
+asn_TYPE_member_t asn_MBR_RACH_ConfigDedicated_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RACH_ConfigDedicated, cfra),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CFRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cfra"
+               },
+       { ATF_POINTER, 1, offsetof(struct RACH_ConfigDedicated, ra_Prioritization),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RA_Prioritization,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-Prioritization"
+               },
+};
+static const int asn_MAP_RACH_ConfigDedicated_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RACH_ConfigDedicated_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RACH_ConfigDedicated_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cfra */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ra-Prioritization */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigDedicated_specs_1 = {
+       sizeof(struct RACH_ConfigDedicated),
+       offsetof(struct RACH_ConfigDedicated, _asn_ctx),
+       asn_MAP_RACH_ConfigDedicated_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RACH_ConfigDedicated_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RACH_ConfigDedicated = {
+       "RACH-ConfigDedicated",
+       "RACH-ConfigDedicated",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RACH_ConfigDedicated_tags_1,
+       sizeof(asn_DEF_RACH_ConfigDedicated_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigDedicated_tags_1[0]), /* 1 */
+       asn_DEF_RACH_ConfigDedicated_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RACH_ConfigDedicated_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigDedicated_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RACH_ConfigDedicated_1,
+       2,      /* Elements count */
+       &asn_SPC_RACH_ConfigDedicated_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RACH-ConfigDedicated.h b/src/codec_utils/RRC/RACH-ConfigDedicated.h
new file mode 100644 (file)
index 0000000..88a2d67
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RACH_ConfigDedicated_H_
+#define        _RACH_ConfigDedicated_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CFRA;
+struct RA_Prioritization;
+
+/* RACH-ConfigDedicated */
+typedef struct RACH_ConfigDedicated {
+       struct CFRA     *cfra;  /* OPTIONAL */
+       struct RA_Prioritization        *ra_Prioritization;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RACH_ConfigDedicated_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RACH_ConfigDedicated;
+extern asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigDedicated_specs_1;
+extern asn_TYPE_member_t asn_MBR_RACH_ConfigDedicated_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RACH_ConfigDedicated_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RACH-ConfigGeneric.c b/src/codec_utils/RRC/RACH-ConfigGeneric.c
new file mode 100644 (file)
index 0000000..f6b804c
--- /dev/null
@@ -0,0 +1,486 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RACH-ConfigGeneric.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.
+ */
+static int
+memb_prach_ConfigurationIndex_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 >= 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;
+       }
+}
+
+static int
+memb_msg1_FrequencyStart_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 >= 0 && value <= 274)) {
+               /* 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_zeroCorrelationZoneConfig_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 >= 0 && 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_preambleReceivedTargetPower_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 >= -202 && value <= -60)) {
+               /* 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_msg1_FDM_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_msg1_FDM_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_preambleTransMax_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_preambleTransMax_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_powerRampingStep_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_powerRampingStep_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ra_ResponseWindow_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ra_ResponseWindow_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_prach_ConfigurationIndex_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_prach_ConfigurationIndex_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_msg1_FrequencyStart_constr_8 CC_NOTUSED = {
+       { 2, 1 }        /* (0..274) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_msg1_FrequencyStart_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_zeroCorrelationZoneConfig_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_zeroCorrelationZoneConfig_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_preambleReceivedTargetPower_constr_10 CC_NOTUSED = {
+       { 2, 0 }        /* (-202..-60) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_preambleReceivedTargetPower_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -202, -60 }     /* (-202..-60) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_msg1_FDM_value2enum_3[] = {
+       { 0,    3,      "one" },
+       { 1,    3,      "two" },
+       { 2,    4,      "four" },
+       { 3,    5,      "eight" }
+};
+static const unsigned int asn_MAP_msg1_FDM_enum2value_3[] = {
+       3,      /* eight(3) */
+       2,      /* four(2) */
+       0,      /* one(0) */
+       1       /* two(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_msg1_FDM_specs_3 = {
+       asn_MAP_msg1_FDM_value2enum_3,  /* "tag" => N; sorted by tag */
+       asn_MAP_msg1_FDM_enum2value_3,  /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_msg1_FDM_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_msg1_FDM_3 = {
+       "msg1-FDM",
+       "msg1-FDM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_msg1_FDM_tags_3,
+       sizeof(asn_DEF_msg1_FDM_tags_3)
+               /sizeof(asn_DEF_msg1_FDM_tags_3[0]) - 1, /* 1 */
+       asn_DEF_msg1_FDM_tags_3,        /* Same as above */
+       sizeof(asn_DEF_msg1_FDM_tags_3)
+               /sizeof(asn_DEF_msg1_FDM_tags_3[0]), /* 2 */
+       { &asn_OER_type_msg1_FDM_constr_3, &asn_PER_type_msg1_FDM_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_msg1_FDM_specs_3       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_preambleTransMax_value2enum_11[] = {
+       { 0,    2,      "n3" },
+       { 1,    2,      "n4" },
+       { 2,    2,      "n5" },
+       { 3,    2,      "n6" },
+       { 4,    2,      "n7" },
+       { 5,    2,      "n8" },
+       { 6,    3,      "n10" },
+       { 7,    3,      "n20" },
+       { 8,    3,      "n50" },
+       { 9,    4,      "n100" },
+       { 10,   4,      "n200" }
+};
+static const unsigned int asn_MAP_preambleTransMax_enum2value_11[] = {
+       6,      /* n10(6) */
+       9,      /* n100(9) */
+       7,      /* n20(7) */
+       10,     /* n200(10) */
+       0,      /* n3(0) */
+       1,      /* n4(1) */
+       2,      /* n5(2) */
+       8,      /* n50(8) */
+       3,      /* n6(3) */
+       4,      /* n7(4) */
+       5       /* n8(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_preambleTransMax_specs_11 = {
+       asn_MAP_preambleTransMax_value2enum_11, /* "tag" => N; sorted by tag */
+       asn_MAP_preambleTransMax_enum2value_11, /* N => "tag"; sorted by N */
+       11,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_preambleTransMax_tags_11[] = {
+       (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_preambleTransMax_11 = {
+       "preambleTransMax",
+       "preambleTransMax",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_preambleTransMax_tags_11,
+       sizeof(asn_DEF_preambleTransMax_tags_11)
+               /sizeof(asn_DEF_preambleTransMax_tags_11[0]) - 1, /* 1 */
+       asn_DEF_preambleTransMax_tags_11,       /* Same as above */
+       sizeof(asn_DEF_preambleTransMax_tags_11)
+               /sizeof(asn_DEF_preambleTransMax_tags_11[0]), /* 2 */
+       { &asn_OER_type_preambleTransMax_constr_11, &asn_PER_type_preambleTransMax_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_preambleTransMax_specs_11      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_powerRampingStep_value2enum_23[] = {
+       { 0,    3,      "dB0" },
+       { 1,    3,      "dB2" },
+       { 2,    3,      "dB4" },
+       { 3,    3,      "dB6" }
+};
+static const unsigned int asn_MAP_powerRampingStep_enum2value_23[] = {
+       0,      /* dB0(0) */
+       1,      /* dB2(1) */
+       2,      /* dB4(2) */
+       3       /* dB6(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_powerRampingStep_specs_23 = {
+       asn_MAP_powerRampingStep_value2enum_23, /* "tag" => N; sorted by tag */
+       asn_MAP_powerRampingStep_enum2value_23, /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_powerRampingStep_tags_23[] = {
+       (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_powerRampingStep_23 = {
+       "powerRampingStep",
+       "powerRampingStep",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_powerRampingStep_tags_23,
+       sizeof(asn_DEF_powerRampingStep_tags_23)
+               /sizeof(asn_DEF_powerRampingStep_tags_23[0]) - 1, /* 1 */
+       asn_DEF_powerRampingStep_tags_23,       /* Same as above */
+       sizeof(asn_DEF_powerRampingStep_tags_23)
+               /sizeof(asn_DEF_powerRampingStep_tags_23[0]), /* 2 */
+       { &asn_OER_type_powerRampingStep_constr_23, &asn_PER_type_powerRampingStep_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_powerRampingStep_specs_23      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ra_ResponseWindow_value2enum_28[] = {
+       { 0,    3,      "sl1" },
+       { 1,    3,      "sl2" },
+       { 2,    3,      "sl4" },
+       { 3,    3,      "sl8" },
+       { 4,    4,      "sl10" },
+       { 5,    4,      "sl20" },
+       { 6,    4,      "sl40" },
+       { 7,    4,      "sl80" }
+};
+static const unsigned int asn_MAP_ra_ResponseWindow_enum2value_28[] = {
+       0,      /* sl1(0) */
+       4,      /* sl10(4) */
+       1,      /* sl2(1) */
+       5,      /* sl20(5) */
+       2,      /* sl4(2) */
+       6,      /* sl40(6) */
+       3,      /* sl8(3) */
+       7       /* sl80(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ra_ResponseWindow_specs_28 = {
+       asn_MAP_ra_ResponseWindow_value2enum_28,        /* "tag" => N; sorted by tag */
+       asn_MAP_ra_ResponseWindow_enum2value_28,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ra_ResponseWindow_tags_28[] = {
+       (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_ra_ResponseWindow_28 = {
+       "ra-ResponseWindow",
+       "ra-ResponseWindow",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ra_ResponseWindow_tags_28,
+       sizeof(asn_DEF_ra_ResponseWindow_tags_28)
+               /sizeof(asn_DEF_ra_ResponseWindow_tags_28[0]) - 1, /* 1 */
+       asn_DEF_ra_ResponseWindow_tags_28,      /* Same as above */
+       sizeof(asn_DEF_ra_ResponseWindow_tags_28)
+               /sizeof(asn_DEF_ra_ResponseWindow_tags_28[0]), /* 2 */
+       { &asn_OER_type_ra_ResponseWindow_constr_28, &asn_PER_type_ra_ResponseWindow_constr_28, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ra_ResponseWindow_specs_28     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RACH_ConfigGeneric_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, prach_ConfigurationIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_prach_ConfigurationIndex_constr_2, &asn_PER_memb_prach_ConfigurationIndex_constr_2,  memb_prach_ConfigurationIndex_constraint_1 },
+               0, 0, /* No default value */
+               "prach-ConfigurationIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, msg1_FDM),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_msg1_FDM_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "msg1-FDM"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, msg1_FrequencyStart),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_msg1_FrequencyStart_constr_8, &asn_PER_memb_msg1_FrequencyStart_constr_8,  memb_msg1_FrequencyStart_constraint_1 },
+               0, 0, /* No default value */
+               "msg1-FrequencyStart"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, zeroCorrelationZoneConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_zeroCorrelationZoneConfig_constr_9, &asn_PER_memb_zeroCorrelationZoneConfig_constr_9,  memb_zeroCorrelationZoneConfig_constraint_1 },
+               0, 0, /* No default value */
+               "zeroCorrelationZoneConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, preambleReceivedTargetPower),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_preambleReceivedTargetPower_constr_10, &asn_PER_memb_preambleReceivedTargetPower_constr_10,  memb_preambleReceivedTargetPower_constraint_1 },
+               0, 0, /* No default value */
+               "preambleReceivedTargetPower"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, preambleTransMax),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_preambleTransMax_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "preambleTransMax"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, powerRampingStep),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_powerRampingStep_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerRampingStep"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, ra_ResponseWindow),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ra_ResponseWindow_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ra-ResponseWindow"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RACH_ConfigGeneric_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RACH_ConfigGeneric_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* prach-ConfigurationIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* msg1-FDM */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msg1-FrequencyStart */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* zeroCorrelationZoneConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* preambleReceivedTargetPower */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* preambleTransMax */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* powerRampingStep */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ra-ResponseWindow */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigGeneric_specs_1 = {
+       sizeof(struct RACH_ConfigGeneric),
+       offsetof(struct RACH_ConfigGeneric, _asn_ctx),
+       asn_MAP_RACH_ConfigGeneric_tag2el_1,
+       8,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RACH_ConfigGeneric = {
+       "RACH-ConfigGeneric",
+       "RACH-ConfigGeneric",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RACH_ConfigGeneric_tags_1,
+       sizeof(asn_DEF_RACH_ConfigGeneric_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigGeneric_tags_1[0]), /* 1 */
+       asn_DEF_RACH_ConfigGeneric_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RACH_ConfigGeneric_tags_1)
+               /sizeof(asn_DEF_RACH_ConfigGeneric_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RACH_ConfigGeneric_1,
+       8,      /* Elements count */
+       &asn_SPC_RACH_ConfigGeneric_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RACH-ConfigGeneric.h b/src/codec_utils/RRC/RACH-ConfigGeneric.h
new file mode 100644 (file)
index 0000000..2375f2e
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RACH_ConfigGeneric_H_
+#define        _RACH_ConfigGeneric_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RACH_ConfigGeneric__msg1_FDM {
+       RACH_ConfigGeneric__msg1_FDM_one        = 0,
+       RACH_ConfigGeneric__msg1_FDM_two        = 1,
+       RACH_ConfigGeneric__msg1_FDM_four       = 2,
+       RACH_ConfigGeneric__msg1_FDM_eight      = 3
+} e_RACH_ConfigGeneric__msg1_FDM;
+typedef enum RACH_ConfigGeneric__preambleTransMax {
+       RACH_ConfigGeneric__preambleTransMax_n3 = 0,
+       RACH_ConfigGeneric__preambleTransMax_n4 = 1,
+       RACH_ConfigGeneric__preambleTransMax_n5 = 2,
+       RACH_ConfigGeneric__preambleTransMax_n6 = 3,
+       RACH_ConfigGeneric__preambleTransMax_n7 = 4,
+       RACH_ConfigGeneric__preambleTransMax_n8 = 5,
+       RACH_ConfigGeneric__preambleTransMax_n10        = 6,
+       RACH_ConfigGeneric__preambleTransMax_n20        = 7,
+       RACH_ConfigGeneric__preambleTransMax_n50        = 8,
+       RACH_ConfigGeneric__preambleTransMax_n100       = 9,
+       RACH_ConfigGeneric__preambleTransMax_n200       = 10
+} e_RACH_ConfigGeneric__preambleTransMax;
+typedef enum RACH_ConfigGeneric__powerRampingStep {
+       RACH_ConfigGeneric__powerRampingStep_dB0        = 0,
+       RACH_ConfigGeneric__powerRampingStep_dB2        = 1,
+       RACH_ConfigGeneric__powerRampingStep_dB4        = 2,
+       RACH_ConfigGeneric__powerRampingStep_dB6        = 3
+} e_RACH_ConfigGeneric__powerRampingStep;
+typedef enum RACH_ConfigGeneric__ra_ResponseWindow {
+       RACH_ConfigGeneric__ra_ResponseWindow_sl1       = 0,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl2       = 1,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl4       = 2,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl8       = 3,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl10      = 4,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl20      = 5,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl40      = 6,
+       RACH_ConfigGeneric__ra_ResponseWindow_sl80      = 7
+} e_RACH_ConfigGeneric__ra_ResponseWindow;
+
+/* RACH-ConfigGeneric */
+typedef struct RACH_ConfigGeneric {
+       long     prach_ConfigurationIndex;
+       long     msg1_FDM;
+       long     msg1_FrequencyStart;
+       long     zeroCorrelationZoneConfig;
+       long     preambleReceivedTargetPower;
+       long     preambleTransMax;
+       long     powerRampingStep;
+       long     ra_ResponseWindow;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RACH_ConfigGeneric_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_msg1_FDM_3;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_preambleTransMax_11;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_powerRampingStep_23;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ra_ResponseWindow_28;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RACH_ConfigGeneric;
+extern asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigGeneric_specs_1;
+extern asn_TYPE_member_t asn_MBR_RACH_ConfigGeneric_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RACH_ConfigGeneric_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RAN-AreaCode.c b/src/codec_utils/RRC/RAN-AreaCode.c
new file mode 100644 (file)
index 0000000..bfa852f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RAN-AreaCode.h"
+
+int
+RAN_AreaCode_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_RAN_AreaCode_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RAN_AreaCode_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_RAN_AreaCode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RAN_AreaCode = {
+       "RAN-AreaCode",
+       "RAN-AreaCode",
+       &asn_OP_NativeInteger,
+       asn_DEF_RAN_AreaCode_tags_1,
+       sizeof(asn_DEF_RAN_AreaCode_tags_1)
+               /sizeof(asn_DEF_RAN_AreaCode_tags_1[0]), /* 1 */
+       asn_DEF_RAN_AreaCode_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RAN_AreaCode_tags_1)
+               /sizeof(asn_DEF_RAN_AreaCode_tags_1[0]), /* 1 */
+       { &asn_OER_type_RAN_AreaCode_constr_1, &asn_PER_type_RAN_AreaCode_constr_1, RAN_AreaCode_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RAN-AreaCode.h b/src/codec_utils/RRC/RAN-AreaCode.h
new file mode 100644 (file)
index 0000000..fb588b7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RAN_AreaCode_H_
+#define        _RAN_AreaCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAN-AreaCode */
+typedef long    RAN_AreaCode_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RAN_AreaCode_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RAN_AreaCode;
+asn_struct_free_f RAN_AreaCode_free;
+asn_struct_print_f RAN_AreaCode_print;
+asn_constr_check_f RAN_AreaCode_constraint;
+ber_type_decoder_f RAN_AreaCode_decode_ber;
+der_type_encoder_f RAN_AreaCode_encode_der;
+xer_type_decoder_f RAN_AreaCode_decode_xer;
+xer_type_encoder_f RAN_AreaCode_encode_xer;
+oer_type_decoder_f RAN_AreaCode_decode_oer;
+oer_type_encoder_f RAN_AreaCode_encode_oer;
+per_type_decoder_f RAN_AreaCode_decode_uper;
+per_type_encoder_f RAN_AreaCode_encode_uper;
+per_type_decoder_f RAN_AreaCode_decode_aper;
+per_type_encoder_f RAN_AreaCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAN_AreaCode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RAN-AreaConfig.c b/src/codec_utils/RRC/RAN-AreaConfig.c
new file mode 100644 (file)
index 0000000..b4f66cd
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RAN-AreaConfig.h"
+
+static int
+memb_ran_AreaCodeList_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 <= 32)) {
+               /* 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_ran_AreaCodeList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_ran_AreaCodeList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ran_AreaCodeList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_ran_AreaCodeList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ran_AreaCodeList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_RAN_AreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ran_AreaCodeList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_ran_AreaCodeList_specs_3 = {
+       sizeof(struct RAN_AreaConfig__ran_AreaCodeList),
+       offsetof(struct RAN_AreaConfig__ran_AreaCodeList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ran_AreaCodeList_3 = {
+       "ran-AreaCodeList",
+       "ran-AreaCodeList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ran_AreaCodeList_tags_3,
+       sizeof(asn_DEF_ran_AreaCodeList_tags_3)
+               /sizeof(asn_DEF_ran_AreaCodeList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_ran_AreaCodeList_tags_3,        /* Same as above */
+       sizeof(asn_DEF_ran_AreaCodeList_tags_3)
+               /sizeof(asn_DEF_ran_AreaCodeList_tags_3[0]), /* 2 */
+       { &asn_OER_type_ran_AreaCodeList_constr_3, &asn_PER_type_ran_AreaCodeList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_ran_AreaCodeList_3,
+       1,      /* Single element */
+       &asn_SPC_ran_AreaCodeList_specs_3       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RAN_AreaConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RAN_AreaConfig, trackingAreaCode),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TrackingAreaCode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "trackingAreaCode"
+               },
+       { ATF_POINTER, 1, offsetof(struct RAN_AreaConfig, ran_AreaCodeList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ran_AreaCodeList_3,
+               0,
+               { &asn_OER_memb_ran_AreaCodeList_constr_3, &asn_PER_memb_ran_AreaCodeList_constr_3,  memb_ran_AreaCodeList_constraint_1 },
+               0, 0, /* No default value */
+               "ran-AreaCodeList"
+               },
+};
+static const int asn_MAP_RAN_AreaConfig_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RAN_AreaConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RAN_AreaConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trackingAreaCode */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-AreaCodeList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RAN_AreaConfig_specs_1 = {
+       sizeof(struct RAN_AreaConfig),
+       offsetof(struct RAN_AreaConfig, _asn_ctx),
+       asn_MAP_RAN_AreaConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RAN_AreaConfig_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RAN_AreaConfig = {
+       "RAN-AreaConfig",
+       "RAN-AreaConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RAN_AreaConfig_tags_1,
+       sizeof(asn_DEF_RAN_AreaConfig_tags_1)
+               /sizeof(asn_DEF_RAN_AreaConfig_tags_1[0]), /* 1 */
+       asn_DEF_RAN_AreaConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RAN_AreaConfig_tags_1)
+               /sizeof(asn_DEF_RAN_AreaConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RAN_AreaConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_RAN_AreaConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RAN-AreaConfig.h b/src/codec_utils/RRC/RAN-AreaConfig.h
new file mode 100644 (file)
index 0000000..7ba551d
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RAN_AreaConfig_H_
+#define        _RAN_AreaConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TrackingAreaCode.h"
+#include "RAN-AreaCode.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RAN-AreaConfig */
+typedef struct RAN_AreaConfig {
+       TrackingAreaCode_t       trackingAreaCode;
+       struct RAN_AreaConfig__ran_AreaCodeList {
+               A_SEQUENCE_OF(RAN_AreaCode_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ran_AreaCodeList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RAN_AreaConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAN_AreaConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_RAN_AreaConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_RAN_AreaConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAN_AreaConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RAN-NotificationAreaInfo.c b/src/codec_utils/RRC/RAN-NotificationAreaInfo.c
new file mode 100644 (file)
index 0000000..217f6c3
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RAN-NotificationAreaInfo.h"
+
+#include "PLMN-RAN-AreaCellList.h"
+#include "PLMN-RAN-AreaConfigList.h"
+static asn_oer_constraints_t asn_OER_type_RAN_NotificationAreaInfo_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_RAN_NotificationAreaInfo_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_RAN_NotificationAreaInfo_1[] = {
+       { ATF_POINTER, 0, offsetof(struct RAN_NotificationAreaInfo, choice.cellList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_RAN_AreaCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellList"
+               },
+       { ATF_POINTER, 0, offsetof(struct RAN_NotificationAreaInfo, choice.ran_AreaConfigList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_RAN_AreaConfigList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-AreaConfigList"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RAN_NotificationAreaInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ran-AreaConfigList */
+};
+asn_CHOICE_specifics_t asn_SPC_RAN_NotificationAreaInfo_specs_1 = {
+       sizeof(struct RAN_NotificationAreaInfo),
+       offsetof(struct RAN_NotificationAreaInfo, _asn_ctx),
+       offsetof(struct RAN_NotificationAreaInfo, present),
+       sizeof(((struct RAN_NotificationAreaInfo *)0)->present),
+       asn_MAP_RAN_NotificationAreaInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RAN_NotificationAreaInfo = {
+       "RAN-NotificationAreaInfo",
+       "RAN-NotificationAreaInfo",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_RAN_NotificationAreaInfo_constr_1, &asn_PER_type_RAN_NotificationAreaInfo_constr_1, CHOICE_constraint },
+       asn_MBR_RAN_NotificationAreaInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_RAN_NotificationAreaInfo_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RAN-NotificationAreaInfo.h b/src/codec_utils/RRC/RAN-NotificationAreaInfo.h
new file mode 100644 (file)
index 0000000..f709d7a
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RAN_NotificationAreaInfo_H_
+#define        _RAN_NotificationAreaInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RAN_NotificationAreaInfo_PR {
+       RAN_NotificationAreaInfo_PR_NOTHING,    /* No components present */
+       RAN_NotificationAreaInfo_PR_cellList,
+       RAN_NotificationAreaInfo_PR_ran_AreaConfigList
+       /* Extensions may appear below */
+       
+} RAN_NotificationAreaInfo_PR;
+
+/* Forward declarations */
+struct PLMN_RAN_AreaCellList;
+struct PLMN_RAN_AreaConfigList;
+
+/* RAN-NotificationAreaInfo */
+typedef struct RAN_NotificationAreaInfo {
+       RAN_NotificationAreaInfo_PR present;
+       union RAN_NotificationAreaInfo_u {
+               struct PLMN_RAN_AreaCellList    *cellList;
+               struct PLMN_RAN_AreaConfigList  *ran_AreaConfigList;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RAN_NotificationAreaInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RAN_NotificationAreaInfo;
+extern asn_CHOICE_specifics_t asn_SPC_RAN_NotificationAreaInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_RAN_NotificationAreaInfo_1[2];
+extern asn_per_constraints_t asn_PER_type_RAN_NotificationAreaInfo_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAN_NotificationAreaInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RAT-Type.c b/src/codec_utils/RRC/RAT-Type.c
new file mode 100644 (file)
index 0000000..30123ea
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RAT-Type.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RAT_Type_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_RAT_Type_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }    /* (0..3,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_RAT_Type_value2enum_1[] = {
+       { 0,    2,      "nr" },
+       { 1,    8,      "eutra-nr" },
+       { 2,    5,      "eutra" },
+       { 3,    6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_RAT_Type_enum2value_1[] = {
+       2,      /* eutra(2) */
+       1,      /* eutra-nr(1) */
+       0,      /* nr(0) */
+       3       /* spare1(3) */
+       /* This list is extensible */
+};
+const asn_INTEGER_specifics_t asn_SPC_RAT_Type_specs_1 = {
+       asn_MAP_RAT_Type_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_RAT_Type_enum2value_1,  /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       5,      /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_RAT_Type_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RAT_Type = {
+       "RAT-Type",
+       "RAT-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_RAT_Type_tags_1,
+       sizeof(asn_DEF_RAT_Type_tags_1)
+               /sizeof(asn_DEF_RAT_Type_tags_1[0]), /* 1 */
+       asn_DEF_RAT_Type_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RAT_Type_tags_1)
+               /sizeof(asn_DEF_RAT_Type_tags_1[0]), /* 1 */
+       { &asn_OER_type_RAT_Type_constr_1, &asn_PER_type_RAT_Type_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_RAT_Type_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RAT-Type.h b/src/codec_utils/RRC/RAT-Type.h
new file mode 100644 (file)
index 0000000..40e344e
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RAT_Type_H_
+#define        _RAT_Type_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RAT_Type {
+       RAT_Type_nr     = 0,
+       RAT_Type_eutra_nr       = 1,
+       RAT_Type_eutra  = 2,
+       RAT_Type_spare1 = 3
+       /*
+        * Enumeration is extensible
+        */
+} e_RAT_Type;
+
+/* RAT-Type */
+typedef long    RAT_Type_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RAT_Type_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RAT_Type;
+extern const asn_INTEGER_specifics_t asn_SPC_RAT_Type_specs_1;
+asn_struct_free_f RAT_Type_free;
+asn_struct_print_f RAT_Type_print;
+asn_constr_check_f RAT_Type_constraint;
+ber_type_decoder_f RAT_Type_decode_ber;
+der_type_encoder_f RAT_Type_encode_der;
+xer_type_decoder_f RAT_Type_decode_xer;
+xer_type_encoder_f RAT_Type_encode_xer;
+oer_type_decoder_f RAT_Type_decode_oer;
+oer_type_encoder_f RAT_Type_encode_oer;
+per_type_decoder_f RAT_Type_decode_uper;
+per_type_encoder_f RAT_Type_encode_uper;
+per_type_decoder_f RAT_Type_decode_aper;
+per_type_encoder_f RAT_Type_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RAT_Type_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RF-Parameters.c b/src/codec_utils/RRC/RF-Parameters.c
new file mode 100644 (file)
index 0000000..c77d8d3
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RF-Parameters.h"
+
+#include "BandCombinationList.h"
+#include "FreqBandList.h"
+#include "BandNR.h"
+static int
+memb_supportedBandListNR_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 <= 1024)) {
+               /* 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_supportedBandListNR_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_supportedBandListNR_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_supportedBandListNR_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_supportedBandListNR_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_supportedBandListNR_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BandNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_supportedBandListNR_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_supportedBandListNR_specs_2 = {
+       sizeof(struct RF_Parameters__supportedBandListNR),
+       offsetof(struct RF_Parameters__supportedBandListNR, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_supportedBandListNR_2 = {
+       "supportedBandListNR",
+       "supportedBandListNR",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_supportedBandListNR_tags_2,
+       sizeof(asn_DEF_supportedBandListNR_tags_2)
+               /sizeof(asn_DEF_supportedBandListNR_tags_2[0]) - 1, /* 1 */
+       asn_DEF_supportedBandListNR_tags_2,     /* Same as above */
+       sizeof(asn_DEF_supportedBandListNR_tags_2)
+               /sizeof(asn_DEF_supportedBandListNR_tags_2[0]), /* 2 */
+       { &asn_OER_type_supportedBandListNR_constr_2, &asn_PER_type_supportedBandListNR_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_supportedBandListNR_2,
+       1,      /* Single element */
+       &asn_SPC_supportedBandListNR_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RF_Parameters_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RF_Parameters, supportedBandListNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_supportedBandListNR_2,
+               0,
+               { &asn_OER_memb_supportedBandListNR_constr_2, &asn_PER_memb_supportedBandListNR_constr_2,  memb_supportedBandListNR_constraint_1 },
+               0, 0, /* No default value */
+               "supportedBandListNR"
+               },
+       { ATF_POINTER, 2, offsetof(struct RF_Parameters, supportedBandCombinationList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedBandCombinationList"
+               },
+       { ATF_POINTER, 1, offsetof(struct RF_Parameters, appliedFreqBandListFilter),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "appliedFreqBandListFilter"
+               },
+};
+static const int asn_MAP_RF_Parameters_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RF_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RF_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedBandListNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* supportedBandCombinationList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* appliedFreqBandListFilter */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RF_Parameters_specs_1 = {
+       sizeof(struct RF_Parameters),
+       offsetof(struct RF_Parameters, _asn_ctx),
+       asn_MAP_RF_Parameters_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_RF_Parameters_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RF_Parameters = {
+       "RF-Parameters",
+       "RF-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RF_Parameters_tags_1,
+       sizeof(asn_DEF_RF_Parameters_tags_1)
+               /sizeof(asn_DEF_RF_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_RF_Parameters_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RF_Parameters_tags_1)
+               /sizeof(asn_DEF_RF_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RF_Parameters_1,
+       3,      /* Elements count */
+       &asn_SPC_RF_Parameters_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RF-Parameters.h b/src/codec_utils/RRC/RF-Parameters.h
new file mode 100644 (file)
index 0000000..e68398c
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RF_Parameters_H_
+#define        _RF_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BandCombinationList;
+struct FreqBandList;
+struct BandNR;
+
+/* RF-Parameters */
+typedef struct RF_Parameters {
+       struct RF_Parameters__supportedBandListNR {
+               A_SEQUENCE_OF(struct BandNR) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } supportedBandListNR;
+       struct BandCombinationList      *supportedBandCombinationList;  /* OPTIONAL */
+       struct FreqBandList     *appliedFreqBandListFilter;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RF_Parameters_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RF_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_RF_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_RF_Parameters_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RF_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RF-ParametersMRDC.c b/src/codec_utils/RRC/RF-ParametersMRDC.c
new file mode 100644 (file)
index 0000000..49bd681
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RF-ParametersMRDC.h"
+
+#include "BandCombinationList.h"
+#include "FreqBandList.h"
+asn_TYPE_member_t asn_MBR_RF_ParametersMRDC_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RF_ParametersMRDC, supportedBandCombinationList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BandCombinationList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedBandCombinationList"
+               },
+       { ATF_POINTER, 1, offsetof(struct RF_ParametersMRDC, appliedFreqBandListFilter),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "appliedFreqBandListFilter"
+               },
+};
+static const int asn_MAP_RF_ParametersMRDC_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RF_ParametersMRDC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RF_ParametersMRDC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedBandCombinationList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* appliedFreqBandListFilter */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RF_ParametersMRDC_specs_1 = {
+       sizeof(struct RF_ParametersMRDC),
+       offsetof(struct RF_ParametersMRDC, _asn_ctx),
+       asn_MAP_RF_ParametersMRDC_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RF_ParametersMRDC_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RF_ParametersMRDC = {
+       "RF-ParametersMRDC",
+       "RF-ParametersMRDC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RF_ParametersMRDC_tags_1,
+       sizeof(asn_DEF_RF_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_RF_ParametersMRDC_tags_1[0]), /* 1 */
+       asn_DEF_RF_ParametersMRDC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RF_ParametersMRDC_tags_1)
+               /sizeof(asn_DEF_RF_ParametersMRDC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RF_ParametersMRDC_1,
+       2,      /* Elements count */
+       &asn_SPC_RF_ParametersMRDC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RF-ParametersMRDC.h b/src/codec_utils/RRC/RF-ParametersMRDC.h
new file mode 100644 (file)
index 0000000..15b57a3
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RF_ParametersMRDC_H_
+#define        _RF_ParametersMRDC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct BandCombinationList;
+struct FreqBandList;
+
+/* RF-ParametersMRDC */
+typedef struct RF_ParametersMRDC {
+       struct BandCombinationList      *supportedBandCombinationList;  /* OPTIONAL */
+       struct FreqBandList     *appliedFreqBandListFilter;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RF_ParametersMRDC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RF_ParametersMRDC;
+extern asn_SEQUENCE_specifics_t asn_SPC_RF_ParametersMRDC_specs_1;
+extern asn_TYPE_member_t asn_MBR_RF_ParametersMRDC_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RF_ParametersMRDC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RLC-BearerConfig.c b/src/codec_utils/RRC/RLC-BearerConfig.c
new file mode 100644 (file)
index 0000000..18c7fab
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RLC-BearerConfig.h"
+
+#include "RLC-Config.h"
+#include "LogicalChannelConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_servedRadioBearer_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_servedRadioBearer_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_reestablishRLC_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reestablishRLC_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_servedRadioBearer_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_BearerConfig__servedRadioBearer, choice.srb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srb-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_BearerConfig__servedRadioBearer, choice.drb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-Identity"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_servedRadioBearer_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srb-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* drb-Identity */
+};
+static asn_CHOICE_specifics_t asn_SPC_servedRadioBearer_specs_3 = {
+       sizeof(struct RLC_BearerConfig__servedRadioBearer),
+       offsetof(struct RLC_BearerConfig__servedRadioBearer, _asn_ctx),
+       offsetof(struct RLC_BearerConfig__servedRadioBearer, present),
+       sizeof(((struct RLC_BearerConfig__servedRadioBearer *)0)->present),
+       asn_MAP_servedRadioBearer_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_servedRadioBearer_3 = {
+       "servedRadioBearer",
+       "servedRadioBearer",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_servedRadioBearer_constr_3, &asn_PER_type_servedRadioBearer_constr_3, CHOICE_constraint },
+       asn_MBR_servedRadioBearer_3,
+       2,      /* Elements count */
+       &asn_SPC_servedRadioBearer_specs_3      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_reestablishRLC_value2enum_6[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_reestablishRLC_enum2value_6[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reestablishRLC_specs_6 = {
+       asn_MAP_reestablishRLC_value2enum_6,    /* "tag" => N; sorted by tag */
+       asn_MAP_reestablishRLC_enum2value_6,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reestablishRLC_tags_6[] = {
+       (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_reestablishRLC_6 = {
+       "reestablishRLC",
+       "reestablishRLC",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reestablishRLC_tags_6,
+       sizeof(asn_DEF_reestablishRLC_tags_6)
+               /sizeof(asn_DEF_reestablishRLC_tags_6[0]) - 1, /* 1 */
+       asn_DEF_reestablishRLC_tags_6,  /* Same as above */
+       sizeof(asn_DEF_reestablishRLC_tags_6)
+               /sizeof(asn_DEF_reestablishRLC_tags_6[0]), /* 2 */
+       { &asn_OER_type_reestablishRLC_constr_6, &asn_PER_type_reestablishRLC_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reestablishRLC_specs_6 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RLC_BearerConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_BearerConfig, logicalChannelIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalChannelIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "logicalChannelIdentity"
+               },
+       { ATF_POINTER, 4, offsetof(struct RLC_BearerConfig, servedRadioBearer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_servedRadioBearer_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servedRadioBearer"
+               },
+       { ATF_POINTER, 3, offsetof(struct RLC_BearerConfig, reestablishRLC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reestablishRLC_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reestablishRLC"
+               },
+       { ATF_POINTER, 2, offsetof(struct RLC_BearerConfig, rlc_Config),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_RLC_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rlc-Config"
+               },
+       { ATF_POINTER, 1, offsetof(struct RLC_BearerConfig, mac_LogicalChannelConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LogicalChannelConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-LogicalChannelConfig"
+               },
+};
+static const int asn_MAP_RLC_BearerConfig_oms_1[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RLC_BearerConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RLC_BearerConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* logicalChannelIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* servedRadioBearer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reestablishRLC */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlc-Config */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* mac-LogicalChannelConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RLC_BearerConfig_specs_1 = {
+       sizeof(struct RLC_BearerConfig),
+       offsetof(struct RLC_BearerConfig, _asn_ctx),
+       asn_MAP_RLC_BearerConfig_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_RLC_BearerConfig_oms_1, /* Optional members */
+       4, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RLC_BearerConfig = {
+       "RLC-BearerConfig",
+       "RLC-BearerConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RLC_BearerConfig_tags_1,
+       sizeof(asn_DEF_RLC_BearerConfig_tags_1)
+               /sizeof(asn_DEF_RLC_BearerConfig_tags_1[0]), /* 1 */
+       asn_DEF_RLC_BearerConfig_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RLC_BearerConfig_tags_1)
+               /sizeof(asn_DEF_RLC_BearerConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RLC_BearerConfig_1,
+       5,      /* Elements count */
+       &asn_SPC_RLC_BearerConfig_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RLC-BearerConfig.h b/src/codec_utils/RRC/RLC-BearerConfig.h
new file mode 100644 (file)
index 0000000..3a86e75
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RLC_BearerConfig_H_
+#define        _RLC_BearerConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "LogicalChannelIdentity.h"
+#include <NativeEnumerated.h>
+#include "SRB-Identity.h"
+#include "DRB-Identity.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RLC_BearerConfig__servedRadioBearer_PR {
+       RLC_BearerConfig__servedRadioBearer_PR_NOTHING, /* No components present */
+       RLC_BearerConfig__servedRadioBearer_PR_srb_Identity,
+       RLC_BearerConfig__servedRadioBearer_PR_drb_Identity
+} RLC_BearerConfig__servedRadioBearer_PR;
+typedef enum RLC_BearerConfig__reestablishRLC {
+       RLC_BearerConfig__reestablishRLC_true   = 0
+} e_RLC_BearerConfig__reestablishRLC;
+
+/* Forward declarations */
+struct RLC_Config;
+struct LogicalChannelConfig;
+
+/* RLC-BearerConfig */
+typedef struct RLC_BearerConfig {
+       LogicalChannelIdentity_t         logicalChannelIdentity;
+       struct RLC_BearerConfig__servedRadioBearer {
+               RLC_BearerConfig__servedRadioBearer_PR present;
+               union RLC_BearerConfig__servedRadioBearer_u {
+                       SRB_Identity_t   srb_Identity;
+                       DRB_Identity_t   drb_Identity;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *servedRadioBearer;
+       long    *reestablishRLC;        /* OPTIONAL */
+       struct RLC_Config       *rlc_Config;    /* OPTIONAL */
+       struct LogicalChannelConfig     *mac_LogicalChannelConfig;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RLC_BearerConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reestablishRLC_6;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RLC_BearerConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_RLC_BearerConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_RLC_BearerConfig_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RLC_BearerConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RLC-Config.c b/src/codec_utils/RRC/RLC-Config.c
new file mode 100644 (file)
index 0000000..8f2271b
--- /dev/null
@@ -0,0 +1,277 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RLC-Config.h"
+
+static asn_oer_constraints_t asn_OER_type_RLC_Config_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_RLC_Config_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  2,  2,  0,  3 }    /* (0..3,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_am_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__am, ul_AM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UL_AM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-AM-RLC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__am, dl_AM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DL_AM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-AM-RLC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_am_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_am_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-AM-RLC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dl-AM-RLC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_am_specs_2 = {
+       sizeof(struct RLC_Config__am),
+       offsetof(struct RLC_Config__am, _asn_ctx),
+       asn_MAP_am_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_am_2 = {
+       "am",
+       "am",
+       &asn_OP_SEQUENCE,
+       asn_DEF_am_tags_2,
+       sizeof(asn_DEF_am_tags_2)
+               /sizeof(asn_DEF_am_tags_2[0]) - 1, /* 1 */
+       asn_DEF_am_tags_2,      /* Same as above */
+       sizeof(asn_DEF_am_tags_2)
+               /sizeof(asn_DEF_am_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_am_2,
+       2,      /* Elements count */
+       &asn_SPC_am_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_um_Bi_Directional_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__um_Bi_Directional, ul_UM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UL_UM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-UM-RLC"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__um_Bi_Directional, dl_UM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DL_UM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-UM-RLC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_um_Bi_Directional_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_um_Bi_Directional_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ul-UM-RLC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dl-UM-RLC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_um_Bi_Directional_specs_5 = {
+       sizeof(struct RLC_Config__um_Bi_Directional),
+       offsetof(struct RLC_Config__um_Bi_Directional, _asn_ctx),
+       asn_MAP_um_Bi_Directional_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_um_Bi_Directional_5 = {
+       "um-Bi-Directional",
+       "um-Bi-Directional",
+       &asn_OP_SEQUENCE,
+       asn_DEF_um_Bi_Directional_tags_5,
+       sizeof(asn_DEF_um_Bi_Directional_tags_5)
+               /sizeof(asn_DEF_um_Bi_Directional_tags_5[0]) - 1, /* 1 */
+       asn_DEF_um_Bi_Directional_tags_5,       /* Same as above */
+       sizeof(asn_DEF_um_Bi_Directional_tags_5)
+               /sizeof(asn_DEF_um_Bi_Directional_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_um_Bi_Directional_5,
+       2,      /* Elements count */
+       &asn_SPC_um_Bi_Directional_specs_5      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_um_Uni_Directional_UL_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__um_Uni_Directional_UL, ul_UM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UL_UM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ul-UM-RLC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_um_Uni_Directional_UL_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_um_Uni_Directional_UL_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* ul-UM-RLC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_um_Uni_Directional_UL_specs_8 = {
+       sizeof(struct RLC_Config__um_Uni_Directional_UL),
+       offsetof(struct RLC_Config__um_Uni_Directional_UL, _asn_ctx),
+       asn_MAP_um_Uni_Directional_UL_tag2el_8,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_um_Uni_Directional_UL_8 = {
+       "um-Uni-Directional-UL",
+       "um-Uni-Directional-UL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_um_Uni_Directional_UL_tags_8,
+       sizeof(asn_DEF_um_Uni_Directional_UL_tags_8)
+               /sizeof(asn_DEF_um_Uni_Directional_UL_tags_8[0]) - 1, /* 1 */
+       asn_DEF_um_Uni_Directional_UL_tags_8,   /* Same as above */
+       sizeof(asn_DEF_um_Uni_Directional_UL_tags_8)
+               /sizeof(asn_DEF_um_Uni_Directional_UL_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_um_Uni_Directional_UL_8,
+       1,      /* Elements count */
+       &asn_SPC_um_Uni_Directional_UL_specs_8  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_um_Uni_Directional_DL_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLC_Config__um_Uni_Directional_DL, dl_UM_RLC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DL_UM_RLC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-UM-RLC"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_um_Uni_Directional_DL_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_um_Uni_Directional_DL_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dl-UM-RLC */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_um_Uni_Directional_DL_specs_10 = {
+       sizeof(struct RLC_Config__um_Uni_Directional_DL),
+       offsetof(struct RLC_Config__um_Uni_Directional_DL, _asn_ctx),
+       asn_MAP_um_Uni_Directional_DL_tag2el_10,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_um_Uni_Directional_DL_10 = {
+       "um-Uni-Directional-DL",
+       "um-Uni-Directional-DL",
+       &asn_OP_SEQUENCE,
+       asn_DEF_um_Uni_Directional_DL_tags_10,
+       sizeof(asn_DEF_um_Uni_Directional_DL_tags_10)
+               /sizeof(asn_DEF_um_Uni_Directional_DL_tags_10[0]) - 1, /* 1 */
+       asn_DEF_um_Uni_Directional_DL_tags_10,  /* Same as above */
+       sizeof(asn_DEF_um_Uni_Directional_DL_tags_10)
+               /sizeof(asn_DEF_um_Uni_Directional_DL_tags_10[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_um_Uni_Directional_DL_10,
+       1,      /* Elements count */
+       &asn_SPC_um_Uni_Directional_DL_specs_10 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RLC_Config_1[] = {
+       { ATF_POINTER, 0, offsetof(struct RLC_Config, choice.am),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_am_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "am"
+               },
+       { ATF_POINTER, 0, offsetof(struct RLC_Config, choice.um_Bi_Directional),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_um_Bi_Directional_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "um-Bi-Directional"
+               },
+       { ATF_POINTER, 0, offsetof(struct RLC_Config, choice.um_Uni_Directional_UL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_um_Uni_Directional_UL_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "um-Uni-Directional-UL"
+               },
+       { ATF_POINTER, 0, offsetof(struct RLC_Config, choice.um_Uni_Directional_DL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_um_Uni_Directional_DL_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "um-Uni-Directional-DL"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RLC_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* am */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* um-Bi-Directional */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* um-Uni-Directional-UL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* um-Uni-Directional-DL */
+};
+asn_CHOICE_specifics_t asn_SPC_RLC_Config_specs_1 = {
+       sizeof(struct RLC_Config),
+       offsetof(struct RLC_Config, _asn_ctx),
+       offsetof(struct RLC_Config, present),
+       sizeof(((struct RLC_Config *)0)->present),
+       asn_MAP_RLC_Config_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0,
+       4       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RLC_Config = {
+       "RLC-Config",
+       "RLC-Config",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_RLC_Config_constr_1, &asn_PER_type_RLC_Config_constr_1, CHOICE_constraint },
+       asn_MBR_RLC_Config_1,
+       4,      /* Elements count */
+       &asn_SPC_RLC_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RLC-Config.h b/src/codec_utils/RRC/RLC-Config.h
new file mode 100644 (file)
index 0000000..a752f87
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RLC_Config_H_
+#define        _RLC_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UL-AM-RLC.h"
+#include "DL-AM-RLC.h"
+#include <constr_SEQUENCE.h>
+#include "UL-UM-RLC.h"
+#include "DL-UM-RLC.h"
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RLC_Config_PR {
+       RLC_Config_PR_NOTHING,  /* No components present */
+       RLC_Config_PR_am,
+       RLC_Config_PR_um_Bi_Directional,
+       RLC_Config_PR_um_Uni_Directional_UL,
+       RLC_Config_PR_um_Uni_Directional_DL
+       /* Extensions may appear below */
+       
+} RLC_Config_PR;
+
+/* RLC-Config */
+typedef struct RLC_Config {
+       RLC_Config_PR present;
+       union RLC_Config_u {
+               struct RLC_Config__am {
+                       UL_AM_RLC_t      ul_AM_RLC;
+                       DL_AM_RLC_t      dl_AM_RLC;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *am;
+               struct RLC_Config__um_Bi_Directional {
+                       UL_UM_RLC_t      ul_UM_RLC;
+                       DL_UM_RLC_t      dl_UM_RLC;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *um_Bi_Directional;
+               struct RLC_Config__um_Uni_Directional_UL {
+                       UL_UM_RLC_t      ul_UM_RLC;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *um_Uni_Directional_UL;
+               struct RLC_Config__um_Uni_Directional_DL {
+                       DL_UM_RLC_t      dl_UM_RLC;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *um_Uni_Directional_DL;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RLC_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RLC_Config;
+extern asn_CHOICE_specifics_t asn_SPC_RLC_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_RLC_Config_1[4];
+extern asn_per_constraints_t asn_PER_type_RLC_Config_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RLC_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RLC-Parameters.c b/src/codec_utils/RRC/RLC-Parameters.c
new file mode 100644 (file)
index 0000000..9650124
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RLC-Parameters.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.
+ */
+static asn_oer_constraints_t asn_OER_type_am_WithShortSN_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_am_WithShortSN_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_um_WithShortSN_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_um_WithShortSN_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_um_WithLongSN_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_um_WithLongSN_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_am_WithShortSN_value2enum_2[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_am_WithShortSN_enum2value_2[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_am_WithShortSN_specs_2 = {
+       asn_MAP_am_WithShortSN_value2enum_2,    /* "tag" => N; sorted by tag */
+       asn_MAP_am_WithShortSN_enum2value_2,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_am_WithShortSN_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_am_WithShortSN_2 = {
+       "am-WithShortSN",
+       "am-WithShortSN",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_am_WithShortSN_tags_2,
+       sizeof(asn_DEF_am_WithShortSN_tags_2)
+               /sizeof(asn_DEF_am_WithShortSN_tags_2[0]) - 1, /* 1 */
+       asn_DEF_am_WithShortSN_tags_2,  /* Same as above */
+       sizeof(asn_DEF_am_WithShortSN_tags_2)
+               /sizeof(asn_DEF_am_WithShortSN_tags_2[0]), /* 2 */
+       { &asn_OER_type_am_WithShortSN_constr_2, &asn_PER_type_am_WithShortSN_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_am_WithShortSN_specs_2 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_um_WithShortSN_value2enum_4[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_um_WithShortSN_enum2value_4[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_um_WithShortSN_specs_4 = {
+       asn_MAP_um_WithShortSN_value2enum_4,    /* "tag" => N; sorted by tag */
+       asn_MAP_um_WithShortSN_enum2value_4,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_um_WithShortSN_tags_4[] = {
+       (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_um_WithShortSN_4 = {
+       "um-WithShortSN",
+       "um-WithShortSN",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_um_WithShortSN_tags_4,
+       sizeof(asn_DEF_um_WithShortSN_tags_4)
+               /sizeof(asn_DEF_um_WithShortSN_tags_4[0]) - 1, /* 1 */
+       asn_DEF_um_WithShortSN_tags_4,  /* Same as above */
+       sizeof(asn_DEF_um_WithShortSN_tags_4)
+               /sizeof(asn_DEF_um_WithShortSN_tags_4[0]), /* 2 */
+       { &asn_OER_type_um_WithShortSN_constr_4, &asn_PER_type_um_WithShortSN_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_um_WithShortSN_specs_4 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_um_WithLongSN_value2enum_6[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_um_WithLongSN_enum2value_6[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_um_WithLongSN_specs_6 = {
+       asn_MAP_um_WithLongSN_value2enum_6,     /* "tag" => N; sorted by tag */
+       asn_MAP_um_WithLongSN_enum2value_6,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_um_WithLongSN_tags_6[] = {
+       (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_um_WithLongSN_6 = {
+       "um-WithLongSN",
+       "um-WithLongSN",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_um_WithLongSN_tags_6,
+       sizeof(asn_DEF_um_WithLongSN_tags_6)
+               /sizeof(asn_DEF_um_WithLongSN_tags_6[0]) - 1, /* 1 */
+       asn_DEF_um_WithLongSN_tags_6,   /* Same as above */
+       sizeof(asn_DEF_um_WithLongSN_tags_6)
+               /sizeof(asn_DEF_um_WithLongSN_tags_6[0]), /* 2 */
+       { &asn_OER_type_um_WithLongSN_constr_6, &asn_PER_type_um_WithLongSN_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_um_WithLongSN_specs_6  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RLC_Parameters_1[] = {
+       { ATF_POINTER, 3, offsetof(struct RLC_Parameters, am_WithShortSN),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_am_WithShortSN_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "am-WithShortSN"
+               },
+       { ATF_POINTER, 2, offsetof(struct RLC_Parameters, um_WithShortSN),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_um_WithShortSN_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "um-WithShortSN"
+               },
+       { ATF_POINTER, 1, offsetof(struct RLC_Parameters, um_WithLongSN),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_um_WithLongSN_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "um-WithLongSN"
+               },
+};
+static const int asn_MAP_RLC_Parameters_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RLC_Parameters_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RLC_Parameters_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* am-WithShortSN */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* um-WithShortSN */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* um-WithLongSN */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RLC_Parameters_specs_1 = {
+       sizeof(struct RLC_Parameters),
+       offsetof(struct RLC_Parameters, _asn_ctx),
+       asn_MAP_RLC_Parameters_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_RLC_Parameters_oms_1,   /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RLC_Parameters = {
+       "RLC-Parameters",
+       "RLC-Parameters",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RLC_Parameters_tags_1,
+       sizeof(asn_DEF_RLC_Parameters_tags_1)
+               /sizeof(asn_DEF_RLC_Parameters_tags_1[0]), /* 1 */
+       asn_DEF_RLC_Parameters_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RLC_Parameters_tags_1)
+               /sizeof(asn_DEF_RLC_Parameters_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RLC_Parameters_1,
+       3,      /* Elements count */
+       &asn_SPC_RLC_Parameters_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RLC-Parameters.h b/src/codec_utils/RRC/RLC-Parameters.h
new file mode 100644 (file)
index 0000000..705b405
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RLC_Parameters_H_
+#define        _RLC_Parameters_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RLC_Parameters__am_WithShortSN {
+       RLC_Parameters__am_WithShortSN_supported        = 0
+} e_RLC_Parameters__am_WithShortSN;
+typedef enum RLC_Parameters__um_WithShortSN {
+       RLC_Parameters__um_WithShortSN_supported        = 0
+} e_RLC_Parameters__um_WithShortSN;
+typedef enum RLC_Parameters__um_WithLongSN {
+       RLC_Parameters__um_WithLongSN_supported = 0
+} e_RLC_Parameters__um_WithLongSN;
+
+/* RLC-Parameters */
+typedef struct RLC_Parameters {
+       long    *am_WithShortSN;        /* OPTIONAL */
+       long    *um_WithShortSN;        /* OPTIONAL */
+       long    *um_WithLongSN; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RLC_Parameters_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_am_WithShortSN_2;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_um_WithShortSN_4;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_um_WithLongSN_6;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RLC_Parameters;
+extern asn_SEQUENCE_specifics_t asn_SPC_RLC_Parameters_specs_1;
+extern asn_TYPE_member_t asn_MBR_RLC_Parameters_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RLC_Parameters_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RLF-TimersAndConstants.c b/src/codec_utils/RRC/RLF-TimersAndConstants.c
new file mode 100644 (file)
index 0000000..a9e7981
--- /dev/null
@@ -0,0 +1,369 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RLF-TimersAndConstants.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.
+ */
+static asn_oer_constraints_t asn_OER_type_t310_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t310_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  8 }        /* (0..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n310_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n310_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n311_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n311_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t311_v1530_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t311_v1530_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_t310_value2enum_2[] = {
+       { 0,    3,      "ms0" },
+       { 1,    4,      "ms50" },
+       { 2,    5,      "ms100" },
+       { 3,    5,      "ms200" },
+       { 4,    5,      "ms500" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms2000" },
+       { 7,    6,      "ms4000" },
+       { 8,    6,      "ms6000" }
+};
+static const unsigned int asn_MAP_t310_enum2value_2[] = {
+       0,      /* ms0(0) */
+       2,      /* ms100(2) */
+       5,      /* ms1000(5) */
+       3,      /* ms200(3) */
+       6,      /* ms2000(6) */
+       7,      /* ms4000(7) */
+       1,      /* ms50(1) */
+       4,      /* ms500(4) */
+       8       /* ms6000(8) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t310_specs_2 = {
+       asn_MAP_t310_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_t310_enum2value_2,      /* N => "tag"; sorted by N */
+       9,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t310_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_t310_2 = {
+       "t310",
+       "t310",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t310_tags_2,
+       sizeof(asn_DEF_t310_tags_2)
+               /sizeof(asn_DEF_t310_tags_2[0]) - 1, /* 1 */
+       asn_DEF_t310_tags_2,    /* Same as above */
+       sizeof(asn_DEF_t310_tags_2)
+               /sizeof(asn_DEF_t310_tags_2[0]), /* 2 */
+       { &asn_OER_type_t310_constr_2, &asn_PER_type_t310_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t310_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_n310_value2enum_12[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" },
+       { 4,    2,      "n6" },
+       { 5,    2,      "n8" },
+       { 6,    3,      "n10" },
+       { 7,    3,      "n20" }
+};
+static const unsigned int asn_MAP_n310_enum2value_12[] = {
+       0,      /* n1(0) */
+       6,      /* n10(6) */
+       1,      /* n2(1) */
+       7,      /* n20(7) */
+       2,      /* n3(2) */
+       3,      /* n4(3) */
+       4,      /* n6(4) */
+       5       /* n8(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n310_specs_12 = {
+       asn_MAP_n310_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_n310_enum2value_12,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n310_tags_12[] = {
+       (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_n310_12 = {
+       "n310",
+       "n310",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n310_tags_12,
+       sizeof(asn_DEF_n310_tags_12)
+               /sizeof(asn_DEF_n310_tags_12[0]) - 1, /* 1 */
+       asn_DEF_n310_tags_12,   /* Same as above */
+       sizeof(asn_DEF_n310_tags_12)
+               /sizeof(asn_DEF_n310_tags_12[0]), /* 2 */
+       { &asn_OER_type_n310_constr_12, &asn_PER_type_n310_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n310_specs_12  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_n311_value2enum_21[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" },
+       { 4,    2,      "n5" },
+       { 5,    2,      "n6" },
+       { 6,    2,      "n8" },
+       { 7,    3,      "n10" }
+};
+static const unsigned int asn_MAP_n311_enum2value_21[] = {
+       0,      /* n1(0) */
+       7,      /* n10(7) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3,      /* n4(3) */
+       4,      /* n5(4) */
+       5,      /* n6(5) */
+       6       /* n8(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n311_specs_21 = {
+       asn_MAP_n311_value2enum_21,     /* "tag" => N; sorted by tag */
+       asn_MAP_n311_enum2value_21,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n311_tags_21[] = {
+       (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_n311_21 = {
+       "n311",
+       "n311",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n311_tags_21,
+       sizeof(asn_DEF_n311_tags_21)
+               /sizeof(asn_DEF_n311_tags_21[0]) - 1, /* 1 */
+       asn_DEF_n311_tags_21,   /* Same as above */
+       sizeof(asn_DEF_n311_tags_21)
+               /sizeof(asn_DEF_n311_tags_21[0]), /* 2 */
+       { &asn_OER_type_n311_constr_21, &asn_PER_type_n311_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n311_specs_21  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t311_v1530_value2enum_32[] = {
+       { 0,    6,      "ms1000" },
+       { 1,    6,      "ms3000" },
+       { 2,    6,      "ms5000" },
+       { 3,    7,      "ms10000" },
+       { 4,    7,      "ms15000" },
+       { 5,    7,      "ms20000" },
+       { 6,    7,      "ms30000" }
+};
+static const unsigned int asn_MAP_t311_v1530_enum2value_32[] = {
+       0,      /* ms1000(0) */
+       3,      /* ms10000(3) */
+       4,      /* ms15000(4) */
+       5,      /* ms20000(5) */
+       1,      /* ms3000(1) */
+       6,      /* ms30000(6) */
+       2       /* ms5000(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t311_v1530_specs_32 = {
+       asn_MAP_t311_v1530_value2enum_32,       /* "tag" => N; sorted by tag */
+       asn_MAP_t311_v1530_enum2value_32,       /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t311_v1530_tags_32[] = {
+       (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_t311_v1530_32 = {
+       "t311-v1530",
+       "t311-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t311_v1530_tags_32,
+       sizeof(asn_DEF_t311_v1530_tags_32)
+               /sizeof(asn_DEF_t311_v1530_tags_32[0]) - 1, /* 1 */
+       asn_DEF_t311_v1530_tags_32,     /* Same as above */
+       sizeof(asn_DEF_t311_v1530_tags_32)
+               /sizeof(asn_DEF_t311_v1530_tags_32[0]), /* 2 */
+       { &asn_OER_type_t311_v1530_constr_32, &asn_PER_type_t311_v1530_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t311_v1530_specs_32    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_31[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLF_TimersAndConstants__ext1, t311_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t311_v1530_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t311-v1530"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ext1_tags_31[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_31[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* t311-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_31 = {
+       sizeof(struct RLF_TimersAndConstants__ext1),
+       offsetof(struct RLF_TimersAndConstants__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_31,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_31 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_31,
+       sizeof(asn_DEF_ext1_tags_31)
+               /sizeof(asn_DEF_ext1_tags_31[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_31,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_31)
+               /sizeof(asn_DEF_ext1_tags_31[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_31,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_31  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RLF_TimersAndConstants_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RLF_TimersAndConstants, t310),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t310_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t310"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RLF_TimersAndConstants, n310),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n310_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n310"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RLF_TimersAndConstants, n311),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n311_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n311"
+               },
+       { ATF_POINTER, 1, offsetof(struct RLF_TimersAndConstants, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_31,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_RLF_TimersAndConstants_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_RLF_TimersAndConstants_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RLF_TimersAndConstants_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* t310 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* n310 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* n311 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RLF_TimersAndConstants_specs_1 = {
+       sizeof(struct RLF_TimersAndConstants),
+       offsetof(struct RLF_TimersAndConstants, _asn_ctx),
+       asn_MAP_RLF_TimersAndConstants_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_RLF_TimersAndConstants_oms_1,   /* Optional members */
+       0, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RLF_TimersAndConstants = {
+       "RLF-TimersAndConstants",
+       "RLF-TimersAndConstants",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RLF_TimersAndConstants_tags_1,
+       sizeof(asn_DEF_RLF_TimersAndConstants_tags_1)
+               /sizeof(asn_DEF_RLF_TimersAndConstants_tags_1[0]), /* 1 */
+       asn_DEF_RLF_TimersAndConstants_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RLF_TimersAndConstants_tags_1)
+               /sizeof(asn_DEF_RLF_TimersAndConstants_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RLF_TimersAndConstants_1,
+       4,      /* Elements count */
+       &asn_SPC_RLF_TimersAndConstants_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RLF-TimersAndConstants.h b/src/codec_utils/RRC/RLF-TimersAndConstants.h
new file mode 100644 (file)
index 0000000..7decc46
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RLF_TimersAndConstants_H_
+#define        _RLF_TimersAndConstants_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RLF_TimersAndConstants__t310 {
+       RLF_TimersAndConstants__t310_ms0        = 0,
+       RLF_TimersAndConstants__t310_ms50       = 1,
+       RLF_TimersAndConstants__t310_ms100      = 2,
+       RLF_TimersAndConstants__t310_ms200      = 3,
+       RLF_TimersAndConstants__t310_ms500      = 4,
+       RLF_TimersAndConstants__t310_ms1000     = 5,
+       RLF_TimersAndConstants__t310_ms2000     = 6,
+       RLF_TimersAndConstants__t310_ms4000     = 7,
+       RLF_TimersAndConstants__t310_ms6000     = 8
+} e_RLF_TimersAndConstants__t310;
+typedef enum RLF_TimersAndConstants__n310 {
+       RLF_TimersAndConstants__n310_n1 = 0,
+       RLF_TimersAndConstants__n310_n2 = 1,
+       RLF_TimersAndConstants__n310_n3 = 2,
+       RLF_TimersAndConstants__n310_n4 = 3,
+       RLF_TimersAndConstants__n310_n6 = 4,
+       RLF_TimersAndConstants__n310_n8 = 5,
+       RLF_TimersAndConstants__n310_n10        = 6,
+       RLF_TimersAndConstants__n310_n20        = 7
+} e_RLF_TimersAndConstants__n310;
+typedef enum RLF_TimersAndConstants__n311 {
+       RLF_TimersAndConstants__n311_n1 = 0,
+       RLF_TimersAndConstants__n311_n2 = 1,
+       RLF_TimersAndConstants__n311_n3 = 2,
+       RLF_TimersAndConstants__n311_n4 = 3,
+       RLF_TimersAndConstants__n311_n5 = 4,
+       RLF_TimersAndConstants__n311_n6 = 5,
+       RLF_TimersAndConstants__n311_n8 = 6,
+       RLF_TimersAndConstants__n311_n10        = 7
+} e_RLF_TimersAndConstants__n311;
+typedef enum RLF_TimersAndConstants__ext1__t311_v1530 {
+       RLF_TimersAndConstants__ext1__t311_v1530_ms1000 = 0,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms3000 = 1,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms5000 = 2,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms10000        = 3,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms15000        = 4,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms20000        = 5,
+       RLF_TimersAndConstants__ext1__t311_v1530_ms30000        = 6
+} e_RLF_TimersAndConstants__ext1__t311_v1530;
+
+/* RLF-TimersAndConstants */
+typedef struct RLF_TimersAndConstants {
+       long     t310;
+       long     n310;
+       long     n311;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct RLF_TimersAndConstants__ext1 {
+               long     t311_v1530;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RLF_TimersAndConstants_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_t310_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_n310_12;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_n311_21;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t311_v1530_32; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RLF_TimersAndConstants;
+extern asn_SEQUENCE_specifics_t asn_SPC_RLF_TimersAndConstants_specs_1;
+extern asn_TYPE_member_t asn_MBR_RLF_TimersAndConstants_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RLF_TimersAndConstants_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RNTI-Value.c b/src/codec_utils/RRC/RNTI-Value.c
new file mode 100644 (file)
index 0000000..0c8954f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RNTI-Value.h"
+
+int
+RNTI_Value_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 <= 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_RNTI_Value_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..65535) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RNTI_Value_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RNTI_Value_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RNTI_Value = {
+       "RNTI-Value",
+       "RNTI-Value",
+       &asn_OP_NativeInteger,
+       asn_DEF_RNTI_Value_tags_1,
+       sizeof(asn_DEF_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_RNTI_Value_tags_1[0]), /* 1 */
+       asn_DEF_RNTI_Value_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_RNTI_Value_tags_1[0]), /* 1 */
+       { &asn_OER_type_RNTI_Value_constr_1, &asn_PER_type_RNTI_Value_constr_1, RNTI_Value_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RNTI-Value.h b/src/codec_utils/RRC/RNTI-Value.h
new file mode 100644 (file)
index 0000000..c7767fd
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RNTI_Value_H_
+#define        _RNTI_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RNTI-Value */
+typedef long    RNTI_Value_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RNTI_Value_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RNTI_Value;
+asn_struct_free_f RNTI_Value_free;
+asn_struct_print_f RNTI_Value_print;
+asn_constr_check_f RNTI_Value_constraint;
+ber_type_decoder_f RNTI_Value_decode_ber;
+der_type_encoder_f RNTI_Value_encode_der;
+xer_type_decoder_f RNTI_Value_decode_xer;
+xer_type_encoder_f RNTI_Value_encode_xer;
+oer_type_decoder_f RNTI_Value_decode_oer;
+oer_type_encoder_f RNTI_Value_encode_oer;
+per_type_decoder_f RNTI_Value_decode_uper;
+per_type_encoder_f RNTI_Value_encode_uper;
+per_type_decoder_f RNTI_Value_decode_aper;
+per_type_encoder_f RNTI_Value_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RNTI_Value_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRC-TransactionIdentifier.c b/src/codec_utils/RRC/RRC-TransactionIdentifier.c
new file mode 100644 (file)
index 0000000..0496ed9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRC-TransactionIdentifier.h"
+
+int
+RRC_TransactionIdentifier_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RRC_TransactionIdentifier_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RRC_TransactionIdentifier_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RRC_TransactionIdentifier_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RRC_TransactionIdentifier = {
+       "RRC-TransactionIdentifier",
+       "RRC-TransactionIdentifier",
+       &asn_OP_NativeInteger,
+       asn_DEF_RRC_TransactionIdentifier_tags_1,
+       sizeof(asn_DEF_RRC_TransactionIdentifier_tags_1)
+               /sizeof(asn_DEF_RRC_TransactionIdentifier_tags_1[0]), /* 1 */
+       asn_DEF_RRC_TransactionIdentifier_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRC_TransactionIdentifier_tags_1)
+               /sizeof(asn_DEF_RRC_TransactionIdentifier_tags_1[0]), /* 1 */
+       { &asn_OER_type_RRC_TransactionIdentifier_constr_1, &asn_PER_type_RRC_TransactionIdentifier_constr_1, RRC_TransactionIdentifier_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RRC-TransactionIdentifier.h b/src/codec_utils/RRC/RRC-TransactionIdentifier.h
new file mode 100644 (file)
index 0000000..de4b508
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRC_TransactionIdentifier_H_
+#define        _RRC_TransactionIdentifier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRC-TransactionIdentifier */
+typedef long    RRC_TransactionIdentifier_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RRC_TransactionIdentifier_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RRC_TransactionIdentifier;
+asn_struct_free_f RRC_TransactionIdentifier_free;
+asn_struct_print_f RRC_TransactionIdentifier_print;
+asn_constr_check_f RRC_TransactionIdentifier_constraint;
+ber_type_decoder_f RRC_TransactionIdentifier_decode_ber;
+der_type_encoder_f RRC_TransactionIdentifier_encode_der;
+xer_type_decoder_f RRC_TransactionIdentifier_decode_xer;
+xer_type_encoder_f RRC_TransactionIdentifier_encode_xer;
+oer_type_decoder_f RRC_TransactionIdentifier_decode_oer;
+oer_type_encoder_f RRC_TransactionIdentifier_encode_oer;
+per_type_decoder_f RRC_TransactionIdentifier_decode_uper;
+per_type_encoder_f RRC_TransactionIdentifier_encode_uper;
+per_type_decoder_f RRC_TransactionIdentifier_decode_aper;
+per_type_encoder_f RRC_TransactionIdentifier_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRC_TransactionIdentifier_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfiguration-IEs.c b/src/codec_utils/RRC/RRCReconfiguration-IEs.c
new file mode 100644 (file)
index 0000000..96d5ddb
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfiguration-IEs.h"
+
+#include "RadioBearerConfig.h"
+#include "MeasConfig.h"
+#include "RRCReconfiguration-v1530-IEs.h"
+static int
+memb_secondaryCellGroup_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_secondaryCellGroup_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_secondaryCellGroup_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCReconfiguration_IEs_1[] = {
+       { ATF_POINTER, 5, offsetof(struct RRCReconfiguration_IEs, radioBearerConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RadioBearerConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioBearerConfig"
+               },
+       { ATF_POINTER, 4, offsetof(struct RRCReconfiguration_IEs, secondaryCellGroup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_secondaryCellGroup_constr_3, &asn_PER_memb_secondaryCellGroup_constr_3,  memb_secondaryCellGroup_constraint_1 },
+               0, 0, /* No default value */
+               "secondaryCellGroup"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCReconfiguration_IEs, measConfig),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCReconfiguration_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReconfiguration_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfiguration_v1530_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReconfiguration_IEs_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RRCReconfiguration_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfiguration_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioBearerConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* secondaryCellGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_IEs_specs_1 = {
+       sizeof(struct RRCReconfiguration_IEs),
+       offsetof(struct RRCReconfiguration_IEs, _asn_ctx),
+       asn_MAP_RRCReconfiguration_IEs_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_RRCReconfiguration_IEs_oms_1,   /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration_IEs = {
+       "RRCReconfiguration-IEs",
+       "RRCReconfiguration-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfiguration_IEs_tags_1,
+       sizeof(asn_DEF_RRCReconfiguration_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfiguration_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RRCReconfiguration_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfiguration_IEs_1,
+       5,      /* Elements count */
+       &asn_SPC_RRCReconfiguration_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfiguration-IEs.h b/src/codec_utils/RRC/RRCReconfiguration-IEs.h
new file mode 100644 (file)
index 0000000..d98acc8
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfiguration_IEs_H_
+#define        _RRCReconfiguration_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RadioBearerConfig;
+struct MeasConfig;
+struct RRCReconfiguration_v1530_IEs;
+
+/* RRCReconfiguration-IEs */
+typedef struct RRCReconfiguration_IEs {
+       struct RadioBearerConfig        *radioBearerConfig;     /* OPTIONAL */
+       OCTET_STRING_t  *secondaryCellGroup;    /* OPTIONAL */
+       struct MeasConfig       *measConfig;    /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCReconfiguration_v1530_IEs     *nonCriticalExtension;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfiguration_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfiguration_IEs_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfiguration_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.c b/src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.c
new file mode 100644 (file)
index 0000000..554c4c0
--- /dev/null
@@ -0,0 +1,365 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfiguration-v1530-IEs.h"
+
+#include "MasterKeyUpdate.h"
+#include "OtherConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_masterCellGroup_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_dedicatedNAS_MessageList_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 <= 29)) {
+               /* 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_dedicatedSIB1_Delivery_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static int
+memb_dedicatedSystemInformationDelivery_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_type_fullConfig_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fullConfig_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dedicatedNAS_MessageList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..29)) */};
+static asn_per_constraints_t asn_PER_type_dedicatedNAS_MessageList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  29 }       /* (SIZE(1..29)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_masterCellGroup_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_masterCellGroup_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dedicatedNAS_MessageList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..29)) */};
+static asn_per_constraints_t asn_PER_memb_dedicatedNAS_MessageList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  29 }       /* (SIZE(1..29)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dedicatedSIB1_Delivery_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_dedicatedSIB1_Delivery_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dedicatedSystemInformationDelivery_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_dedicatedSystemInformationDelivery_constr_9 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_fullConfig_value2enum_3[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_fullConfig_enum2value_3[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fullConfig_specs_3 = {
+       asn_MAP_fullConfig_value2enum_3,        /* "tag" => N; sorted by tag */
+       asn_MAP_fullConfig_enum2value_3,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fullConfig_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_fullConfig_3 = {
+       "fullConfig",
+       "fullConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fullConfig_tags_3,
+       sizeof(asn_DEF_fullConfig_tags_3)
+               /sizeof(asn_DEF_fullConfig_tags_3[0]) - 1, /* 1 */
+       asn_DEF_fullConfig_tags_3,      /* Same as above */
+       sizeof(asn_DEF_fullConfig_tags_3)
+               /sizeof(asn_DEF_fullConfig_tags_3[0]), /* 2 */
+       { &asn_OER_type_fullConfig_constr_3, &asn_PER_type_fullConfig_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fullConfig_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dedicatedNAS_MessageList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)),
+               0,
+               &asn_DEF_DedicatedNAS_Message,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_dedicatedNAS_MessageList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dedicatedNAS_MessageList_specs_5 = {
+       sizeof(struct RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList),
+       offsetof(struct RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dedicatedNAS_MessageList_5 = {
+       "dedicatedNAS-MessageList",
+       "dedicatedNAS-MessageList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_dedicatedNAS_MessageList_tags_5,
+       sizeof(asn_DEF_dedicatedNAS_MessageList_tags_5)
+               /sizeof(asn_DEF_dedicatedNAS_MessageList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_dedicatedNAS_MessageList_tags_5,        /* Same as above */
+       sizeof(asn_DEF_dedicatedNAS_MessageList_tags_5)
+               /sizeof(asn_DEF_dedicatedNAS_MessageList_tags_5[0]), /* 2 */
+       { &asn_OER_type_dedicatedNAS_MessageList_constr_5, &asn_PER_type_dedicatedNAS_MessageList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_dedicatedNAS_MessageList_5,
+       1,      /* Single element */
+       &asn_SPC_dedicatedNAS_MessageList_specs_5       /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_11 = {
+       sizeof(struct RRCReconfiguration_v1530_IEs__nonCriticalExtension),
+       offsetof(struct RRCReconfiguration_v1530_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_11 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_11,
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_11,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_11)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_11  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReconfiguration_v1530_IEs_1[] = {
+       { ATF_POINTER, 8, offsetof(struct RRCReconfiguration_v1530_IEs, masterCellGroup),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_masterCellGroup_constr_2, &asn_PER_memb_masterCellGroup_constr_2,  memb_masterCellGroup_constraint_1 },
+               0, 0, /* No default value */
+               "masterCellGroup"
+               },
+       { ATF_POINTER, 7, offsetof(struct RRCReconfiguration_v1530_IEs, fullConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fullConfig_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fullConfig"
+               },
+       { ATF_POINTER, 6, offsetof(struct RRCReconfiguration_v1530_IEs, dedicatedNAS_MessageList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_dedicatedNAS_MessageList_5,
+               0,
+               { &asn_OER_memb_dedicatedNAS_MessageList_constr_5, &asn_PER_memb_dedicatedNAS_MessageList_constr_5,  memb_dedicatedNAS_MessageList_constraint_1 },
+               0, 0, /* No default value */
+               "dedicatedNAS-MessageList"
+               },
+       { ATF_POINTER, 5, offsetof(struct RRCReconfiguration_v1530_IEs, masterKeyUpdate),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MasterKeyUpdate,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "masterKeyUpdate"
+               },
+       { ATF_POINTER, 4, offsetof(struct RRCReconfiguration_v1530_IEs, dedicatedSIB1_Delivery),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_dedicatedSIB1_Delivery_constr_8, &asn_PER_memb_dedicatedSIB1_Delivery_constr_8,  memb_dedicatedSIB1_Delivery_constraint_1 },
+               0, 0, /* No default value */
+               "dedicatedSIB1-Delivery"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCReconfiguration_v1530_IEs, dedicatedSystemInformationDelivery),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_dedicatedSystemInformationDelivery_constr_9, &asn_PER_memb_dedicatedSystemInformationDelivery_constr_9,  memb_dedicatedSystemInformationDelivery_constraint_1 },
+               0, 0, /* No default value */
+               "dedicatedSystemInformationDelivery"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCReconfiguration_v1530_IEs, otherConfig),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OtherConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "otherConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReconfiguration_v1530_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReconfiguration_v1530_IEs_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_RRCReconfiguration_v1530_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfiguration_v1530_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* masterCellGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* fullConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dedicatedNAS-MessageList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* masterKeyUpdate */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dedicatedSIB1-Delivery */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dedicatedSystemInformationDelivery */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* otherConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_v1530_IEs_specs_1 = {
+       sizeof(struct RRCReconfiguration_v1530_IEs),
+       offsetof(struct RRCReconfiguration_v1530_IEs, _asn_ctx),
+       asn_MAP_RRCReconfiguration_v1530_IEs_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_RRCReconfiguration_v1530_IEs_oms_1,     /* Optional members */
+       8, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration_v1530_IEs = {
+       "RRCReconfiguration-v1530-IEs",
+       "RRCReconfiguration-v1530-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfiguration_v1530_IEs_tags_1,
+       sizeof(asn_DEF_RRCReconfiguration_v1530_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_v1530_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfiguration_v1530_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCReconfiguration_v1530_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_v1530_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfiguration_v1530_IEs_1,
+       8,      /* Elements count */
+       &asn_SPC_RRCReconfiguration_v1530_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.h b/src/codec_utils/RRC/RRCReconfiguration-v1530-IEs.h
new file mode 100644 (file)
index 0000000..c191b44
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfiguration_v1530_IEs_H_
+#define        _RRCReconfiguration_v1530_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <NativeEnumerated.h>
+#include "DedicatedNAS-Message.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReconfiguration_v1530_IEs__fullConfig {
+       RRCReconfiguration_v1530_IEs__fullConfig_true   = 0
+} e_RRCReconfiguration_v1530_IEs__fullConfig;
+
+/* Forward declarations */
+struct MasterKeyUpdate;
+struct OtherConfig;
+
+/* RRCReconfiguration-v1530-IEs */
+typedef struct RRCReconfiguration_v1530_IEs {
+       OCTET_STRING_t  *masterCellGroup;       /* OPTIONAL */
+       long    *fullConfig;    /* OPTIONAL */
+       struct RRCReconfiguration_v1530_IEs__dedicatedNAS_MessageList {
+               A_SEQUENCE_OF(DedicatedNAS_Message_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *dedicatedNAS_MessageList;
+       struct MasterKeyUpdate  *masterKeyUpdate;       /* OPTIONAL */
+       OCTET_STRING_t  *dedicatedSIB1_Delivery;        /* OPTIONAL */
+       OCTET_STRING_t  *dedicatedSystemInformationDelivery;    /* OPTIONAL */
+       struct OtherConfig      *otherConfig;   /* OPTIONAL */
+       struct RRCReconfiguration_v1530_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfiguration_v1530_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_fullConfig_3;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration_v1530_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_v1530_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfiguration_v1530_IEs_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfiguration_v1530_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfiguration.c b/src/codec_utils/RRC/RRCReconfiguration.c
new file mode 100644 (file)
index 0000000..02a5447
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfiguration.h"
+
+#include "RRCReconfiguration-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCReconfiguration__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCReconfiguration__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCReconfiguration__criticalExtensions, choice.rrcReconfiguration),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfiguration_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReconfiguration"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCReconfiguration__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReconfiguration */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCReconfiguration__criticalExtensions),
+       offsetof(struct RRCReconfiguration__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCReconfiguration__criticalExtensions, present),
+       sizeof(((struct RRCReconfiguration__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReconfiguration_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReconfiguration, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReconfiguration, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReconfiguration_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfiguration_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_specs_1 = {
+       sizeof(struct RRCReconfiguration),
+       offsetof(struct RRCReconfiguration, _asn_ctx),
+       asn_MAP_RRCReconfiguration_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration = {
+       "RRCReconfiguration",
+       "RRCReconfiguration",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfiguration_tags_1,
+       sizeof(asn_DEF_RRCReconfiguration_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfiguration_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRCReconfiguration_tags_1)
+               /sizeof(asn_DEF_RRCReconfiguration_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfiguration_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReconfiguration_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfiguration.h b/src/codec_utils/RRC/RRCReconfiguration.h
new file mode 100644 (file)
index 0000000..beb2e8b
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfiguration_H_
+#define        _RRCReconfiguration_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReconfiguration__criticalExtensions_PR {
+       RRCReconfiguration__criticalExtensions_PR_NOTHING,      /* No components present */
+       RRCReconfiguration__criticalExtensions_PR_rrcReconfiguration,
+       RRCReconfiguration__criticalExtensions_PR_criticalExtensionsFuture
+} RRCReconfiguration__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCReconfiguration_IEs;
+
+/* RRCReconfiguration */
+typedef struct RRCReconfiguration {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCReconfiguration__criticalExtensions {
+               RRCReconfiguration__criticalExtensions_PR present;
+               union RRCReconfiguration__criticalExtensions_u {
+                       struct RRCReconfiguration_IEs   *rrcReconfiguration;
+                       struct RRCReconfiguration__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfiguration_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfiguration;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfiguration_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfiguration_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfiguration_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete-IEs.c b/src/codec_utils/RRC/RRCReconfigurationComplete-IEs.c
new file mode 100644 (file)
index 0000000..45e0fe8
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfigurationComplete-IEs.h"
+
+#include "RRCReconfigurationComplete-v1530-IEs.h"
+asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RRCReconfigurationComplete_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReconfigurationComplete_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfigurationComplete_v1530_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReconfigurationComplete_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RRCReconfigurationComplete_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfigurationComplete_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_IEs_specs_1 = {
+       sizeof(struct RRCReconfigurationComplete_IEs),
+       offsetof(struct RRCReconfigurationComplete_IEs, _asn_ctx),
+       asn_MAP_RRCReconfigurationComplete_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RRCReconfigurationComplete_IEs_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete_IEs = {
+       "RRCReconfigurationComplete-IEs",
+       "RRCReconfigurationComplete-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfigurationComplete_IEs_tags_1,
+       sizeof(asn_DEF_RRCReconfigurationComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfigurationComplete_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RRCReconfigurationComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfigurationComplete_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReconfigurationComplete_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete-IEs.h b/src/codec_utils/RRC/RRCReconfigurationComplete-IEs.h
new file mode 100644 (file)
index 0000000..237677b
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfigurationComplete_IEs_H_
+#define        _RRCReconfigurationComplete_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RRCReconfigurationComplete_v1530_IEs;
+
+/* RRCReconfigurationComplete-IEs */
+typedef struct RRCReconfigurationComplete_IEs {
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCReconfigurationComplete_v1530_IEs     *nonCriticalExtension;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfigurationComplete_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfigurationComplete_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.c b/src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.c
new file mode 100644 (file)
index 0000000..1b0e2b9
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfigurationComplete-v1530-IEs.h"
+
+#include "UplinkTxDirectCurrentList.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct RRCReconfigurationComplete_v1530_IEs__nonCriticalExtension),
+       offsetof(struct RRCReconfigurationComplete_v1530_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_v1530_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RRCReconfigurationComplete_v1530_IEs, uplinkTxDirectCurrentList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkTxDirectCurrentList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkTxDirectCurrentList"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReconfigurationComplete_v1530_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReconfigurationComplete_v1530_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfigurationComplete_v1530_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uplinkTxDirectCurrentList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_v1530_IEs_specs_1 = {
+       sizeof(struct RRCReconfigurationComplete_v1530_IEs),
+       offsetof(struct RRCReconfigurationComplete_v1530_IEs, _asn_ctx),
+       asn_MAP_RRCReconfigurationComplete_v1530_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RRCReconfigurationComplete_v1530_IEs_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete_v1530_IEs = {
+       "RRCReconfigurationComplete-v1530-IEs",
+       "RRCReconfigurationComplete-v1530-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1,
+       sizeof(asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_v1530_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfigurationComplete_v1530_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReconfigurationComplete_v1530_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.h b/src/codec_utils/RRC/RRCReconfigurationComplete-v1530-IEs.h
new file mode 100644 (file)
index 0000000..272e8cf
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfigurationComplete_v1530_IEs_H_
+#define        _RRCReconfigurationComplete_v1530_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UplinkTxDirectCurrentList;
+
+/* RRCReconfigurationComplete-v1530-IEs */
+typedef struct RRCReconfigurationComplete_v1530_IEs {
+       struct UplinkTxDirectCurrentList        *uplinkTxDirectCurrentList;     /* OPTIONAL */
+       struct RRCReconfigurationComplete_v1530_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfigurationComplete_v1530_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete_v1530_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_v1530_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_v1530_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfigurationComplete_v1530_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete.c b/src/codec_utils/RRC/RRCReconfigurationComplete.c
new file mode 100644 (file)
index 0000000..bc022a6
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReconfigurationComplete.h"
+
+#include "RRCReconfigurationComplete-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCReconfigurationComplete__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCReconfigurationComplete__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCReconfigurationComplete__criticalExtensions, choice.rrcReconfigurationComplete),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfigurationComplete_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReconfigurationComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCReconfigurationComplete__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReconfigurationComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCReconfigurationComplete__criticalExtensions),
+       offsetof(struct RRCReconfigurationComplete__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCReconfigurationComplete__criticalExtensions, present),
+       sizeof(((struct RRCReconfigurationComplete__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReconfigurationComplete, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReconfigurationComplete, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReconfigurationComplete_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReconfigurationComplete_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_specs_1 = {
+       sizeof(struct RRCReconfigurationComplete),
+       offsetof(struct RRCReconfigurationComplete, _asn_ctx),
+       asn_MAP_RRCReconfigurationComplete_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete = {
+       "RRCReconfigurationComplete",
+       "RRCReconfigurationComplete",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReconfigurationComplete_tags_1,
+       sizeof(asn_DEF_RRCReconfigurationComplete_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_tags_1[0]), /* 1 */
+       asn_DEF_RRCReconfigurationComplete_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRCReconfigurationComplete_tags_1)
+               /sizeof(asn_DEF_RRCReconfigurationComplete_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReconfigurationComplete_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReconfigurationComplete_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReconfigurationComplete.h b/src/codec_utils/RRC/RRCReconfigurationComplete.h
new file mode 100644 (file)
index 0000000..0660c17
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReconfigurationComplete_H_
+#define        _RRCReconfigurationComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReconfigurationComplete__criticalExtensions_PR {
+       RRCReconfigurationComplete__criticalExtensions_PR_NOTHING,      /* No components present */
+       RRCReconfigurationComplete__criticalExtensions_PR_rrcReconfigurationComplete,
+       RRCReconfigurationComplete__criticalExtensions_PR_criticalExtensionsFuture
+} RRCReconfigurationComplete__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCReconfigurationComplete_IEs;
+
+/* RRCReconfigurationComplete */
+typedef struct RRCReconfigurationComplete {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCReconfigurationComplete__criticalExtensions {
+               RRCReconfigurationComplete__criticalExtensions_PR present;
+               union RRCReconfigurationComplete__criticalExtensions_u {
+                       struct RRCReconfigurationComplete_IEs   *rrcReconfigurationComplete;
+                       struct RRCReconfigurationComplete__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReconfigurationComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReconfigurationComplete;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReconfigurationComplete_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReconfigurationComplete_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReconfigurationComplete_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishment-IEs.c b/src/codec_utils/RRC/RRCReestablishment-IEs.c
new file mode 100644 (file)
index 0000000..2aa750b
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishment-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct RRCReestablishment_IEs__nonCriticalExtension),
+       offsetof(struct RRCReestablishment_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReestablishment_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishment_IEs, nextHopChainingCount),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NextHopChainingCount,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nextHopChainingCount"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCReestablishment_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReestablishment_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReestablishment_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RRCReestablishment_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishment_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nextHopChainingCount */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishment_IEs_specs_1 = {
+       sizeof(struct RRCReestablishment_IEs),
+       offsetof(struct RRCReestablishment_IEs, _asn_ctx),
+       asn_MAP_RRCReestablishment_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_RRCReestablishment_IEs_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReestablishment_IEs = {
+       "RRCReestablishment-IEs",
+       "RRCReestablishment-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishment_IEs_tags_1,
+       sizeof(asn_DEF_RRCReestablishment_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishment_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishment_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RRCReestablishment_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishment_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishment_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_RRCReestablishment_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishment-IEs.h b/src/codec_utils/RRC/RRCReestablishment-IEs.h
new file mode 100644 (file)
index 0000000..6e2f36a
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishment_IEs_H_
+#define        _RRCReestablishment_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "NextHopChainingCount.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCReestablishment-IEs */
+typedef struct RRCReestablishment_IEs {
+       NextHopChainingCount_t   nextHopChainingCount;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCReestablishment_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishment_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishment_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishment_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishment_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishment_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishment.c b/src/codec_utils/RRC/RRCReestablishment.c
new file mode 100644 (file)
index 0000000..7a85c3d
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishment.h"
+
+#include "RRCReestablishment-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCReestablishment__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCReestablishment__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCReestablishment__criticalExtensions, choice.rrcReestablishment),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishment_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishment"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCReestablishment__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReestablishment */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCReestablishment__criticalExtensions),
+       offsetof(struct RRCReestablishment__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCReestablishment__criticalExtensions, present),
+       sizeof(((struct RRCReestablishment__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReestablishment_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishment, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishment, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReestablishment_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishment_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishment_specs_1 = {
+       sizeof(struct RRCReestablishment),
+       offsetof(struct RRCReestablishment, _asn_ctx),
+       asn_MAP_RRCReestablishment_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReestablishment = {
+       "RRCReestablishment",
+       "RRCReestablishment",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishment_tags_1,
+       sizeof(asn_DEF_RRCReestablishment_tags_1)
+               /sizeof(asn_DEF_RRCReestablishment_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishment_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRCReestablishment_tags_1)
+               /sizeof(asn_DEF_RRCReestablishment_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishment_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReestablishment_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishment.h b/src/codec_utils/RRC/RRCReestablishment.h
new file mode 100644 (file)
index 0000000..d70dde8
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishment_H_
+#define        _RRCReestablishment_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReestablishment__criticalExtensions_PR {
+       RRCReestablishment__criticalExtensions_PR_NOTHING,      /* No components present */
+       RRCReestablishment__criticalExtensions_PR_rrcReestablishment,
+       RRCReestablishment__criticalExtensions_PR_criticalExtensionsFuture
+} RRCReestablishment__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCReestablishment_IEs;
+
+/* RRCReestablishment */
+typedef struct RRCReestablishment {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCReestablishment__criticalExtensions {
+               RRCReestablishment__criticalExtensions_PR present;
+               union RRCReestablishment__criticalExtensions_u {
+                       struct RRCReestablishment_IEs   *rrcReestablishment;
+                       struct RRCReestablishment__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishment_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishment;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishment_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishment_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishment_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishmentComplete-IEs.c b/src/codec_utils/RRC/RRCReestablishmentComplete-IEs.c
new file mode 100644 (file)
index 0000000..d944a28
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishmentComplete-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct RRCReestablishmentComplete_IEs__nonCriticalExtension),
+       offsetof(struct RRCReestablishmentComplete_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReestablishmentComplete_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RRCReestablishmentComplete_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReestablishmentComplete_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReestablishmentComplete_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RRCReestablishmentComplete_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishmentComplete_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentComplete_IEs_specs_1 = {
+       sizeof(struct RRCReestablishmentComplete_IEs),
+       offsetof(struct RRCReestablishmentComplete_IEs, _asn_ctx),
+       asn_MAP_RRCReestablishmentComplete_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RRCReestablishmentComplete_IEs_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentComplete_IEs = {
+       "RRCReestablishmentComplete-IEs",
+       "RRCReestablishmentComplete-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishmentComplete_IEs_tags_1,
+       sizeof(asn_DEF_RRCReestablishmentComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentComplete_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishmentComplete_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RRCReestablishmentComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentComplete_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishmentComplete_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReestablishmentComplete_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishmentComplete-IEs.h b/src/codec_utils/RRC/RRCReestablishmentComplete-IEs.h
new file mode 100644 (file)
index 0000000..c2cbf39
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishmentComplete_IEs_H_
+#define        _RRCReestablishmentComplete_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCReestablishmentComplete-IEs */
+typedef struct RRCReestablishmentComplete_IEs {
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCReestablishmentComplete_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishmentComplete_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentComplete_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishmentComplete_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishmentComplete_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishmentComplete.c b/src/codec_utils/RRC/RRCReestablishmentComplete.c
new file mode 100644 (file)
index 0000000..c6fb27f
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishmentComplete.h"
+
+#include "RRCReestablishmentComplete-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCReestablishmentComplete__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCReestablishmentComplete__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCReestablishmentComplete__criticalExtensions, choice.rrcReestablishmentComplete),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishmentComplete_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishmentComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCReestablishmentComplete__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReestablishmentComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCReestablishmentComplete__criticalExtensions),
+       offsetof(struct RRCReestablishmentComplete__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCReestablishmentComplete__criticalExtensions, present),
+       sizeof(((struct RRCReestablishmentComplete__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReestablishmentComplete_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentComplete, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentComplete, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReestablishmentComplete_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishmentComplete_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentComplete_specs_1 = {
+       sizeof(struct RRCReestablishmentComplete),
+       offsetof(struct RRCReestablishmentComplete, _asn_ctx),
+       asn_MAP_RRCReestablishmentComplete_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentComplete = {
+       "RRCReestablishmentComplete",
+       "RRCReestablishmentComplete",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishmentComplete_tags_1,
+       sizeof(asn_DEF_RRCReestablishmentComplete_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentComplete_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishmentComplete_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRCReestablishmentComplete_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentComplete_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishmentComplete_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCReestablishmentComplete_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishmentComplete.h b/src/codec_utils/RRC/RRCReestablishmentComplete.h
new file mode 100644 (file)
index 0000000..35d7755
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishmentComplete_H_
+#define        _RRCReestablishmentComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReestablishmentComplete__criticalExtensions_PR {
+       RRCReestablishmentComplete__criticalExtensions_PR_NOTHING,      /* No components present */
+       RRCReestablishmentComplete__criticalExtensions_PR_rrcReestablishmentComplete,
+       RRCReestablishmentComplete__criticalExtensions_PR_criticalExtensionsFuture
+} RRCReestablishmentComplete__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCReestablishmentComplete_IEs;
+
+/* RRCReestablishmentComplete */
+typedef struct RRCReestablishmentComplete {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCReestablishmentComplete__criticalExtensions {
+               RRCReestablishmentComplete__criticalExtensions_PR present;
+               union RRCReestablishmentComplete__criticalExtensions_u {
+                       struct RRCReestablishmentComplete_IEs   *rrcReestablishmentComplete;
+                       struct RRCReestablishmentComplete__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishmentComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentComplete;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentComplete_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishmentComplete_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishmentComplete_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishmentRequest-IEs.c b/src/codec_utils/RRC/RRCReestablishmentRequest-IEs.c
new file mode 100644 (file)
index 0000000..6fdab8a
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishmentRequest-IEs.h"
+
+static int
+memb_spare_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 == 1)) {
+               /* 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_spare_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCReestablishmentRequest_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentRequest_IEs, ue_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReestabUE_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentRequest_IEs, reestablishmentCause),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReestablishmentCause,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reestablishmentCause"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentRequest_IEs, spare),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_4, &asn_PER_memb_spare_constr_4,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReestablishmentRequest_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishmentRequest_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reestablishmentCause */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentRequest_IEs_specs_1 = {
+       sizeof(struct RRCReestablishmentRequest_IEs),
+       offsetof(struct RRCReestablishmentRequest_IEs, _asn_ctx),
+       asn_MAP_RRCReestablishmentRequest_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentRequest_IEs = {
+       "RRCReestablishmentRequest-IEs",
+       "RRCReestablishmentRequest-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishmentRequest_IEs_tags_1,
+       sizeof(asn_DEF_RRCReestablishmentRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentRequest_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishmentRequest_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RRCReestablishmentRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentRequest_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishmentRequest_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_RRCReestablishmentRequest_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishmentRequest-IEs.h b/src/codec_utils/RRC/RRCReestablishmentRequest-IEs.h
new file mode 100644 (file)
index 0000000..4a35f0f
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishmentRequest_IEs_H_
+#define        _RRCReestablishmentRequest_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ReestabUE-Identity.h"
+#include "ReestablishmentCause.h"
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCReestablishmentRequest-IEs */
+typedef struct RRCReestablishmentRequest_IEs {
+       ReestabUE_Identity_t     ue_Identity;
+       ReestablishmentCause_t   reestablishmentCause;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishmentRequest_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentRequest_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentRequest_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishmentRequest_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishmentRequest_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReestablishmentRequest.c b/src/codec_utils/RRC/RRCReestablishmentRequest.c
new file mode 100644 (file)
index 0000000..ecea07c
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReestablishmentRequest.h"
+
+asn_TYPE_member_t asn_MBR_RRCReestablishmentRequest_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReestablishmentRequest, rrcReestablishmentRequest),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishmentRequest_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishmentRequest"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReestablishmentRequest_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReestablishmentRequest_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcReestablishmentRequest */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentRequest_specs_1 = {
+       sizeof(struct RRCReestablishmentRequest),
+       offsetof(struct RRCReestablishmentRequest, _asn_ctx),
+       asn_MAP_RRCReestablishmentRequest_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_RRCReestablishmentRequest = {
+       "RRCReestablishmentRequest",
+       "RRCReestablishmentRequest",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReestablishmentRequest_tags_1,
+       sizeof(asn_DEF_RRCReestablishmentRequest_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentRequest_tags_1[0]), /* 1 */
+       asn_DEF_RRCReestablishmentRequest_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRCReestablishmentRequest_tags_1)
+               /sizeof(asn_DEF_RRCReestablishmentRequest_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReestablishmentRequest_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCReestablishmentRequest_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReestablishmentRequest.h b/src/codec_utils/RRC/RRCReestablishmentRequest.h
new file mode 100644 (file)
index 0000000..9277b5c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReestablishmentRequest_H_
+#define        _RRCReestablishmentRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRCReestablishmentRequest-IEs.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCReestablishmentRequest */
+typedef struct RRCReestablishmentRequest {
+       RRCReestablishmentRequest_IEs_t  rrcReestablishmentRequest;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReestablishmentRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReestablishmentRequest;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReestablishmentRequest_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReestablishmentRequest_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReestablishmentRequest_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReject-IEs.c b/src/codec_utils/RRC/RRCReject-IEs.c
new file mode 100644 (file)
index 0000000..ff6fa47
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReject-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct RRCReject_IEs__nonCriticalExtension),
+       offsetof(struct RRCReject_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReject_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct RRCReject_IEs, waitTime),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RejectWaitTime,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "waitTime"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCReject_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCReject_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCReject_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_RRCReject_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReject_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* waitTime */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReject_IEs_specs_1 = {
+       sizeof(struct RRCReject_IEs),
+       offsetof(struct RRCReject_IEs, _asn_ctx),
+       asn_MAP_RRCReject_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_RRCReject_IEs_oms_1,    /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCReject_IEs = {
+       "RRCReject-IEs",
+       "RRCReject-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReject_IEs_tags_1,
+       sizeof(asn_DEF_RRCReject_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReject_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCReject_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RRCReject_IEs_tags_1)
+               /sizeof(asn_DEF_RRCReject_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReject_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_RRCReject_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReject-IEs.h b/src/codec_utils/RRC/RRCReject-IEs.h
new file mode 100644 (file)
index 0000000..e631e67
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReject_IEs_H_
+#define        _RRCReject_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RejectWaitTime.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCReject-IEs */
+typedef struct RRCReject_IEs {
+       RejectWaitTime_t        *waitTime;      /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCReject_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReject_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReject_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReject_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReject_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReject_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCReject.c b/src/codec_utils/RRC/RRCReject.c
new file mode 100644 (file)
index 0000000..5ecbc81
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCReject.h"
+
+#include "RRCReject-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct RRCReject__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCReject__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCReject__criticalExtensions, choice.rrcReject),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReject_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReject"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCReject__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcReject */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct RRCReject__criticalExtensions),
+       offsetof(struct RRCReject__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCReject__criticalExtensions, present),
+       sizeof(((struct RRCReject__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCReject_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCReject, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCReject_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCReject_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCReject_specs_1 = {
+       sizeof(struct RRCReject),
+       offsetof(struct RRCReject, _asn_ctx),
+       asn_MAP_RRCReject_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_RRCReject = {
+       "RRCReject",
+       "RRCReject",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCReject_tags_1,
+       sizeof(asn_DEF_RRCReject_tags_1)
+               /sizeof(asn_DEF_RRCReject_tags_1[0]), /* 1 */
+       asn_DEF_RRCReject_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRCReject_tags_1)
+               /sizeof(asn_DEF_RRCReject_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCReject_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCReject_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCReject.h b/src/codec_utils/RRC/RRCReject.h
new file mode 100644 (file)
index 0000000..ef2b34f
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCReject_H_
+#define        _RRCReject_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCReject__criticalExtensions_PR {
+       RRCReject__criticalExtensions_PR_NOTHING,       /* No components present */
+       RRCReject__criticalExtensions_PR_rrcReject,
+       RRCReject__criticalExtensions_PR_criticalExtensionsFuture
+} RRCReject__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCReject_IEs;
+
+/* RRCReject */
+typedef struct RRCReject {
+       struct RRCReject__criticalExtensions {
+               RRCReject__criticalExtensions_PR present;
+               union RRCReject__criticalExtensions_u {
+                       struct RRCReject_IEs    *rrcReject;
+                       struct RRCReject__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCReject_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCReject;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCReject_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCReject_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCReject_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCRelease-IEs.c b/src/codec_utils/RRC/RRCRelease-IEs.c
new file mode 100644 (file)
index 0000000..7c3ea0d
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCRelease-IEs.h"
+
+#include "RedirectedCarrierInfo.h"
+#include "CellReselectionPriorities.h"
+#include "SuspendConfig.h"
+#include "RRCRelease-v1540-IEs.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.
+ */
+static asn_oer_constraints_t asn_OER_type_deprioritisationType_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_deprioritisationType_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_deprioritisationTimer_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_deprioritisationTimer_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_deprioritisationType_value2enum_6[] = {
+       { 0,    9,      "frequency" },
+       { 1,    2,      "nr" }
+};
+static const unsigned int asn_MAP_deprioritisationType_enum2value_6[] = {
+       0,      /* frequency(0) */
+       1       /* nr(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_deprioritisationType_specs_6 = {
+       asn_MAP_deprioritisationType_value2enum_6,      /* "tag" => N; sorted by tag */
+       asn_MAP_deprioritisationType_enum2value_6,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_deprioritisationType_tags_6[] = {
+       (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_deprioritisationType_6 = {
+       "deprioritisationType",
+       "deprioritisationType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_deprioritisationType_tags_6,
+       sizeof(asn_DEF_deprioritisationType_tags_6)
+               /sizeof(asn_DEF_deprioritisationType_tags_6[0]) - 1, /* 1 */
+       asn_DEF_deprioritisationType_tags_6,    /* Same as above */
+       sizeof(asn_DEF_deprioritisationType_tags_6)
+               /sizeof(asn_DEF_deprioritisationType_tags_6[0]), /* 2 */
+       { &asn_OER_type_deprioritisationType_constr_6, &asn_PER_type_deprioritisationType_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_deprioritisationType_specs_6   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_deprioritisationTimer_value2enum_9[] = {
+       { 0,    4,      "min5" },
+       { 1,    5,      "min10" },
+       { 2,    5,      "min15" },
+       { 3,    5,      "min30" }
+};
+static const unsigned int asn_MAP_deprioritisationTimer_enum2value_9[] = {
+       1,      /* min10(1) */
+       2,      /* min15(2) */
+       3,      /* min30(3) */
+       0       /* min5(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_deprioritisationTimer_specs_9 = {
+       asn_MAP_deprioritisationTimer_value2enum_9,     /* "tag" => N; sorted by tag */
+       asn_MAP_deprioritisationTimer_enum2value_9,     /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_deprioritisationTimer_tags_9[] = {
+       (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_deprioritisationTimer_9 = {
+       "deprioritisationTimer",
+       "deprioritisationTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_deprioritisationTimer_tags_9,
+       sizeof(asn_DEF_deprioritisationTimer_tags_9)
+               /sizeof(asn_DEF_deprioritisationTimer_tags_9[0]) - 1, /* 1 */
+       asn_DEF_deprioritisationTimer_tags_9,   /* Same as above */
+       sizeof(asn_DEF_deprioritisationTimer_tags_9)
+               /sizeof(asn_DEF_deprioritisationTimer_tags_9[0]), /* 2 */
+       { &asn_OER_type_deprioritisationTimer_constr_9, &asn_PER_type_deprioritisationTimer_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_deprioritisationTimer_specs_9  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_deprioritisationReq_5[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCRelease_IEs__deprioritisationReq, deprioritisationType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_deprioritisationType_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deprioritisationType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCRelease_IEs__deprioritisationReq, deprioritisationTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_deprioritisationTimer_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deprioritisationTimer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_deprioritisationReq_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_deprioritisationReq_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* deprioritisationType */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* deprioritisationTimer */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_deprioritisationReq_specs_5 = {
+       sizeof(struct RRCRelease_IEs__deprioritisationReq),
+       offsetof(struct RRCRelease_IEs__deprioritisationReq, _asn_ctx),
+       asn_MAP_deprioritisationReq_tag2el_5,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_deprioritisationReq_5 = {
+       "deprioritisationReq",
+       "deprioritisationReq",
+       &asn_OP_SEQUENCE,
+       asn_DEF_deprioritisationReq_tags_5,
+       sizeof(asn_DEF_deprioritisationReq_tags_5)
+               /sizeof(asn_DEF_deprioritisationReq_tags_5[0]) - 1, /* 1 */
+       asn_DEF_deprioritisationReq_tags_5,     /* Same as above */
+       sizeof(asn_DEF_deprioritisationReq_tags_5)
+               /sizeof(asn_DEF_deprioritisationReq_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_deprioritisationReq_5,
+       2,      /* Elements count */
+       &asn_SPC_deprioritisationReq_specs_5    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCRelease_IEs_1[] = {
+       { ATF_POINTER, 6, offsetof(struct RRCRelease_IEs, redirectedCarrierInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_RedirectedCarrierInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "redirectedCarrierInfo"
+               },
+       { ATF_POINTER, 5, offsetof(struct RRCRelease_IEs, cellReselectionPriorities),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriorities,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriorities"
+               },
+       { ATF_POINTER, 4, offsetof(struct RRCRelease_IEs, suspendConfig),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SuspendConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "suspendConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCRelease_IEs, deprioritisationReq),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_deprioritisationReq_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deprioritisationReq"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCRelease_IEs, lateNonCriticalExtension),
+               (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 */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCRelease_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCRelease_v1540_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCRelease_IEs_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_RRCRelease_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCRelease_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* redirectedCarrierInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellReselectionPriorities */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* suspendConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* deprioritisationReq */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_IEs_specs_1 = {
+       sizeof(struct RRCRelease_IEs),
+       offsetof(struct RRCRelease_IEs, _asn_ctx),
+       asn_MAP_RRCRelease_IEs_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_RRCRelease_IEs_oms_1,   /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCRelease_IEs = {
+       "RRCRelease-IEs",
+       "RRCRelease-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCRelease_IEs_tags_1,
+       sizeof(asn_DEF_RRCRelease_IEs_tags_1)
+               /sizeof(asn_DEF_RRCRelease_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCRelease_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RRCRelease_IEs_tags_1)
+               /sizeof(asn_DEF_RRCRelease_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCRelease_IEs_1,
+       6,      /* Elements count */
+       &asn_SPC_RRCRelease_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCRelease-IEs.h b/src/codec_utils/RRC/RRCRelease-IEs.h
new file mode 100644 (file)
index 0000000..5a0d5b3
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCRelease_IEs_H_
+#define        _RRCRelease_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCRelease_IEs__deprioritisationReq__deprioritisationType {
+       RRCRelease_IEs__deprioritisationReq__deprioritisationType_frequency     = 0,
+       RRCRelease_IEs__deprioritisationReq__deprioritisationType_nr    = 1
+} e_RRCRelease_IEs__deprioritisationReq__deprioritisationType;
+typedef enum RRCRelease_IEs__deprioritisationReq__deprioritisationTimer {
+       RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min5 = 0,
+       RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min10        = 1,
+       RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min15        = 2,
+       RRCRelease_IEs__deprioritisationReq__deprioritisationTimer_min30        = 3
+} e_RRCRelease_IEs__deprioritisationReq__deprioritisationTimer;
+
+/* Forward declarations */
+struct RedirectedCarrierInfo;
+struct CellReselectionPriorities;
+struct SuspendConfig;
+struct RRCRelease_v1540_IEs;
+
+/* RRCRelease-IEs */
+typedef struct RRCRelease_IEs {
+       struct RedirectedCarrierInfo    *redirectedCarrierInfo; /* OPTIONAL */
+       struct CellReselectionPriorities        *cellReselectionPriorities;     /* OPTIONAL */
+       struct SuspendConfig    *suspendConfig; /* OPTIONAL */
+       struct RRCRelease_IEs__deprioritisationReq {
+               long     deprioritisationType;
+               long     deprioritisationTimer;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *deprioritisationReq;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCRelease_v1540_IEs     *nonCriticalExtension;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCRelease_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_deprioritisationType_6;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_deprioritisationTimer_9;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RRCRelease_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCRelease_IEs_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCRelease_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCRelease-v1540-IEs.c b/src/codec_utils/RRC/RRCRelease-v1540-IEs.c
new file mode 100644 (file)
index 0000000..9dfc938
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCRelease-v1540-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct RRCRelease_v1540_IEs__nonCriticalExtension),
+       offsetof(struct RRCRelease_v1540_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCRelease_v1540_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RRCRelease_v1540_IEs, waitTime),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RejectWaitTime,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "waitTime"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCRelease_v1540_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCRelease_v1540_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RRCRelease_v1540_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCRelease_v1540_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* waitTime */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_v1540_IEs_specs_1 = {
+       sizeof(struct RRCRelease_v1540_IEs),
+       offsetof(struct RRCRelease_v1540_IEs, _asn_ctx),
+       asn_MAP_RRCRelease_v1540_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RRCRelease_v1540_IEs_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCRelease_v1540_IEs = {
+       "RRCRelease-v1540-IEs",
+       "RRCRelease-v1540-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCRelease_v1540_IEs_tags_1,
+       sizeof(asn_DEF_RRCRelease_v1540_IEs_tags_1)
+               /sizeof(asn_DEF_RRCRelease_v1540_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCRelease_v1540_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCRelease_v1540_IEs_tags_1)
+               /sizeof(asn_DEF_RRCRelease_v1540_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCRelease_v1540_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCRelease_v1540_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCRelease-v1540-IEs.h b/src/codec_utils/RRC/RRCRelease-v1540-IEs.h
new file mode 100644 (file)
index 0000000..5fef2c7
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCRelease_v1540_IEs_H_
+#define        _RRCRelease_v1540_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RejectWaitTime.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCRelease-v1540-IEs */
+typedef struct RRCRelease_v1540_IEs {
+       RejectWaitTime_t        *waitTime;      /* OPTIONAL */
+       struct RRCRelease_v1540_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCRelease_v1540_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCRelease_v1540_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_v1540_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCRelease_v1540_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCRelease_v1540_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCRelease.c b/src/codec_utils/RRC/RRCRelease.c
new file mode 100644 (file)
index 0000000..86f08e9
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCRelease.h"
+
+#include "RRCRelease-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCRelease__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCRelease__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCRelease__criticalExtensions, choice.rrcRelease),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCRelease_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcRelease"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCRelease__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcRelease */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCRelease__criticalExtensions),
+       offsetof(struct RRCRelease__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCRelease__criticalExtensions, present),
+       sizeof(((struct RRCRelease__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCRelease_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCRelease, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCRelease, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCRelease_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCRelease_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_specs_1 = {
+       sizeof(struct RRCRelease),
+       offsetof(struct RRCRelease, _asn_ctx),
+       asn_MAP_RRCRelease_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCRelease = {
+       "RRCRelease",
+       "RRCRelease",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCRelease_tags_1,
+       sizeof(asn_DEF_RRCRelease_tags_1)
+               /sizeof(asn_DEF_RRCRelease_tags_1[0]), /* 1 */
+       asn_DEF_RRCRelease_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRCRelease_tags_1)
+               /sizeof(asn_DEF_RRCRelease_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCRelease_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCRelease_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCRelease.h b/src/codec_utils/RRC/RRCRelease.h
new file mode 100644 (file)
index 0000000..7acc86a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCRelease_H_
+#define        _RRCRelease_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCRelease__criticalExtensions_PR {
+       RRCRelease__criticalExtensions_PR_NOTHING,      /* No components present */
+       RRCRelease__criticalExtensions_PR_rrcRelease,
+       RRCRelease__criticalExtensions_PR_criticalExtensionsFuture
+} RRCRelease__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCRelease_IEs;
+
+/* RRCRelease */
+typedef struct RRCRelease {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCRelease__criticalExtensions {
+               RRCRelease__criticalExtensions_PR present;
+               union RRCRelease__criticalExtensions_u {
+                       struct RRCRelease_IEs   *rrcRelease;
+                       struct RRCRelease__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCRelease_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCRelease;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCRelease_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCRelease_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCRelease_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResume-IEs.c b/src/codec_utils/RRC/RRCResume-IEs.c
new file mode 100644 (file)
index 0000000..912e033
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResume-IEs.h"
+
+#include "RadioBearerConfig.h"
+#include "MeasConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_masterCellGroup_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_type_fullConfig_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fullConfig_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_masterCellGroup_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_masterCellGroup_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_fullConfig_value2enum_5[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_fullConfig_enum2value_5[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fullConfig_specs_5 = {
+       asn_MAP_fullConfig_value2enum_5,        /* "tag" => N; sorted by tag */
+       asn_MAP_fullConfig_enum2value_5,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fullConfig_tags_5[] = {
+       (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_fullConfig_5 = {
+       "fullConfig",
+       "fullConfig",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fullConfig_tags_5,
+       sizeof(asn_DEF_fullConfig_tags_5)
+               /sizeof(asn_DEF_fullConfig_tags_5[0]) - 1, /* 1 */
+       asn_DEF_fullConfig_tags_5,      /* Same as above */
+       sizeof(asn_DEF_fullConfig_tags_5)
+               /sizeof(asn_DEF_fullConfig_tags_5[0]), /* 2 */
+       { &asn_OER_type_fullConfig_constr_5, &asn_PER_type_fullConfig_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fullConfig_specs_5     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_8 = {
+       sizeof(struct RRCResume_IEs__nonCriticalExtension),
+       offsetof(struct RRCResume_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_8 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_8,
+       sizeof(asn_DEF_nonCriticalExtension_tags_8)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_8[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_8,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_8)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_8[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_8   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCResume_IEs_1[] = {
+       { ATF_POINTER, 6, offsetof(struct RRCResume_IEs, radioBearerConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RadioBearerConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioBearerConfig"
+               },
+       { ATF_POINTER, 5, offsetof(struct RRCResume_IEs, masterCellGroup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_masterCellGroup_constr_3, &asn_PER_memb_masterCellGroup_constr_3,  memb_masterCellGroup_constraint_1 },
+               0, 0, /* No default value */
+               "masterCellGroup"
+               },
+       { ATF_POINTER, 4, offsetof(struct RRCResume_IEs, measConfig),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCResume_IEs, fullConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fullConfig_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fullConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCResume_IEs, lateNonCriticalExtension),
+               (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 */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCResume_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCResume_IEs_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_RRCResume_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResume_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioBearerConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* masterCellGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* measConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* fullConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResume_IEs_specs_1 = {
+       sizeof(struct RRCResume_IEs),
+       offsetof(struct RRCResume_IEs, _asn_ctx),
+       asn_MAP_RRCResume_IEs_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_RRCResume_IEs_oms_1,    /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResume_IEs = {
+       "RRCResume-IEs",
+       "RRCResume-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResume_IEs_tags_1,
+       sizeof(asn_DEF_RRCResume_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResume_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCResume_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RRCResume_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResume_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResume_IEs_1,
+       6,      /* Elements count */
+       &asn_SPC_RRCResume_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResume-IEs.h b/src/codec_utils/RRC/RRCResume-IEs.h
new file mode 100644 (file)
index 0000000..ef2cb33
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResume_IEs_H_
+#define        _RRCResume_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCResume_IEs__fullConfig {
+       RRCResume_IEs__fullConfig_true  = 0
+} e_RRCResume_IEs__fullConfig;
+
+/* Forward declarations */
+struct RadioBearerConfig;
+struct MeasConfig;
+
+/* RRCResume-IEs */
+typedef struct RRCResume_IEs {
+       struct RadioBearerConfig        *radioBearerConfig;     /* OPTIONAL */
+       OCTET_STRING_t  *masterCellGroup;       /* OPTIONAL */
+       struct MeasConfig       *measConfig;    /* OPTIONAL */
+       long    *fullConfig;    /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCResume_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResume_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_fullConfig_5;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResume_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResume_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResume_IEs_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResume_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResume.c b/src/codec_utils/RRC/RRCResume.c
new file mode 100644 (file)
index 0000000..92e94db
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResume.h"
+
+#include "RRCResume-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCResume__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCResume__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCResume__criticalExtensions, choice.rrcResume),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResume_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResume"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCResume__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcResume */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCResume__criticalExtensions),
+       offsetof(struct RRCResume__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCResume__criticalExtensions, present),
+       sizeof(((struct RRCResume__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCResume_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResume, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResume, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResume_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResume_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResume_specs_1 = {
+       sizeof(struct RRCResume),
+       offsetof(struct RRCResume, _asn_ctx),
+       asn_MAP_RRCResume_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResume = {
+       "RRCResume",
+       "RRCResume",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResume_tags_1,
+       sizeof(asn_DEF_RRCResume_tags_1)
+               /sizeof(asn_DEF_RRCResume_tags_1[0]), /* 1 */
+       asn_DEF_RRCResume_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRCResume_tags_1)
+               /sizeof(asn_DEF_RRCResume_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResume_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCResume_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResume.h b/src/codec_utils/RRC/RRCResume.h
new file mode 100644 (file)
index 0000000..b737568
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResume_H_
+#define        _RRCResume_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCResume__criticalExtensions_PR {
+       RRCResume__criticalExtensions_PR_NOTHING,       /* No components present */
+       RRCResume__criticalExtensions_PR_rrcResume,
+       RRCResume__criticalExtensions_PR_criticalExtensionsFuture
+} RRCResume__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCResume_IEs;
+
+/* RRCResume */
+typedef struct RRCResume {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCResume__criticalExtensions {
+               RRCResume__criticalExtensions_PR present;
+               union RRCResume__criticalExtensions_u {
+                       struct RRCResume_IEs    *rrcResume;
+                       struct RRCResume__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResume_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResume;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResume_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResume_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResume_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeComplete-IEs.c b/src/codec_utils/RRC/RRCResumeComplete-IEs.c
new file mode 100644 (file)
index 0000000..d91b507
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeComplete-IEs.h"
+
+#include "UplinkTxDirectCurrentList.h"
+static int
+memb_selectedPLMN_Identity_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 <= 12)) {
+               /* 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_selectedPLMN_Identity_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_selectedPLMN_Identity_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_6 = {
+       sizeof(struct RRCResumeComplete_IEs__nonCriticalExtension),
+       offsetof(struct RRCResumeComplete_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_6 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_6,
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_6,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_6)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCResumeComplete_IEs_1[] = {
+       { ATF_POINTER, 5, offsetof(struct RRCResumeComplete_IEs, dedicatedNAS_Message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DedicatedNAS_Message,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dedicatedNAS-Message"
+               },
+       { ATF_POINTER, 4, offsetof(struct RRCResumeComplete_IEs, selectedPLMN_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_selectedPLMN_Identity_constr_3, &asn_PER_memb_selectedPLMN_Identity_constr_3,  memb_selectedPLMN_Identity_constraint_1 },
+               0, 0, /* No default value */
+               "selectedPLMN-Identity"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCResumeComplete_IEs, uplinkTxDirectCurrentList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkTxDirectCurrentList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkTxDirectCurrentList"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCResumeComplete_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCResumeComplete_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCResumeComplete_IEs_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RRCResumeComplete_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeComplete_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dedicatedNAS-Message */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* selectedPLMN-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uplinkTxDirectCurrentList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeComplete_IEs_specs_1 = {
+       sizeof(struct RRCResumeComplete_IEs),
+       offsetof(struct RRCResumeComplete_IEs, _asn_ctx),
+       asn_MAP_RRCResumeComplete_IEs_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_RRCResumeComplete_IEs_oms_1,    /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResumeComplete_IEs = {
+       "RRCResumeComplete-IEs",
+       "RRCResumeComplete-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeComplete_IEs_tags_1,
+       sizeof(asn_DEF_RRCResumeComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeComplete_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeComplete_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RRCResumeComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeComplete_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeComplete_IEs_1,
+       5,      /* Elements count */
+       &asn_SPC_RRCResumeComplete_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeComplete-IEs.h b/src/codec_utils/RRC/RRCResumeComplete-IEs.h
new file mode 100644 (file)
index 0000000..4768443
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeComplete_IEs_H_
+#define        _RRCResumeComplete_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DedicatedNAS-Message.h"
+#include <NativeInteger.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UplinkTxDirectCurrentList;
+
+/* RRCResumeComplete-IEs */
+typedef struct RRCResumeComplete_IEs {
+       DedicatedNAS_Message_t  *dedicatedNAS_Message;  /* OPTIONAL */
+       long    *selectedPLMN_Identity; /* OPTIONAL */
+       struct UplinkTxDirectCurrentList        *uplinkTxDirectCurrentList;     /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCResumeComplete_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeComplete_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeComplete_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeComplete_IEs_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeComplete_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeComplete.c b/src/codec_utils/RRC/RRCResumeComplete.c
new file mode 100644 (file)
index 0000000..49c7f07
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeComplete.h"
+
+#include "RRCResumeComplete-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCResumeComplete__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCResumeComplete__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCResumeComplete__criticalExtensions, choice.rrcResumeComplete),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeComplete_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCResumeComplete__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcResumeComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCResumeComplete__criticalExtensions),
+       offsetof(struct RRCResumeComplete__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCResumeComplete__criticalExtensions, present),
+       sizeof(((struct RRCResumeComplete__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCResumeComplete_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeComplete, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeComplete, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResumeComplete_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeComplete_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeComplete_specs_1 = {
+       sizeof(struct RRCResumeComplete),
+       offsetof(struct RRCResumeComplete, _asn_ctx),
+       asn_MAP_RRCResumeComplete_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResumeComplete = {
+       "RRCResumeComplete",
+       "RRCResumeComplete",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeComplete_tags_1,
+       sizeof(asn_DEF_RRCResumeComplete_tags_1)
+               /sizeof(asn_DEF_RRCResumeComplete_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeComplete_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRCResumeComplete_tags_1)
+               /sizeof(asn_DEF_RRCResumeComplete_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeComplete_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCResumeComplete_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeComplete.h b/src/codec_utils/RRC/RRCResumeComplete.h
new file mode 100644 (file)
index 0000000..a881824
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeComplete_H_
+#define        _RRCResumeComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCResumeComplete__criticalExtensions_PR {
+       RRCResumeComplete__criticalExtensions_PR_NOTHING,       /* No components present */
+       RRCResumeComplete__criticalExtensions_PR_rrcResumeComplete,
+       RRCResumeComplete__criticalExtensions_PR_criticalExtensionsFuture
+} RRCResumeComplete__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCResumeComplete_IEs;
+
+/* RRCResumeComplete */
+typedef struct RRCResumeComplete {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCResumeComplete__criticalExtensions {
+               RRCResumeComplete__criticalExtensions_PR present;
+               union RRCResumeComplete__criticalExtensions_u {
+                       struct RRCResumeComplete_IEs    *rrcResumeComplete;
+                       struct RRCResumeComplete__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeComplete;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeComplete_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeComplete_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeComplete_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeRequest-IEs.c b/src/codec_utils/RRC/RRCResumeRequest-IEs.c
new file mode 100644 (file)
index 0000000..83fb813
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeRequest-IEs.h"
+
+static int
+memb_resumeMAC_I_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 == 16)) {
+               /* 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_spare_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 == 1)) {
+               /* 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_resumeMAC_I_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_resumeMAC_I_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spare_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCResumeRequest_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest_IEs, resumeIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ShortI_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resumeIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest_IEs, resumeMAC_I),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_resumeMAC_I_constr_3, &asn_PER_memb_resumeMAC_I_constr_3,  memb_resumeMAC_I_constraint_1 },
+               0, 0, /* No default value */
+               "resumeMAC-I"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest_IEs, resumeCause),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ResumeCause,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resumeCause"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest_IEs, spare),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_5, &asn_PER_memb_spare_constr_5,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResumeRequest_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeRequest_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resumeIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resumeMAC-I */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resumeCause */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest_IEs_specs_1 = {
+       sizeof(struct RRCResumeRequest_IEs),
+       offsetof(struct RRCResumeRequest_IEs, _asn_ctx),
+       asn_MAP_RRCResumeRequest_IEs_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest_IEs = {
+       "RRCResumeRequest-IEs",
+       "RRCResumeRequest-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeRequest_IEs_tags_1,
+       sizeof(asn_DEF_RRCResumeRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeRequest_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCResumeRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeRequest_IEs_1,
+       4,      /* Elements count */
+       &asn_SPC_RRCResumeRequest_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeRequest-IEs.h b/src/codec_utils/RRC/RRCResumeRequest-IEs.h
new file mode 100644 (file)
index 0000000..f55fd5c
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeRequest_IEs_H_
+#define        _RRCResumeRequest_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ShortI-RNTI-Value.h"
+#include <BIT_STRING.h>
+#include "ResumeCause.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCResumeRequest-IEs */
+typedef struct RRCResumeRequest_IEs {
+       ShortI_RNTI_Value_t      resumeIdentity;
+       BIT_STRING_t     resumeMAC_I;
+       ResumeCause_t    resumeCause;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeRequest_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeRequest_IEs_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeRequest_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeRequest.c b/src/codec_utils/RRC/RRCResumeRequest.c
new file mode 100644 (file)
index 0000000..ed58542
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeRequest.h"
+
+asn_TYPE_member_t asn_MBR_RRCResumeRequest_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest, rrcResumeRequest),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeRequest_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeRequest"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResumeRequest_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeRequest_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcResumeRequest */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest_specs_1 = {
+       sizeof(struct RRCResumeRequest),
+       offsetof(struct RRCResumeRequest, _asn_ctx),
+       asn_MAP_RRCResumeRequest_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_RRCResumeRequest = {
+       "RRCResumeRequest",
+       "RRCResumeRequest",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeRequest_tags_1,
+       sizeof(asn_DEF_RRCResumeRequest_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeRequest_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RRCResumeRequest_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeRequest_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCResumeRequest_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeRequest.h b/src/codec_utils/RRC/RRCResumeRequest.h
new file mode 100644 (file)
index 0000000..a21f10c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeRequest_H_
+#define        _RRCResumeRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRCResumeRequest-IEs.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCResumeRequest */
+typedef struct RRCResumeRequest {
+       RRCResumeRequest_IEs_t   rrcResumeRequest;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeRequest_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeRequest_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeRequest1-IEs.c b/src/codec_utils/RRC/RRCResumeRequest1-IEs.c
new file mode 100644 (file)
index 0000000..26e954c
--- /dev/null
@@ -0,0 +1,158 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeRequest1-IEs.h"
+
+static int
+memb_resumeMAC_I_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 == 16)) {
+               /* 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_spare_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 == 1)) {
+               /* 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_resumeMAC_I_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_resumeMAC_I_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spare_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCResumeRequest1_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest1_IEs, resumeIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_I_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resumeIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest1_IEs, resumeMAC_I),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_resumeMAC_I_constr_3, &asn_PER_memb_resumeMAC_I_constr_3,  memb_resumeMAC_I_constraint_1 },
+               0, 0, /* No default value */
+               "resumeMAC-I"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest1_IEs, resumeCause),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ResumeCause,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resumeCause"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest1_IEs, spare),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_5, &asn_PER_memb_spare_constr_5,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResumeRequest1_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeRequest1_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resumeIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resumeMAC-I */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resumeCause */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest1_IEs_specs_1 = {
+       sizeof(struct RRCResumeRequest1_IEs),
+       offsetof(struct RRCResumeRequest1_IEs, _asn_ctx),
+       asn_MAP_RRCResumeRequest1_IEs_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest1_IEs = {
+       "RRCResumeRequest1-IEs",
+       "RRCResumeRequest1-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeRequest1_IEs_tags_1,
+       sizeof(asn_DEF_RRCResumeRequest1_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest1_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeRequest1_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RRCResumeRequest1_IEs_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest1_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeRequest1_IEs_1,
+       4,      /* Elements count */
+       &asn_SPC_RRCResumeRequest1_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeRequest1-IEs.h b/src/codec_utils/RRC/RRCResumeRequest1-IEs.h
new file mode 100644 (file)
index 0000000..b38d287
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeRequest1_IEs_H_
+#define        _RRCResumeRequest1_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "I-RNTI-Value.h"
+#include <BIT_STRING.h>
+#include "ResumeCause.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCResumeRequest1-IEs */
+typedef struct RRCResumeRequest1_IEs {
+       I_RNTI_Value_t   resumeIdentity;
+       BIT_STRING_t     resumeMAC_I;
+       ResumeCause_t    resumeCause;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeRequest1_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest1_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest1_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeRequest1_IEs_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeRequest1_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCResumeRequest1.c b/src/codec_utils/RRC/RRCResumeRequest1.c
new file mode 100644 (file)
index 0000000..a4396b1
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCResumeRequest1.h"
+
+asn_TYPE_member_t asn_MBR_RRCResumeRequest1_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCResumeRequest1, rrcResumeRequest1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeRequest1_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeRequest1"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCResumeRequest1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCResumeRequest1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcResumeRequest1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest1_specs_1 = {
+       sizeof(struct RRCResumeRequest1),
+       offsetof(struct RRCResumeRequest1, _asn_ctx),
+       asn_MAP_RRCResumeRequest1_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_RRCResumeRequest1 = {
+       "RRCResumeRequest1",
+       "RRCResumeRequest1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCResumeRequest1_tags_1,
+       sizeof(asn_DEF_RRCResumeRequest1_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest1_tags_1[0]), /* 1 */
+       asn_DEF_RRCResumeRequest1_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RRCResumeRequest1_tags_1)
+               /sizeof(asn_DEF_RRCResumeRequest1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCResumeRequest1_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCResumeRequest1_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCResumeRequest1.h b/src/codec_utils/RRC/RRCResumeRequest1.h
new file mode 100644 (file)
index 0000000..d513f58
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCResumeRequest1_H_
+#define        _RRCResumeRequest1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRCResumeRequest1-IEs.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCResumeRequest1 */
+typedef struct RRCResumeRequest1 {
+       RRCResumeRequest1_IEs_t  rrcResumeRequest1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCResumeRequest1_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCResumeRequest1;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCResumeRequest1_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCResumeRequest1_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCResumeRequest1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetup-IEs.c b/src/codec_utils/RRC/RRCSetup-IEs.c
new file mode 100644 (file)
index 0000000..8e562e1
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetup-IEs.h"
+
+static int
+memb_masterCellGroup_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_masterCellGroup_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_masterCellGroup_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_5 = {
+       sizeof(struct RRCSetup_IEs__nonCriticalExtension),
+       offsetof(struct RRCSetup_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_5 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_5,
+       sizeof(asn_DEF_nonCriticalExtension_tags_5)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_5[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_5,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_5)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_5   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCSetup_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetup_IEs, radioBearerConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RadioBearerConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioBearerConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetup_IEs, masterCellGroup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_masterCellGroup_constr_3, &asn_PER_memb_masterCellGroup_constr_3,  memb_masterCellGroup_constraint_1 },
+               0, 0, /* No default value */
+               "masterCellGroup"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCSetup_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCSetup_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCSetup_IEs_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RRCSetup_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetup_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioBearerConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* masterCellGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetup_IEs_specs_1 = {
+       sizeof(struct RRCSetup_IEs),
+       offsetof(struct RRCSetup_IEs, _asn_ctx),
+       asn_MAP_RRCSetup_IEs_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_RRCSetup_IEs_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSetup_IEs = {
+       "RRCSetup-IEs",
+       "RRCSetup-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetup_IEs_tags_1,
+       sizeof(asn_DEF_RRCSetup_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetup_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetup_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCSetup_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetup_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetup_IEs_1,
+       4,      /* Elements count */
+       &asn_SPC_RRCSetup_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetup-IEs.h b/src/codec_utils/RRC/RRCSetup-IEs.h
new file mode 100644 (file)
index 0000000..8231358
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetup_IEs_H_
+#define        _RRCSetup_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RadioBearerConfig.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCSetup-IEs */
+typedef struct RRCSetup_IEs {
+       RadioBearerConfig_t      radioBearerConfig;
+       OCTET_STRING_t   masterCellGroup;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCSetup_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetup_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetup_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetup_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetup_IEs_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetup_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetup.c b/src/codec_utils/RRC/RRCSetup.c
new file mode 100644 (file)
index 0000000..192b964
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetup.h"
+
+#include "RRCSetup-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCSetup__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCSetup__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCSetup__criticalExtensions, choice.rrcSetup),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetup_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetup"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCSetup__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcSetup */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCSetup__criticalExtensions),
+       offsetof(struct RRCSetup__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCSetup__criticalExtensions, present),
+       sizeof(((struct RRCSetup__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCSetup_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetup, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetup, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSetup_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetup_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetup_specs_1 = {
+       sizeof(struct RRCSetup),
+       offsetof(struct RRCSetup, _asn_ctx),
+       asn_MAP_RRCSetup_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSetup = {
+       "RRCSetup",
+       "RRCSetup",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetup_tags_1,
+       sizeof(asn_DEF_RRCSetup_tags_1)
+               /sizeof(asn_DEF_RRCSetup_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetup_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RRCSetup_tags_1)
+               /sizeof(asn_DEF_RRCSetup_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetup_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCSetup_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetup.h b/src/codec_utils/RRC/RRCSetup.h
new file mode 100644 (file)
index 0000000..cd79c76
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetup_H_
+#define        _RRCSetup_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCSetup__criticalExtensions_PR {
+       RRCSetup__criticalExtensions_PR_NOTHING,        /* No components present */
+       RRCSetup__criticalExtensions_PR_rrcSetup,
+       RRCSetup__criticalExtensions_PR_criticalExtensionsFuture
+} RRCSetup__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCSetup_IEs;
+
+/* RRCSetup */
+typedef struct RRCSetup {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCSetup__criticalExtensions {
+               RRCSetup__criticalExtensions_PR present;
+               union RRCSetup__criticalExtensions_u {
+                       struct RRCSetup_IEs     *rrcSetup;
+                       struct RRCSetup__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetup_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetup;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetup_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetup_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetup_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetupComplete-IEs.c b/src/codec_utils/RRC/RRCSetupComplete-IEs.c
new file mode 100644 (file)
index 0000000..2fa437f
--- /dev/null
@@ -0,0 +1,409 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetupComplete-IEs.h"
+
+#include "RegisteredAMF.h"
+#include "S-NSSAI.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_ng_5G_S_TMSI_Part2_constraint_10(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 == 9)) {
+               /* 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_selectedPLMN_Identity_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 <= 12)) {
+               /* 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_s_NSSAI_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 <= 8)) {
+               /* 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_guami_Type_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_guami_Type_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_s_NSSAI_List_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_s_NSSAI_List_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ng_5G_S_TMSI_Part2_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       9       /* (SIZE(9..9)) */};
+static asn_per_constraints_t asn_PER_memb_ng_5G_S_TMSI_Part2_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  9,  9 }        /* (SIZE(9..9)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ng_5G_S_TMSI_Value_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ng_5G_S_TMSI_Value_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_selectedPLMN_Identity_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_selectedPLMN_Identity_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_s_NSSAI_List_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_s_NSSAI_List_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_guami_Type_value2enum_4[] = {
+       { 0,    6,      "native" },
+       { 1,    6,      "mapped" }
+};
+static const unsigned int asn_MAP_guami_Type_enum2value_4[] = {
+       1,      /* mapped(1) */
+       0       /* native(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_guami_Type_specs_4 = {
+       asn_MAP_guami_Type_value2enum_4,        /* "tag" => N; sorted by tag */
+       asn_MAP_guami_Type_enum2value_4,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_guami_Type_tags_4[] = {
+       (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_guami_Type_4 = {
+       "guami-Type",
+       "guami-Type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_guami_Type_tags_4,
+       sizeof(asn_DEF_guami_Type_tags_4)
+               /sizeof(asn_DEF_guami_Type_tags_4[0]) - 1, /* 1 */
+       asn_DEF_guami_Type_tags_4,      /* Same as above */
+       sizeof(asn_DEF_guami_Type_tags_4)
+               /sizeof(asn_DEF_guami_Type_tags_4[0]), /* 2 */
+       { &asn_OER_type_guami_Type_constr_4, &asn_PER_type_guami_Type_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_guami_Type_specs_4     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_s_NSSAI_List_7[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_S_NSSAI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_s_NSSAI_List_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_s_NSSAI_List_specs_7 = {
+       sizeof(struct RRCSetupComplete_IEs__s_NSSAI_List),
+       offsetof(struct RRCSetupComplete_IEs__s_NSSAI_List, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_s_NSSAI_List_7 = {
+       "s-NSSAI-List",
+       "s-NSSAI-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_s_NSSAI_List_tags_7,
+       sizeof(asn_DEF_s_NSSAI_List_tags_7)
+               /sizeof(asn_DEF_s_NSSAI_List_tags_7[0]) - 1, /* 1 */
+       asn_DEF_s_NSSAI_List_tags_7,    /* Same as above */
+       sizeof(asn_DEF_s_NSSAI_List_tags_7)
+               /sizeof(asn_DEF_s_NSSAI_List_tags_7[0]), /* 2 */
+       { &asn_OER_type_s_NSSAI_List_constr_7, &asn_PER_type_s_NSSAI_List_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_s_NSSAI_List_7,
+       1,      /* Single element */
+       &asn_SPC_s_NSSAI_List_specs_7   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ng_5G_S_TMSI_Value_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value, choice.ng_5G_S_TMSI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NG_5G_S_TMSI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-5G-S-TMSI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value, choice.ng_5G_S_TMSI_Part2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_ng_5G_S_TMSI_Part2_constr_12, &asn_PER_memb_ng_5G_S_TMSI_Part2_constr_12,  memb_ng_5G_S_TMSI_Part2_constraint_10 },
+               0, 0, /* No default value */
+               "ng-5G-S-TMSI-Part2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ng_5G_S_TMSI_Value_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ng-5G-S-TMSI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ng-5G-S-TMSI-Part2 */
+};
+static asn_CHOICE_specifics_t asn_SPC_ng_5G_S_TMSI_Value_specs_10 = {
+       sizeof(struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value),
+       offsetof(struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value, _asn_ctx),
+       offsetof(struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value, present),
+       sizeof(((struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value *)0)->present),
+       asn_MAP_ng_5G_S_TMSI_Value_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ng_5G_S_TMSI_Value_10 = {
+       "ng-5G-S-TMSI-Value",
+       "ng-5G-S-TMSI-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_ng_5G_S_TMSI_Value_constr_10, &asn_PER_type_ng_5G_S_TMSI_Value_constr_10, CHOICE_constraint },
+       asn_MBR_ng_5G_S_TMSI_Value_10,
+       2,      /* Elements count */
+       &asn_SPC_ng_5G_S_TMSI_Value_specs_10    /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_14 = {
+       sizeof(struct RRCSetupComplete_IEs__nonCriticalExtension),
+       offsetof(struct RRCSetupComplete_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_14 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_14,
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_14,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_14  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCSetupComplete_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete_IEs, selectedPLMN_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_selectedPLMN_Identity_constr_2, &asn_PER_memb_selectedPLMN_Identity_constr_2,  memb_selectedPLMN_Identity_constraint_1 },
+               0, 0, /* No default value */
+               "selectedPLMN-Identity"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCSetupComplete_IEs, registeredAMF),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RegisteredAMF,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "registeredAMF"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCSetupComplete_IEs, guami_Type),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_guami_Type_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "guami-Type"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCSetupComplete_IEs, s_NSSAI_List),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_s_NSSAI_List_7,
+               0,
+               { &asn_OER_memb_s_NSSAI_List_constr_7, &asn_PER_memb_s_NSSAI_List_constr_7,  memb_s_NSSAI_List_constraint_1 },
+               0, 0, /* No default value */
+               "s-NSSAI-List"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete_IEs, dedicatedNAS_Message),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DedicatedNAS_Message,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dedicatedNAS-Message"
+               },
+       { ATF_POINTER, 3, offsetof(struct RRCSetupComplete_IEs, ng_5G_S_TMSI_Value),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ng_5G_S_TMSI_Value_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ng-5G-S-TMSI-Value"
+               },
+       { ATF_POINTER, 2, offsetof(struct RRCSetupComplete_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRCSetupComplete_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_RRCSetupComplete_IEs_oms_1[] = { 1, 2, 3, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_RRCSetupComplete_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetupComplete_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* selectedPLMN-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* registeredAMF */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* guami-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s-NSSAI-List */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* dedicatedNAS-Message */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ng-5G-S-TMSI-Value */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetupComplete_IEs_specs_1 = {
+       sizeof(struct RRCSetupComplete_IEs),
+       offsetof(struct RRCSetupComplete_IEs, _asn_ctx),
+       asn_MAP_RRCSetupComplete_IEs_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_RRCSetupComplete_IEs_oms_1,     /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSetupComplete_IEs = {
+       "RRCSetupComplete-IEs",
+       "RRCSetupComplete-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetupComplete_IEs_tags_1,
+       sizeof(asn_DEF_RRCSetupComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetupComplete_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetupComplete_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCSetupComplete_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetupComplete_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetupComplete_IEs_1,
+       8,      /* Elements count */
+       &asn_SPC_RRCSetupComplete_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetupComplete-IEs.h b/src/codec_utils/RRC/RRCSetupComplete-IEs.h
new file mode 100644 (file)
index 0000000..32357d0
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetupComplete_IEs_H_
+#define        _RRCSetupComplete_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include "DedicatedNAS-Message.h"
+#include <OCTET_STRING.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "NG-5G-S-TMSI.h"
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCSetupComplete_IEs__guami_Type {
+       RRCSetupComplete_IEs__guami_Type_native = 0,
+       RRCSetupComplete_IEs__guami_Type_mapped = 1
+} e_RRCSetupComplete_IEs__guami_Type;
+typedef enum RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR {
+       RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_NOTHING,    /* No components present */
+       RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI,
+       RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR_ng_5G_S_TMSI_Part2
+} RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR;
+
+/* Forward declarations */
+struct RegisteredAMF;
+struct S_NSSAI;
+
+/* RRCSetupComplete-IEs */
+typedef struct RRCSetupComplete_IEs {
+       long     selectedPLMN_Identity;
+       struct RegisteredAMF    *registeredAMF; /* OPTIONAL */
+       long    *guami_Type;    /* OPTIONAL */
+       struct RRCSetupComplete_IEs__s_NSSAI_List {
+               A_SEQUENCE_OF(struct S_NSSAI) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *s_NSSAI_List;
+       DedicatedNAS_Message_t   dedicatedNAS_Message;
+       struct RRCSetupComplete_IEs__ng_5G_S_TMSI_Value {
+               RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_PR present;
+               union RRCSetupComplete_IEs__ng_5G_S_TMSI_Value_u {
+                       NG_5G_S_TMSI_t   ng_5G_S_TMSI;
+                       BIT_STRING_t     ng_5G_S_TMSI_Part2;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ng_5G_S_TMSI_Value;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct RRCSetupComplete_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetupComplete_IEs_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_guami_Type_4;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetupComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetupComplete_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetupComplete_IEs_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetupComplete_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetupComplete.c b/src/codec_utils/RRC/RRCSetupComplete.c
new file mode 100644 (file)
index 0000000..23b25cc
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetupComplete.h"
+
+#include "RRCSetupComplete-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct RRCSetupComplete__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCSetupComplete__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCSetupComplete__criticalExtensions, choice.rrcSetupComplete),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetupComplete_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetupComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCSetupComplete__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcSetupComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct RRCSetupComplete__criticalExtensions),
+       offsetof(struct RRCSetupComplete__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCSetupComplete__criticalExtensions, present),
+       sizeof(((struct RRCSetupComplete__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCSetupComplete_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupComplete, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSetupComplete_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetupComplete_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetupComplete_specs_1 = {
+       sizeof(struct RRCSetupComplete),
+       offsetof(struct RRCSetupComplete, _asn_ctx),
+       asn_MAP_RRCSetupComplete_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSetupComplete = {
+       "RRCSetupComplete",
+       "RRCSetupComplete",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetupComplete_tags_1,
+       sizeof(asn_DEF_RRCSetupComplete_tags_1)
+               /sizeof(asn_DEF_RRCSetupComplete_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetupComplete_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RRCSetupComplete_tags_1)
+               /sizeof(asn_DEF_RRCSetupComplete_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetupComplete_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCSetupComplete_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetupComplete.h b/src/codec_utils/RRC/RRCSetupComplete.h
new file mode 100644 (file)
index 0000000..89e83e4
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetupComplete_H_
+#define        _RRCSetupComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCSetupComplete__criticalExtensions_PR {
+       RRCSetupComplete__criticalExtensions_PR_NOTHING,        /* No components present */
+       RRCSetupComplete__criticalExtensions_PR_rrcSetupComplete,
+       RRCSetupComplete__criticalExtensions_PR_criticalExtensionsFuture
+} RRCSetupComplete__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCSetupComplete_IEs;
+
+/* RRCSetupComplete */
+typedef struct RRCSetupComplete {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct RRCSetupComplete__criticalExtensions {
+               RRCSetupComplete__criticalExtensions_PR present;
+               union RRCSetupComplete__criticalExtensions_u {
+                       struct RRCSetupComplete_IEs     *rrcSetupComplete;
+                       struct RRCSetupComplete__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetupComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetupComplete;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetupComplete_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetupComplete_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetupComplete_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetupRequest-IEs.c b/src/codec_utils/RRC/RRCSetupRequest-IEs.c
new file mode 100644 (file)
index 0000000..6566e2b
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetupRequest-IEs.h"
+
+static int
+memb_spare_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 == 1)) {
+               /* 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_spare_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  1,  1 }        /* (SIZE(1..1)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCSetupRequest_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupRequest_IEs, ue_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_InitialUE_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupRequest_IEs, establishmentCause),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EstablishmentCause,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "establishmentCause"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupRequest_IEs, spare),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_4, &asn_PER_memb_spare_constr_4,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSetupRequest_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetupRequest_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* establishmentCause */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetupRequest_IEs_specs_1 = {
+       sizeof(struct RRCSetupRequest_IEs),
+       offsetof(struct RRCSetupRequest_IEs, _asn_ctx),
+       asn_MAP_RRCSetupRequest_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSetupRequest_IEs = {
+       "RRCSetupRequest-IEs",
+       "RRCSetupRequest-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetupRequest_IEs_tags_1,
+       sizeof(asn_DEF_RRCSetupRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetupRequest_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetupRequest_IEs_tags_1,     /* Same as above */
+       sizeof(asn_DEF_RRCSetupRequest_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSetupRequest_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetupRequest_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_RRCSetupRequest_IEs_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetupRequest-IEs.h b/src/codec_utils/RRC/RRCSetupRequest-IEs.h
new file mode 100644 (file)
index 0000000..5f749ca
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetupRequest_IEs_H_
+#define        _RRCSetupRequest_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "InitialUE-Identity.h"
+#include "EstablishmentCause.h"
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCSetupRequest-IEs */
+typedef struct RRCSetupRequest_IEs {
+       InitialUE_Identity_t     ue_Identity;
+       EstablishmentCause_t     establishmentCause;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetupRequest_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetupRequest_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetupRequest_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetupRequest_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetupRequest_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSetupRequest.c b/src/codec_utils/RRC/RRCSetupRequest.c
new file mode 100644 (file)
index 0000000..a421316
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSetupRequest.h"
+
+asn_TYPE_member_t asn_MBR_RRCSetupRequest_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSetupRequest, rrcSetupRequest),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetupRequest_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetupRequest"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSetupRequest_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSetupRequest_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* rrcSetupRequest */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSetupRequest_specs_1 = {
+       sizeof(struct RRCSetupRequest),
+       offsetof(struct RRCSetupRequest, _asn_ctx),
+       asn_MAP_RRCSetupRequest_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_RRCSetupRequest = {
+       "RRCSetupRequest",
+       "RRCSetupRequest",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSetupRequest_tags_1,
+       sizeof(asn_DEF_RRCSetupRequest_tags_1)
+               /sizeof(asn_DEF_RRCSetupRequest_tags_1[0]), /* 1 */
+       asn_DEF_RRCSetupRequest_tags_1, /* Same as above */
+       sizeof(asn_DEF_RRCSetupRequest_tags_1)
+               /sizeof(asn_DEF_RRCSetupRequest_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSetupRequest_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCSetupRequest_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSetupRequest.h b/src/codec_utils/RRC/RRCSetupRequest.h
new file mode 100644 (file)
index 0000000..0b18c91
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSetupRequest_H_
+#define        _RRCSetupRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRCSetupRequest-IEs.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCSetupRequest */
+typedef struct RRCSetupRequest {
+       RRCSetupRequest_IEs_t    rrcSetupRequest;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSetupRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSetupRequest;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSetupRequest_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSetupRequest_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSetupRequest_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.c b/src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.c
new file mode 100644 (file)
index 0000000..4d3a333
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSystemInfoRequest-r15-IEs.h"
+
+static int
+memb_requested_SI_List_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 == 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 int
+memb_spare_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 == 12)) {
+               /* 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_requested_SI_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_requested_SI_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_spare_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       12      /* (SIZE(12..12)) */};
+static asn_per_constraints_t asn_PER_memb_spare_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  12,  12 }      /* (SIZE(12..12)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_RRCSystemInfoRequest_r15_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSystemInfoRequest_r15_IEs, requested_SI_List),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_requested_SI_List_constr_2, &asn_PER_memb_requested_SI_List_constr_2,  memb_requested_SI_List_constraint_1 },
+               0, 0, /* No default value */
+               "requested-SI-List"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSystemInfoRequest_r15_IEs, spare),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_spare_constr_3, &asn_PER_memb_spare_constr_3,  memb_spare_constraint_1 },
+               0, 0, /* No default value */
+               "spare"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSystemInfoRequest_r15_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* requested-SI-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* spare */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSystemInfoRequest_r15_IEs_specs_1 = {
+       sizeof(struct RRCSystemInfoRequest_r15_IEs),
+       offsetof(struct RRCSystemInfoRequest_r15_IEs, _asn_ctx),
+       asn_MAP_RRCSystemInfoRequest_r15_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRCSystemInfoRequest_r15_IEs = {
+       "RRCSystemInfoRequest-r15-IEs",
+       "RRCSystemInfoRequest-r15-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1,
+       sizeof(asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1[0]), /* 1 */
+       asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1)
+               /sizeof(asn_DEF_RRCSystemInfoRequest_r15_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSystemInfoRequest_r15_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_RRCSystemInfoRequest_r15_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.h b/src/codec_utils/RRC/RRCSystemInfoRequest-r15-IEs.h
new file mode 100644 (file)
index 0000000..2282a74
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSystemInfoRequest_r15_IEs_H_
+#define        _RRCSystemInfoRequest_r15_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RRCSystemInfoRequest-r15-IEs */
+typedef struct RRCSystemInfoRequest_r15_IEs {
+       BIT_STRING_t     requested_SI_List;
+       BIT_STRING_t     spare;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSystemInfoRequest_r15_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSystemInfoRequest_r15_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSystemInfoRequest_r15_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSystemInfoRequest_r15_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSystemInfoRequest_r15_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRCSystemInfoRequest.c b/src/codec_utils/RRC/RRCSystemInfoRequest.c
new file mode 100644 (file)
index 0000000..6caed83
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRCSystemInfoRequest.h"
+
+#include "RRCSystemInfoRequest-r15-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct RRCSystemInfoRequest__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct RRCSystemInfoRequest__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct RRCSystemInfoRequest__criticalExtensions, choice.rrcSystemInfoRequest_r15),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSystemInfoRequest_r15_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSystemInfoRequest-r15"
+               },
+       { ATF_POINTER, 0, offsetof(struct RRCSystemInfoRequest__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcSystemInfoRequest-r15 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct RRCSystemInfoRequest__criticalExtensions),
+       offsetof(struct RRCSystemInfoRequest__criticalExtensions, _asn_ctx),
+       offsetof(struct RRCSystemInfoRequest__criticalExtensions, present),
+       sizeof(((struct RRCSystemInfoRequest__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRCSystemInfoRequest_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RRCSystemInfoRequest, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RRCSystemInfoRequest_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRCSystemInfoRequest_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRCSystemInfoRequest_specs_1 = {
+       sizeof(struct RRCSystemInfoRequest),
+       offsetof(struct RRCSystemInfoRequest, _asn_ctx),
+       asn_MAP_RRCSystemInfoRequest_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_RRCSystemInfoRequest = {
+       "RRCSystemInfoRequest",
+       "RRCSystemInfoRequest",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRCSystemInfoRequest_tags_1,
+       sizeof(asn_DEF_RRCSystemInfoRequest_tags_1)
+               /sizeof(asn_DEF_RRCSystemInfoRequest_tags_1[0]), /* 1 */
+       asn_DEF_RRCSystemInfoRequest_tags_1,    /* Same as above */
+       sizeof(asn_DEF_RRCSystemInfoRequest_tags_1)
+               /sizeof(asn_DEF_RRCSystemInfoRequest_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRCSystemInfoRequest_1,
+       1,      /* Elements count */
+       &asn_SPC_RRCSystemInfoRequest_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRCSystemInfoRequest.h b/src/codec_utils/RRC/RRCSystemInfoRequest.h
new file mode 100644 (file)
index 0000000..b307047
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRCSystemInfoRequest_H_
+#define        _RRCSystemInfoRequest_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRCSystemInfoRequest__criticalExtensions_PR {
+       RRCSystemInfoRequest__criticalExtensions_PR_NOTHING,    /* No components present */
+       RRCSystemInfoRequest__criticalExtensions_PR_rrcSystemInfoRequest_r15,
+       RRCSystemInfoRequest__criticalExtensions_PR_criticalExtensionsFuture
+} RRCSystemInfoRequest__criticalExtensions_PR;
+
+/* Forward declarations */
+struct RRCSystemInfoRequest_r15_IEs;
+
+/* RRCSystemInfoRequest */
+typedef struct RRCSystemInfoRequest {
+       struct RRCSystemInfoRequest__criticalExtensions {
+               RRCSystemInfoRequest__criticalExtensions_PR present;
+               union RRCSystemInfoRequest__criticalExtensions_u {
+                       struct RRCSystemInfoRequest_r15_IEs     *rrcSystemInfoRequest_r15;
+                       struct RRCSystemInfoRequest__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRCSystemInfoRequest_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RRCSystemInfoRequest;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRCSystemInfoRequest_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRCSystemInfoRequest_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRCSystemInfoRequest_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RRM-Config.c b/src/codec_utils/RRC/RRM-Config.c
new file mode 100644 (file)
index 0000000..2b44c61
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RRM-Config.h"
+
+#include "MeasResultList2NR.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ue_InactiveTime_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ue_InactiveTime_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ue_InactiveTime_value2enum_2[] = {
+       { 0,    2,      "s1" },
+       { 1,    2,      "s2" },
+       { 2,    2,      "s3" },
+       { 3,    2,      "s5" },
+       { 4,    2,      "s7" },
+       { 5,    3,      "s10" },
+       { 6,    3,      "s15" },
+       { 7,    3,      "s20" },
+       { 8,    3,      "s25" },
+       { 9,    3,      "s30" },
+       { 10,   3,      "s40" },
+       { 11,   3,      "s50" },
+       { 12,   4,      "min1" },
+       { 13,   7,      "min1s20" },
+       { 14,   7,      "min1s40" },
+       { 15,   4,      "min2" },
+       { 16,   7,      "min2s30" },
+       { 17,   4,      "min3" },
+       { 18,   7,      "min3s30" },
+       { 19,   4,      "min4" },
+       { 20,   4,      "min5" },
+       { 21,   4,      "min6" },
+       { 22,   4,      "min7" },
+       { 23,   4,      "min8" },
+       { 24,   4,      "min9" },
+       { 25,   5,      "min10" },
+       { 26,   5,      "min12" },
+       { 27,   5,      "min14" },
+       { 28,   5,      "min17" },
+       { 29,   5,      "min20" },
+       { 30,   5,      "min24" },
+       { 31,   5,      "min28" },
+       { 32,   5,      "min33" },
+       { 33,   5,      "min38" },
+       { 34,   5,      "min44" },
+       { 35,   5,      "min50" },
+       { 36,   3,      "hr1" },
+       { 37,   8,      "hr1min30" },
+       { 38,   3,      "hr2" },
+       { 39,   8,      "hr2min30" },
+       { 40,   3,      "hr3" },
+       { 41,   8,      "hr3min30" },
+       { 42,   3,      "hr4" },
+       { 43,   3,      "hr5" },
+       { 44,   3,      "hr6" },
+       { 45,   3,      "hr8" },
+       { 46,   4,      "hr10" },
+       { 47,   4,      "hr13" },
+       { 48,   4,      "hr16" },
+       { 49,   4,      "hr20" },
+       { 50,   4,      "day1" },
+       { 51,   8,      "day1hr12" },
+       { 52,   4,      "day2" },
+       { 53,   8,      "day2hr12" },
+       { 54,   4,      "day3" },
+       { 55,   4,      "day4" },
+       { 56,   4,      "day5" },
+       { 57,   4,      "day7" },
+       { 58,   5,      "day10" },
+       { 59,   5,      "day14" },
+       { 60,   5,      "day19" },
+       { 61,   5,      "day24" },
+       { 62,   5,      "day30" },
+       { 63,   13,     "dayMoreThan30" }
+};
+static const unsigned int asn_MAP_ue_InactiveTime_enum2value_2[] = {
+       50,     /* day1(50) */
+       58,     /* day10(58) */
+       59,     /* day14(59) */
+       60,     /* day19(60) */
+       51,     /* day1hr12(51) */
+       52,     /* day2(52) */
+       61,     /* day24(61) */
+       53,     /* day2hr12(53) */
+       54,     /* day3(54) */
+       62,     /* day30(62) */
+       55,     /* day4(55) */
+       56,     /* day5(56) */
+       57,     /* day7(57) */
+       63,     /* dayMoreThan30(63) */
+       36,     /* hr1(36) */
+       46,     /* hr10(46) */
+       47,     /* hr13(47) */
+       48,     /* hr16(48) */
+       37,     /* hr1min30(37) */
+       38,     /* hr2(38) */
+       49,     /* hr20(49) */
+       39,     /* hr2min30(39) */
+       40,     /* hr3(40) */
+       41,     /* hr3min30(41) */
+       42,     /* hr4(42) */
+       43,     /* hr5(43) */
+       44,     /* hr6(44) */
+       45,     /* hr8(45) */
+       12,     /* min1(12) */
+       25,     /* min10(25) */
+       26,     /* min12(26) */
+       27,     /* min14(27) */
+       28,     /* min17(28) */
+       13,     /* min1s20(13) */
+       14,     /* min1s40(14) */
+       15,     /* min2(15) */
+       29,     /* min20(29) */
+       30,     /* min24(30) */
+       31,     /* min28(31) */
+       16,     /* min2s30(16) */
+       17,     /* min3(17) */
+       32,     /* min33(32) */
+       33,     /* min38(33) */
+       18,     /* min3s30(18) */
+       19,     /* min4(19) */
+       34,     /* min44(34) */
+       20,     /* min5(20) */
+       35,     /* min50(35) */
+       21,     /* min6(21) */
+       22,     /* min7(22) */
+       23,     /* min8(23) */
+       24,     /* min9(24) */
+       0,      /* s1(0) */
+       5,      /* s10(5) */
+       6,      /* s15(6) */
+       1,      /* s2(1) */
+       7,      /* s20(7) */
+       8,      /* s25(8) */
+       2,      /* s3(2) */
+       9,      /* s30(9) */
+       10,     /* s40(10) */
+       3,      /* s5(3) */
+       11,     /* s50(11) */
+       4       /* s7(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ue_InactiveTime_specs_2 = {
+       asn_MAP_ue_InactiveTime_value2enum_2,   /* "tag" => N; sorted by tag */
+       asn_MAP_ue_InactiveTime_enum2value_2,   /* N => "tag"; sorted by N */
+       64,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ue_InactiveTime_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_ue_InactiveTime_2 = {
+       "ue-InactiveTime",
+       "ue-InactiveTime",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ue_InactiveTime_tags_2,
+       sizeof(asn_DEF_ue_InactiveTime_tags_2)
+               /sizeof(asn_DEF_ue_InactiveTime_tags_2[0]) - 1, /* 1 */
+       asn_DEF_ue_InactiveTime_tags_2, /* Same as above */
+       sizeof(asn_DEF_ue_InactiveTime_tags_2)
+               /sizeof(asn_DEF_ue_InactiveTime_tags_2[0]), /* 2 */
+       { &asn_OER_type_ue_InactiveTime_constr_2, &asn_PER_type_ue_InactiveTime_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ue_InactiveTime_specs_2        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RRM_Config_1[] = {
+       { ATF_POINTER, 2, offsetof(struct RRM_Config, ue_InactiveTime),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ue_InactiveTime_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-InactiveTime"
+               },
+       { ATF_POINTER, 1, offsetof(struct RRM_Config, candidateCellInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasResultList2NR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "candidateCellInfoList"
+               },
+};
+static const int asn_MAP_RRM_Config_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_RRM_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RRM_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-InactiveTime */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* candidateCellInfoList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RRM_Config_specs_1 = {
+       sizeof(struct RRM_Config),
+       offsetof(struct RRM_Config, _asn_ctx),
+       asn_MAP_RRM_Config_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RRM_Config_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RRM_Config = {
+       "RRM-Config",
+       "RRM-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RRM_Config_tags_1,
+       sizeof(asn_DEF_RRM_Config_tags_1)
+               /sizeof(asn_DEF_RRM_Config_tags_1[0]), /* 1 */
+       asn_DEF_RRM_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RRM_Config_tags_1)
+               /sizeof(asn_DEF_RRM_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RRM_Config_1,
+       2,      /* Elements count */
+       &asn_SPC_RRM_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RRM-Config.h b/src/codec_utils/RRC/RRM-Config.h
new file mode 100644 (file)
index 0000000..344b281
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RRM_Config_H_
+#define        _RRM_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RRM_Config__ue_InactiveTime {
+       RRM_Config__ue_InactiveTime_s1  = 0,
+       RRM_Config__ue_InactiveTime_s2  = 1,
+       RRM_Config__ue_InactiveTime_s3  = 2,
+       RRM_Config__ue_InactiveTime_s5  = 3,
+       RRM_Config__ue_InactiveTime_s7  = 4,
+       RRM_Config__ue_InactiveTime_s10 = 5,
+       RRM_Config__ue_InactiveTime_s15 = 6,
+       RRM_Config__ue_InactiveTime_s20 = 7,
+       RRM_Config__ue_InactiveTime_s25 = 8,
+       RRM_Config__ue_InactiveTime_s30 = 9,
+       RRM_Config__ue_InactiveTime_s40 = 10,
+       RRM_Config__ue_InactiveTime_s50 = 11,
+       RRM_Config__ue_InactiveTime_min1        = 12,
+       RRM_Config__ue_InactiveTime_min1s20     = 13,
+       RRM_Config__ue_InactiveTime_min1s40     = 14,
+       RRM_Config__ue_InactiveTime_min2        = 15,
+       RRM_Config__ue_InactiveTime_min2s30     = 16,
+       RRM_Config__ue_InactiveTime_min3        = 17,
+       RRM_Config__ue_InactiveTime_min3s30     = 18,
+       RRM_Config__ue_InactiveTime_min4        = 19,
+       RRM_Config__ue_InactiveTime_min5        = 20,
+       RRM_Config__ue_InactiveTime_min6        = 21,
+       RRM_Config__ue_InactiveTime_min7        = 22,
+       RRM_Config__ue_InactiveTime_min8        = 23,
+       RRM_Config__ue_InactiveTime_min9        = 24,
+       RRM_Config__ue_InactiveTime_min10       = 25,
+       RRM_Config__ue_InactiveTime_min12       = 26,
+       RRM_Config__ue_InactiveTime_min14       = 27,
+       RRM_Config__ue_InactiveTime_min17       = 28,
+       RRM_Config__ue_InactiveTime_min20       = 29,
+       RRM_Config__ue_InactiveTime_min24       = 30,
+       RRM_Config__ue_InactiveTime_min28       = 31,
+       RRM_Config__ue_InactiveTime_min33       = 32,
+       RRM_Config__ue_InactiveTime_min38       = 33,
+       RRM_Config__ue_InactiveTime_min44       = 34,
+       RRM_Config__ue_InactiveTime_min50       = 35,
+       RRM_Config__ue_InactiveTime_hr1 = 36,
+       RRM_Config__ue_InactiveTime_hr1min30    = 37,
+       RRM_Config__ue_InactiveTime_hr2 = 38,
+       RRM_Config__ue_InactiveTime_hr2min30    = 39,
+       RRM_Config__ue_InactiveTime_hr3 = 40,
+       RRM_Config__ue_InactiveTime_hr3min30    = 41,
+       RRM_Config__ue_InactiveTime_hr4 = 42,
+       RRM_Config__ue_InactiveTime_hr5 = 43,
+       RRM_Config__ue_InactiveTime_hr6 = 44,
+       RRM_Config__ue_InactiveTime_hr8 = 45,
+       RRM_Config__ue_InactiveTime_hr10        = 46,
+       RRM_Config__ue_InactiveTime_hr13        = 47,
+       RRM_Config__ue_InactiveTime_hr16        = 48,
+       RRM_Config__ue_InactiveTime_hr20        = 49,
+       RRM_Config__ue_InactiveTime_day1        = 50,
+       RRM_Config__ue_InactiveTime_day1hr12    = 51,
+       RRM_Config__ue_InactiveTime_day2        = 52,
+       RRM_Config__ue_InactiveTime_day2hr12    = 53,
+       RRM_Config__ue_InactiveTime_day3        = 54,
+       RRM_Config__ue_InactiveTime_day4        = 55,
+       RRM_Config__ue_InactiveTime_day5        = 56,
+       RRM_Config__ue_InactiveTime_day7        = 57,
+       RRM_Config__ue_InactiveTime_day10       = 58,
+       RRM_Config__ue_InactiveTime_day14       = 59,
+       RRM_Config__ue_InactiveTime_day19       = 60,
+       RRM_Config__ue_InactiveTime_day24       = 61,
+       RRM_Config__ue_InactiveTime_day30       = 62,
+       RRM_Config__ue_InactiveTime_dayMoreThan30       = 63
+} e_RRM_Config__ue_InactiveTime;
+
+/* Forward declarations */
+struct MeasResultList2NR;
+
+/* RRM-Config */
+typedef struct RRM_Config {
+       long    *ue_InactiveTime;       /* OPTIONAL */
+       struct MeasResultList2NR        *candidateCellInfoList; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RRM_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ue_InactiveTime_2;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RRM_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_RRM_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_RRM_Config_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RRM_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RSRP-Range.c b/src/codec_utils/RRC/RSRP-Range.c
new file mode 100644 (file)
index 0000000..f7fc7cc
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RSRP-Range.h"
+
+int
+RSRP_Range_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 <= 127)) {
+               /* 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_RSRP_Range_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RSRP_Range_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RSRP_Range = {
+       "RSRP-Range",
+       "RSRP-Range",
+       &asn_OP_NativeInteger,
+       asn_DEF_RSRP_Range_tags_1,
+       sizeof(asn_DEF_RSRP_Range_tags_1)
+               /sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
+       asn_DEF_RSRP_Range_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RSRP_Range_tags_1)
+               /sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
+       { &asn_OER_type_RSRP_Range_constr_1, &asn_PER_type_RSRP_Range_constr_1, RSRP_Range_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RSRP-Range.h b/src/codec_utils/RRC/RSRP-Range.h
new file mode 100644 (file)
index 0000000..83f6c67
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RSRP_Range_H_
+#define        _RSRP_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRP-Range */
+typedef long    RSRP_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRP_Range;
+asn_struct_free_f RSRP_Range_free;
+asn_struct_print_f RSRP_Range_print;
+asn_constr_check_f RSRP_Range_constraint;
+ber_type_decoder_f RSRP_Range_decode_ber;
+der_type_encoder_f RSRP_Range_encode_der;
+xer_type_decoder_f RSRP_Range_decode_xer;
+xer_type_encoder_f RSRP_Range_encode_xer;
+oer_type_decoder_f RSRP_Range_decode_oer;
+oer_type_encoder_f RSRP_Range_encode_oer;
+per_type_decoder_f RSRP_Range_decode_uper;
+per_type_encoder_f RSRP_Range_encode_uper;
+per_type_decoder_f RSRP_Range_decode_aper;
+per_type_encoder_f RSRP_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RSRP_Range_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RSRP-RangeEUTRA.c b/src/codec_utils/RRC/RSRP-RangeEUTRA.c
new file mode 100644 (file)
index 0000000..20a5788
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RSRP-RangeEUTRA.h"
+
+int
+RSRP_RangeEUTRA_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 <= 97)) {
+               /* 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_RSRP_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..97) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RSRP_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  97 }       /* (0..97) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RSRP_RangeEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RSRP_RangeEUTRA = {
+       "RSRP-RangeEUTRA",
+       "RSRP-RangeEUTRA",
+       &asn_OP_NativeInteger,
+       asn_DEF_RSRP_RangeEUTRA_tags_1,
+       sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_RSRP_RangeEUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_RSRP_RangeEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_RSRP_RangeEUTRA_constr_1, &asn_PER_type_RSRP_RangeEUTRA_constr_1, RSRP_RangeEUTRA_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RSRP-RangeEUTRA.h b/src/codec_utils/RRC/RSRP-RangeEUTRA.h
new file mode 100644 (file)
index 0000000..0f0b36a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RSRP_RangeEUTRA_H_
+#define        _RSRP_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRP-RangeEUTRA */
+typedef long    RSRP_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRP_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRP_RangeEUTRA;
+asn_struct_free_f RSRP_RangeEUTRA_free;
+asn_struct_print_f RSRP_RangeEUTRA_print;
+asn_constr_check_f RSRP_RangeEUTRA_constraint;
+ber_type_decoder_f RSRP_RangeEUTRA_decode_ber;
+der_type_encoder_f RSRP_RangeEUTRA_encode_der;
+xer_type_decoder_f RSRP_RangeEUTRA_decode_xer;
+xer_type_encoder_f RSRP_RangeEUTRA_encode_xer;
+oer_type_decoder_f RSRP_RangeEUTRA_decode_oer;
+oer_type_encoder_f RSRP_RangeEUTRA_encode_oer;
+per_type_decoder_f RSRP_RangeEUTRA_decode_uper;
+per_type_encoder_f RSRP_RangeEUTRA_encode_uper;
+per_type_decoder_f RSRP_RangeEUTRA_decode_aper;
+per_type_encoder_f RSRP_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RSRP_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RSRQ-Range.c b/src/codec_utils/RRC/RSRQ-Range.c
new file mode 100644 (file)
index 0000000..a50c526
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RSRQ-Range.h"
+
+int
+RSRQ_Range_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 <= 127)) {
+               /* 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_RSRQ_Range_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RSRQ_Range_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RSRQ_Range_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RSRQ_Range = {
+       "RSRQ-Range",
+       "RSRQ-Range",
+       &asn_OP_NativeInteger,
+       asn_DEF_RSRQ_Range_tags_1,
+       sizeof(asn_DEF_RSRQ_Range_tags_1)
+               /sizeof(asn_DEF_RSRQ_Range_tags_1[0]), /* 1 */
+       asn_DEF_RSRQ_Range_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RSRQ_Range_tags_1)
+               /sizeof(asn_DEF_RSRQ_Range_tags_1[0]), /* 1 */
+       { &asn_OER_type_RSRQ_Range_constr_1, &asn_PER_type_RSRQ_Range_constr_1, RSRQ_Range_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RSRQ-Range.h b/src/codec_utils/RRC/RSRQ-Range.h
new file mode 100644 (file)
index 0000000..707ee8f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RSRQ_Range_H_
+#define        _RSRQ_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRQ-Range */
+typedef long    RSRQ_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRQ_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRQ_Range;
+asn_struct_free_f RSRQ_Range_free;
+asn_struct_print_f RSRQ_Range_print;
+asn_constr_check_f RSRQ_Range_constraint;
+ber_type_decoder_f RSRQ_Range_decode_ber;
+der_type_encoder_f RSRQ_Range_encode_der;
+xer_type_decoder_f RSRQ_Range_decode_xer;
+xer_type_encoder_f RSRQ_Range_encode_xer;
+oer_type_decoder_f RSRQ_Range_decode_oer;
+oer_type_encoder_f RSRQ_Range_encode_oer;
+per_type_decoder_f RSRQ_Range_decode_uper;
+per_type_encoder_f RSRQ_Range_encode_uper;
+per_type_decoder_f RSRQ_Range_decode_aper;
+per_type_encoder_f RSRQ_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RSRQ_Range_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RSRQ-RangeEUTRA.c b/src/codec_utils/RRC/RSRQ-RangeEUTRA.c
new file mode 100644 (file)
index 0000000..2fcaac6
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RSRQ-RangeEUTRA.h"
+
+int
+RSRQ_RangeEUTRA_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 <= 34)) {
+               /* 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_RSRQ_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..34) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RSRQ_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  34 }       /* (0..34) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RSRQ_RangeEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RSRQ_RangeEUTRA = {
+       "RSRQ-RangeEUTRA",
+       "RSRQ-RangeEUTRA",
+       &asn_OP_NativeInteger,
+       asn_DEF_RSRQ_RangeEUTRA_tags_1,
+       sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_RSRQ_RangeEUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_RSRQ_RangeEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_RSRQ_RangeEUTRA_constr_1, &asn_PER_type_RSRQ_RangeEUTRA_constr_1, RSRQ_RangeEUTRA_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RSRQ-RangeEUTRA.h b/src/codec_utils/RRC/RSRQ-RangeEUTRA.h
new file mode 100644 (file)
index 0000000..4f8a1eb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RSRQ_RangeEUTRA_H_
+#define        _RSRQ_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RSRQ-RangeEUTRA */
+typedef long    RSRQ_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RSRQ_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RSRQ_RangeEUTRA;
+asn_struct_free_f RSRQ_RangeEUTRA_free;
+asn_struct_print_f RSRQ_RangeEUTRA_print;
+asn_constr_check_f RSRQ_RangeEUTRA_constraint;
+ber_type_decoder_f RSRQ_RangeEUTRA_decode_ber;
+der_type_encoder_f RSRQ_RangeEUTRA_encode_der;
+xer_type_decoder_f RSRQ_RangeEUTRA_decode_xer;
+xer_type_encoder_f RSRQ_RangeEUTRA_encode_xer;
+oer_type_decoder_f RSRQ_RangeEUTRA_decode_oer;
+oer_type_encoder_f RSRQ_RangeEUTRA_encode_oer;
+per_type_decoder_f RSRQ_RangeEUTRA_decode_uper;
+per_type_encoder_f RSRQ_RangeEUTRA_encode_uper;
+per_type_decoder_f RSRQ_RangeEUTRA_decode_aper;
+per_type_encoder_f RSRQ_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RSRQ_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RadioBearerConfig.c b/src/codec_utils/RRC/RadioBearerConfig.c
new file mode 100644 (file)
index 0000000..4b95d16
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RadioBearerConfig.h"
+
+#include "SRB-ToAddModList.h"
+#include "DRB-ToAddModList.h"
+#include "DRB-ToReleaseList.h"
+#include "SecurityConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_srb3_ToRelease_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srb3_ToRelease_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srb3_ToRelease_value2enum_3[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_srb3_ToRelease_enum2value_3[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_srb3_ToRelease_specs_3 = {
+       asn_MAP_srb3_ToRelease_value2enum_3,    /* "tag" => N; sorted by tag */
+       asn_MAP_srb3_ToRelease_enum2value_3,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_srb3_ToRelease_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_srb3_ToRelease_3 = {
+       "srb3-ToRelease",
+       "srb3-ToRelease",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_srb3_ToRelease_tags_3,
+       sizeof(asn_DEF_srb3_ToRelease_tags_3)
+               /sizeof(asn_DEF_srb3_ToRelease_tags_3[0]) - 1, /* 1 */
+       asn_DEF_srb3_ToRelease_tags_3,  /* Same as above */
+       sizeof(asn_DEF_srb3_ToRelease_tags_3)
+               /sizeof(asn_DEF_srb3_ToRelease_tags_3[0]), /* 2 */
+       { &asn_OER_type_srb3_ToRelease_constr_3, &asn_PER_type_srb3_ToRelease_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_srb3_ToRelease_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RadioBearerConfig_1[] = {
+       { ATF_POINTER, 5, offsetof(struct RadioBearerConfig, srb_ToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRB_ToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srb-ToAddModList"
+               },
+       { ATF_POINTER, 4, offsetof(struct RadioBearerConfig, srb3_ToRelease),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_srb3_ToRelease_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srb3-ToRelease"
+               },
+       { ATF_POINTER, 3, offsetof(struct RadioBearerConfig, drb_ToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_ToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-ToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct RadioBearerConfig, drb_ToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DRB_ToReleaseList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "drb-ToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct RadioBearerConfig, securityConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityConfig"
+               },
+};
+static const int asn_MAP_RadioBearerConfig_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_RadioBearerConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RadioBearerConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srb-ToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srb3-ToRelease */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* drb-ToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* drb-ToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* securityConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RadioBearerConfig_specs_1 = {
+       sizeof(struct RadioBearerConfig),
+       offsetof(struct RadioBearerConfig, _asn_ctx),
+       asn_MAP_RadioBearerConfig_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_RadioBearerConfig_oms_1,        /* Optional members */
+       5, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RadioBearerConfig = {
+       "RadioBearerConfig",
+       "RadioBearerConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RadioBearerConfig_tags_1,
+       sizeof(asn_DEF_RadioBearerConfig_tags_1)
+               /sizeof(asn_DEF_RadioBearerConfig_tags_1[0]), /* 1 */
+       asn_DEF_RadioBearerConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RadioBearerConfig_tags_1)
+               /sizeof(asn_DEF_RadioBearerConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RadioBearerConfig_1,
+       5,      /* Elements count */
+       &asn_SPC_RadioBearerConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RadioBearerConfig.h b/src/codec_utils/RRC/RadioBearerConfig.h
new file mode 100644 (file)
index 0000000..fd763aa
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RadioBearerConfig_H_
+#define        _RadioBearerConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RadioBearerConfig__srb3_ToRelease {
+       RadioBearerConfig__srb3_ToRelease_true  = 0
+} e_RadioBearerConfig__srb3_ToRelease;
+
+/* Forward declarations */
+struct SRB_ToAddModList;
+struct DRB_ToAddModList;
+struct DRB_ToReleaseList;
+struct SecurityConfig;
+
+/* RadioBearerConfig */
+typedef struct RadioBearerConfig {
+       struct SRB_ToAddModList *srb_ToAddModList;      /* OPTIONAL */
+       long    *srb3_ToRelease;        /* OPTIONAL */
+       struct DRB_ToAddModList *drb_ToAddModList;      /* OPTIONAL */
+       struct DRB_ToReleaseList        *drb_ToReleaseList;     /* OPTIONAL */
+       struct SecurityConfig   *securityConfig;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RadioBearerConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_srb3_ToRelease_3;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RadioBearerConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_RadioBearerConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_RadioBearerConfig_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RadioBearerConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringConfig.c b/src/codec_utils/RRC/RadioLinkMonitoringConfig.c
new file mode 100644 (file)
index 0000000..236ac2c
--- /dev/null
@@ -0,0 +1,363 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RadioLinkMonitoringConfig.h"
+
+#include "RadioLinkMonitoringRS.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.
+ */
+static int
+memb_failureDetectionResourcesToAddModList_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 <= 10)) {
+               /* 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_failureDetectionResourcesToReleaseList_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 <= 10)) {
+               /* 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_failureDetectionResourcesToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_type_failureDetectionResourcesToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_failureDetectionResourcesToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_type_failureDetectionResourcesToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_beamFailureInstanceMaxCount_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_beamFailureInstanceMaxCount_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_beamFailureDetectionTimer_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_beamFailureDetectionTimer_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_failureDetectionResourcesToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_memb_failureDetectionResourcesToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_failureDetectionResourcesToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..10)) */};
+static asn_per_constraints_t asn_PER_memb_failureDetectionResourcesToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  10 }       /* (SIZE(1..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_failureDetectionResourcesToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RadioLinkMonitoringRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_failureDetectionResourcesToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_failureDetectionResourcesToAddModList_specs_2 = {
+       sizeof(struct RadioLinkMonitoringConfig__failureDetectionResourcesToAddModList),
+       offsetof(struct RadioLinkMonitoringConfig__failureDetectionResourcesToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_failureDetectionResourcesToAddModList_2 = {
+       "failureDetectionResourcesToAddModList",
+       "failureDetectionResourcesToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_failureDetectionResourcesToAddModList_tags_2,
+       sizeof(asn_DEF_failureDetectionResourcesToAddModList_tags_2)
+               /sizeof(asn_DEF_failureDetectionResourcesToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_failureDetectionResourcesToAddModList_tags_2,   /* Same as above */
+       sizeof(asn_DEF_failureDetectionResourcesToAddModList_tags_2)
+               /sizeof(asn_DEF_failureDetectionResourcesToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_failureDetectionResourcesToAddModList_constr_2, &asn_PER_type_failureDetectionResourcesToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_failureDetectionResourcesToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_failureDetectionResourcesToAddModList_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_failureDetectionResourcesToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_RadioLinkMonitoringRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_failureDetectionResourcesToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_failureDetectionResourcesToReleaseList_specs_4 = {
+       sizeof(struct RadioLinkMonitoringConfig__failureDetectionResourcesToReleaseList),
+       offsetof(struct RadioLinkMonitoringConfig__failureDetectionResourcesToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_failureDetectionResourcesToReleaseList_4 = {
+       "failureDetectionResourcesToReleaseList",
+       "failureDetectionResourcesToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_failureDetectionResourcesToReleaseList_tags_4,
+       sizeof(asn_DEF_failureDetectionResourcesToReleaseList_tags_4)
+               /sizeof(asn_DEF_failureDetectionResourcesToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_failureDetectionResourcesToReleaseList_tags_4,  /* Same as above */
+       sizeof(asn_DEF_failureDetectionResourcesToReleaseList_tags_4)
+               /sizeof(asn_DEF_failureDetectionResourcesToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_failureDetectionResourcesToReleaseList_constr_4, &asn_PER_type_failureDetectionResourcesToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_failureDetectionResourcesToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_failureDetectionResourcesToReleaseList_specs_4 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_beamFailureInstanceMaxCount_value2enum_6[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" },
+       { 4,    2,      "n5" },
+       { 5,    2,      "n6" },
+       { 6,    2,      "n8" },
+       { 7,    3,      "n10" }
+};
+static const unsigned int asn_MAP_beamFailureInstanceMaxCount_enum2value_6[] = {
+       0,      /* n1(0) */
+       7,      /* n10(7) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3,      /* n4(3) */
+       4,      /* n5(4) */
+       5,      /* n6(5) */
+       6       /* n8(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_beamFailureInstanceMaxCount_specs_6 = {
+       asn_MAP_beamFailureInstanceMaxCount_value2enum_6,       /* "tag" => N; sorted by tag */
+       asn_MAP_beamFailureInstanceMaxCount_enum2value_6,       /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_beamFailureInstanceMaxCount_tags_6[] = {
+       (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_beamFailureInstanceMaxCount_6 = {
+       "beamFailureInstanceMaxCount",
+       "beamFailureInstanceMaxCount",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_beamFailureInstanceMaxCount_tags_6,
+       sizeof(asn_DEF_beamFailureInstanceMaxCount_tags_6)
+               /sizeof(asn_DEF_beamFailureInstanceMaxCount_tags_6[0]) - 1, /* 1 */
+       asn_DEF_beamFailureInstanceMaxCount_tags_6,     /* Same as above */
+       sizeof(asn_DEF_beamFailureInstanceMaxCount_tags_6)
+               /sizeof(asn_DEF_beamFailureInstanceMaxCount_tags_6[0]), /* 2 */
+       { &asn_OER_type_beamFailureInstanceMaxCount_constr_6, &asn_PER_type_beamFailureInstanceMaxCount_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_beamFailureInstanceMaxCount_specs_6    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_beamFailureDetectionTimer_value2enum_15[] = {
+       { 0,    5,      "pbfd1" },
+       { 1,    5,      "pbfd2" },
+       { 2,    5,      "pbfd3" },
+       { 3,    5,      "pbfd4" },
+       { 4,    5,      "pbfd5" },
+       { 5,    5,      "pbfd6" },
+       { 6,    5,      "pbfd8" },
+       { 7,    6,      "pbfd10" }
+};
+static const unsigned int asn_MAP_beamFailureDetectionTimer_enum2value_15[] = {
+       0,      /* pbfd1(0) */
+       7,      /* pbfd10(7) */
+       1,      /* pbfd2(1) */
+       2,      /* pbfd3(2) */
+       3,      /* pbfd4(3) */
+       4,      /* pbfd5(4) */
+       5,      /* pbfd6(5) */
+       6       /* pbfd8(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_beamFailureDetectionTimer_specs_15 = {
+       asn_MAP_beamFailureDetectionTimer_value2enum_15,        /* "tag" => N; sorted by tag */
+       asn_MAP_beamFailureDetectionTimer_enum2value_15,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_beamFailureDetectionTimer_tags_15[] = {
+       (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_beamFailureDetectionTimer_15 = {
+       "beamFailureDetectionTimer",
+       "beamFailureDetectionTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_beamFailureDetectionTimer_tags_15,
+       sizeof(asn_DEF_beamFailureDetectionTimer_tags_15)
+               /sizeof(asn_DEF_beamFailureDetectionTimer_tags_15[0]) - 1, /* 1 */
+       asn_DEF_beamFailureDetectionTimer_tags_15,      /* Same as above */
+       sizeof(asn_DEF_beamFailureDetectionTimer_tags_15)
+               /sizeof(asn_DEF_beamFailureDetectionTimer_tags_15[0]), /* 2 */
+       { &asn_OER_type_beamFailureDetectionTimer_constr_15, &asn_PER_type_beamFailureDetectionTimer_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_beamFailureDetectionTimer_specs_15     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RadioLinkMonitoringConfig_1[] = {
+       { ATF_POINTER, 4, offsetof(struct RadioLinkMonitoringConfig, failureDetectionResourcesToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_failureDetectionResourcesToAddModList_2,
+               0,
+               { &asn_OER_memb_failureDetectionResourcesToAddModList_constr_2, &asn_PER_memb_failureDetectionResourcesToAddModList_constr_2,  memb_failureDetectionResourcesToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "failureDetectionResourcesToAddModList"
+               },
+       { ATF_POINTER, 3, offsetof(struct RadioLinkMonitoringConfig, failureDetectionResourcesToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_failureDetectionResourcesToReleaseList_4,
+               0,
+               { &asn_OER_memb_failureDetectionResourcesToReleaseList_constr_4, &asn_PER_memb_failureDetectionResourcesToReleaseList_constr_4,  memb_failureDetectionResourcesToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "failureDetectionResourcesToReleaseList"
+               },
+       { ATF_POINTER, 2, offsetof(struct RadioLinkMonitoringConfig, beamFailureInstanceMaxCount),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_beamFailureInstanceMaxCount_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamFailureInstanceMaxCount"
+               },
+       { ATF_POINTER, 1, offsetof(struct RadioLinkMonitoringConfig, beamFailureDetectionTimer),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_beamFailureDetectionTimer_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "beamFailureDetectionTimer"
+               },
+};
+static const int asn_MAP_RadioLinkMonitoringConfig_oms_1[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_RadioLinkMonitoringConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RadioLinkMonitoringConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* failureDetectionResourcesToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* failureDetectionResourcesToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* beamFailureInstanceMaxCount */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* beamFailureDetectionTimer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RadioLinkMonitoringConfig_specs_1 = {
+       sizeof(struct RadioLinkMonitoringConfig),
+       offsetof(struct RadioLinkMonitoringConfig, _asn_ctx),
+       asn_MAP_RadioLinkMonitoringConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_RadioLinkMonitoringConfig_oms_1,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RadioLinkMonitoringConfig = {
+       "RadioLinkMonitoringConfig",
+       "RadioLinkMonitoringConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RadioLinkMonitoringConfig_tags_1,
+       sizeof(asn_DEF_RadioLinkMonitoringConfig_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringConfig_tags_1[0]), /* 1 */
+       asn_DEF_RadioLinkMonitoringConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_RadioLinkMonitoringConfig_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RadioLinkMonitoringConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_RadioLinkMonitoringConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringConfig.h b/src/codec_utils/RRC/RadioLinkMonitoringConfig.h
new file mode 100644 (file)
index 0000000..770067c
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RadioLinkMonitoringConfig_H_
+#define        _RadioLinkMonitoringConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "RadioLinkMonitoringRS-Id.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RadioLinkMonitoringConfig__beamFailureInstanceMaxCount {
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n1       = 0,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n2       = 1,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n3       = 2,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n4       = 3,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n5       = 4,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n6       = 5,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n8       = 6,
+       RadioLinkMonitoringConfig__beamFailureInstanceMaxCount_n10      = 7
+} e_RadioLinkMonitoringConfig__beamFailureInstanceMaxCount;
+typedef enum RadioLinkMonitoringConfig__beamFailureDetectionTimer {
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd1      = 0,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd2      = 1,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd3      = 2,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd4      = 3,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd5      = 4,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd6      = 5,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd8      = 6,
+       RadioLinkMonitoringConfig__beamFailureDetectionTimer_pbfd10     = 7
+} e_RadioLinkMonitoringConfig__beamFailureDetectionTimer;
+
+/* Forward declarations */
+struct RadioLinkMonitoringRS;
+
+/* RadioLinkMonitoringConfig */
+typedef struct RadioLinkMonitoringConfig {
+       struct RadioLinkMonitoringConfig__failureDetectionResourcesToAddModList {
+               A_SEQUENCE_OF(struct RadioLinkMonitoringRS) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *failureDetectionResourcesToAddModList;
+       struct RadioLinkMonitoringConfig__failureDetectionResourcesToReleaseList {
+               A_SEQUENCE_OF(RadioLinkMonitoringRS_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *failureDetectionResourcesToReleaseList;
+       long    *beamFailureInstanceMaxCount;   /* OPTIONAL */
+       long    *beamFailureDetectionTimer;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RadioLinkMonitoringConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_beamFailureInstanceMaxCount_6; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_beamFailureDetectionTimer_15;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RadioLinkMonitoringConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_RadioLinkMonitoringConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_RadioLinkMonitoringConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RadioLinkMonitoringConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringRS-Id.c b/src/codec_utils/RRC/RadioLinkMonitoringRS-Id.c
new file mode 100644 (file)
index 0000000..4f56abd
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RadioLinkMonitoringRS-Id.h"
+
+int
+RadioLinkMonitoringRS_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 <= 9)) {
+               /* 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_RadioLinkMonitoringRS_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RadioLinkMonitoringRS_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RadioLinkMonitoringRS_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RadioLinkMonitoringRS_Id = {
+       "RadioLinkMonitoringRS-Id",
+       "RadioLinkMonitoringRS-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_RadioLinkMonitoringRS_Id_tags_1,
+       sizeof(asn_DEF_RadioLinkMonitoringRS_Id_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringRS_Id_tags_1[0]), /* 1 */
+       asn_DEF_RadioLinkMonitoringRS_Id_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RadioLinkMonitoringRS_Id_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringRS_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_RadioLinkMonitoringRS_Id_constr_1, &asn_PER_type_RadioLinkMonitoringRS_Id_constr_1, RadioLinkMonitoringRS_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringRS-Id.h b/src/codec_utils/RRC/RadioLinkMonitoringRS-Id.h
new file mode 100644 (file)
index 0000000..6a54179
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RadioLinkMonitoringRS_Id_H_
+#define        _RadioLinkMonitoringRS_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RadioLinkMonitoringRS-Id */
+typedef long    RadioLinkMonitoringRS_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RadioLinkMonitoringRS_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RadioLinkMonitoringRS_Id;
+asn_struct_free_f RadioLinkMonitoringRS_Id_free;
+asn_struct_print_f RadioLinkMonitoringRS_Id_print;
+asn_constr_check_f RadioLinkMonitoringRS_Id_constraint;
+ber_type_decoder_f RadioLinkMonitoringRS_Id_decode_ber;
+der_type_encoder_f RadioLinkMonitoringRS_Id_encode_der;
+xer_type_decoder_f RadioLinkMonitoringRS_Id_decode_xer;
+xer_type_encoder_f RadioLinkMonitoringRS_Id_encode_xer;
+oer_type_decoder_f RadioLinkMonitoringRS_Id_decode_oer;
+oer_type_encoder_f RadioLinkMonitoringRS_Id_encode_oer;
+per_type_decoder_f RadioLinkMonitoringRS_Id_decode_uper;
+per_type_encoder_f RadioLinkMonitoringRS_Id_encode_uper;
+per_type_decoder_f RadioLinkMonitoringRS_Id_decode_aper;
+per_type_encoder_f RadioLinkMonitoringRS_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RadioLinkMonitoringRS_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringRS.c b/src/codec_utils/RRC/RadioLinkMonitoringRS.c
new file mode 100644 (file)
index 0000000..c55cc70
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RadioLinkMonitoringRS.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_purpose_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_purpose_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_detectionResource_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_detectionResource_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_purpose_value2enum_3[] = {
+       { 0,    11,     "beamFailure" },
+       { 1,    3,      "rlf" },
+       { 2,    4,      "both" }
+};
+static const unsigned int asn_MAP_purpose_enum2value_3[] = {
+       0,      /* beamFailure(0) */
+       2,      /* both(2) */
+       1       /* rlf(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_purpose_specs_3 = {
+       asn_MAP_purpose_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_purpose_enum2value_3,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_purpose_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_purpose_3 = {
+       "purpose",
+       "purpose",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_purpose_tags_3,
+       sizeof(asn_DEF_purpose_tags_3)
+               /sizeof(asn_DEF_purpose_tags_3[0]) - 1, /* 1 */
+       asn_DEF_purpose_tags_3, /* Same as above */
+       sizeof(asn_DEF_purpose_tags_3)
+               /sizeof(asn_DEF_purpose_tags_3[0]), /* 2 */
+       { &asn_OER_type_purpose_constr_3, &asn_PER_type_purpose_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_purpose_specs_3        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_detectionResource_7[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RadioLinkMonitoringRS__detectionResource, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RadioLinkMonitoringRS__detectionResource, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_detectionResource_tag2el_7[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Index */
+};
+static asn_CHOICE_specifics_t asn_SPC_detectionResource_specs_7 = {
+       sizeof(struct RadioLinkMonitoringRS__detectionResource),
+       offsetof(struct RadioLinkMonitoringRS__detectionResource, _asn_ctx),
+       offsetof(struct RadioLinkMonitoringRS__detectionResource, present),
+       sizeof(((struct RadioLinkMonitoringRS__detectionResource *)0)->present),
+       asn_MAP_detectionResource_tag2el_7,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_detectionResource_7 = {
+       "detectionResource",
+       "detectionResource",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_detectionResource_constr_7, &asn_PER_type_detectionResource_constr_7, CHOICE_constraint },
+       asn_MBR_detectionResource_7,
+       2,      /* Elements count */
+       &asn_SPC_detectionResource_specs_7      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RadioLinkMonitoringRS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RadioLinkMonitoringRS, radioLinkMonitoringRS_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RadioLinkMonitoringRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "radioLinkMonitoringRS-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RadioLinkMonitoringRS, purpose),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_purpose_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "purpose"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RadioLinkMonitoringRS, detectionResource),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_detectionResource_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "detectionResource"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RadioLinkMonitoringRS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RadioLinkMonitoringRS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* radioLinkMonitoringRS-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* purpose */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* detectionResource */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RadioLinkMonitoringRS_specs_1 = {
+       sizeof(struct RadioLinkMonitoringRS),
+       offsetof(struct RadioLinkMonitoringRS, _asn_ctx),
+       asn_MAP_RadioLinkMonitoringRS_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_RadioLinkMonitoringRS = {
+       "RadioLinkMonitoringRS",
+       "RadioLinkMonitoringRS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RadioLinkMonitoringRS_tags_1,
+       sizeof(asn_DEF_RadioLinkMonitoringRS_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringRS_tags_1[0]), /* 1 */
+       asn_DEF_RadioLinkMonitoringRS_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RadioLinkMonitoringRS_tags_1)
+               /sizeof(asn_DEF_RadioLinkMonitoringRS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RadioLinkMonitoringRS_1,
+       3,      /* Elements count */
+       &asn_SPC_RadioLinkMonitoringRS_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RadioLinkMonitoringRS.h b/src/codec_utils/RRC/RadioLinkMonitoringRS.h
new file mode 100644 (file)
index 0000000..82f5e91
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RadioLinkMonitoringRS_H_
+#define        _RadioLinkMonitoringRS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RadioLinkMonitoringRS-Id.h"
+#include <NativeEnumerated.h>
+#include "SSB-Index.h"
+#include "NZP-CSI-RS-ResourceId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RadioLinkMonitoringRS__purpose {
+       RadioLinkMonitoringRS__purpose_beamFailure      = 0,
+       RadioLinkMonitoringRS__purpose_rlf      = 1,
+       RadioLinkMonitoringRS__purpose_both     = 2
+} e_RadioLinkMonitoringRS__purpose;
+typedef enum RadioLinkMonitoringRS__detectionResource_PR {
+       RadioLinkMonitoringRS__detectionResource_PR_NOTHING,    /* No components present */
+       RadioLinkMonitoringRS__detectionResource_PR_ssb_Index,
+       RadioLinkMonitoringRS__detectionResource_PR_csi_RS_Index
+} RadioLinkMonitoringRS__detectionResource_PR;
+
+/* RadioLinkMonitoringRS */
+typedef struct RadioLinkMonitoringRS {
+       RadioLinkMonitoringRS_Id_t       radioLinkMonitoringRS_Id;
+       long     purpose;
+       struct RadioLinkMonitoringRS__detectionResource {
+               RadioLinkMonitoringRS__detectionResource_PR present;
+               union RadioLinkMonitoringRS__detectionResource_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } detectionResource;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RadioLinkMonitoringRS_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_purpose_3;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RadioLinkMonitoringRS;
+extern asn_SEQUENCE_specifics_t asn_SPC_RadioLinkMonitoringRS_specs_1;
+extern asn_TYPE_member_t asn_MBR_RadioLinkMonitoringRS_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RadioLinkMonitoringRS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RangeToBestCell.c b/src/codec_utils/RRC/RangeToBestCell.c
new file mode 100644 (file)
index 0000000..58c9729
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RangeToBestCell.h"
+
+/*
+ * This type is implemented using Q_OffsetRange,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RangeToBestCell_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_RangeToBestCell_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  30 }       /* (0..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RangeToBestCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RangeToBestCell = {
+       "RangeToBestCell",
+       "RangeToBestCell",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_RangeToBestCell_tags_1,
+       sizeof(asn_DEF_RangeToBestCell_tags_1)
+               /sizeof(asn_DEF_RangeToBestCell_tags_1[0]), /* 1 */
+       asn_DEF_RangeToBestCell_tags_1, /* Same as above */
+       sizeof(asn_DEF_RangeToBestCell_tags_1)
+               /sizeof(asn_DEF_RangeToBestCell_tags_1[0]), /* 1 */
+       { 0, 0, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_Q_OffsetRange_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RangeToBestCell.h b/src/codec_utils/RRC/RangeToBestCell.h
new file mode 100644 (file)
index 0000000..2fc072c
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RangeToBestCell_H_
+#define        _RangeToBestCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "Q-OffsetRange.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RangeToBestCell */
+typedef Q_OffsetRange_t         RangeToBestCell_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RangeToBestCell_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RangeToBestCell;
+asn_struct_free_f RangeToBestCell_free;
+asn_struct_print_f RangeToBestCell_print;
+asn_constr_check_f RangeToBestCell_constraint;
+ber_type_decoder_f RangeToBestCell_decode_ber;
+der_type_encoder_f RangeToBestCell_encode_der;
+xer_type_decoder_f RangeToBestCell_decode_xer;
+xer_type_encoder_f RangeToBestCell_encode_xer;
+oer_type_decoder_f RangeToBestCell_decode_oer;
+oer_type_encoder_f RangeToBestCell_encode_oer;
+per_type_decoder_f RangeToBestCell_decode_uper;
+per_type_encoder_f RangeToBestCell_encode_uper;
+per_type_decoder_f RangeToBestCell_decode_aper;
+per_type_encoder_f RangeToBestCell_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RangeToBestCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RateMatchPattern.c b/src/codec_utils/RRC/RateMatchPattern.c
new file mode 100644 (file)
index 0000000..8290a9f
--- /dev/null
@@ -0,0 +1,807 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RateMatchPattern.h"
+
+static int
+memb_oneSlot_constraint_6(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 == 14)) {
+               /* 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_twoSlots_constraint_6(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;
+       }
+}
+
+static int
+memb_n2_constraint_9(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 == 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 int
+memb_n4_constraint_9(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 == 4)) {
+               /* 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_n5_constraint_9(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 == 5)) {
+               /* 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_n8_constraint_9(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;
+       }
+}
+
+static int
+memb_n10_constraint_9(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;
+       }
+}
+
+static int
+memb_n20_constraint_9(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_n40_constraint_9(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 == 40)) {
+               /* 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_resourceBlocks_constraint_4(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 == 275)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_memb_oneSlot_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       14      /* (SIZE(14..14)) */};
+static asn_per_constraints_t asn_PER_memb_oneSlot_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  14,  14 }      /* (SIZE(14..14)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_twoSlots_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       28      /* (SIZE(28..28)) */};
+static asn_per_constraints_t asn_PER_memb_twoSlots_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  28,  28 }      /* (SIZE(28..28)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_symbolsInResourceBlock_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_symbolsInResourceBlock_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_n2_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_n2_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n4_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_n4_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n5_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       5       /* (SIZE(5..5)) */};
+static asn_per_constraints_t asn_PER_memb_n5_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  5,  5 }        /* (SIZE(5..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n8_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_n8_constr_13 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n10_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       10      /* (SIZE(10..10)) */};
+static asn_per_constraints_t asn_PER_memb_n10_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  10,  10 }      /* (SIZE(10..10)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_n20_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       20      /* (SIZE(20..20)) */};
+static asn_per_constraints_t asn_PER_memb_n20_constr_15 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_n40_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       40      /* (SIZE(40..40)) */};
+static asn_per_constraints_t asn_PER_memb_n40_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  40,  40 }      /* (SIZE(40..40)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_periodicityAndPattern_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicityAndPattern_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_resourceBlocks_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       275     /* (SIZE(275..275)) */};
+static asn_per_constraints_t asn_PER_memb_resourceBlocks_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  275,  275 }    /* (SIZE(275..275)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_patternType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_patternType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dummy_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dummy_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_symbolsInResourceBlock_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock, choice.oneSlot),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_oneSlot_constr_7, &asn_PER_memb_oneSlot_constr_7,  memb_oneSlot_constraint_6 },
+               0, 0, /* No default value */
+               "oneSlot"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock, choice.twoSlots),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_twoSlots_constr_8, &asn_PER_memb_twoSlots_constr_8,  memb_twoSlots_constraint_6 },
+               0, 0, /* No default value */
+               "twoSlots"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_symbolsInResourceBlock_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* twoSlots */
+};
+static asn_CHOICE_specifics_t asn_SPC_symbolsInResourceBlock_specs_6 = {
+       sizeof(struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock),
+       offsetof(struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock, _asn_ctx),
+       offsetof(struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock, present),
+       sizeof(((struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock *)0)->present),
+       asn_MAP_symbolsInResourceBlock_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_symbolsInResourceBlock_6 = {
+       "symbolsInResourceBlock",
+       "symbolsInResourceBlock",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_symbolsInResourceBlock_constr_6, &asn_PER_type_symbolsInResourceBlock_constr_6, CHOICE_constraint },
+       asn_MBR_symbolsInResourceBlock_6,
+       2,      /* Elements count */
+       &asn_SPC_symbolsInResourceBlock_specs_6 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_periodicityAndPattern_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n2_constr_10, &asn_PER_memb_n2_constr_10,  memb_n2_constraint_9 },
+               0, 0, /* No default value */
+               "n2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n4_constr_11, &asn_PER_memb_n4_constr_11,  memb_n4_constraint_9 },
+               0, 0, /* No default value */
+               "n4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n5),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n5_constr_12, &asn_PER_memb_n5_constr_12,  memb_n5_constraint_9 },
+               0, 0, /* No default value */
+               "n5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n8),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n8_constr_13, &asn_PER_memb_n8_constr_13,  memb_n8_constraint_9 },
+               0, 0, /* No default value */
+               "n8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n10),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n10_constr_14, &asn_PER_memb_n10_constr_14,  memb_n10_constraint_9 },
+               0, 0, /* No default value */
+               "n10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n20),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n20_constr_15, &asn_PER_memb_n20_constr_15,  memb_n20_constraint_9 },
+               0, 0, /* No default value */
+               "n20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, choice.n40),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_n40_constr_16, &asn_PER_memb_n40_constr_16,  memb_n40_constraint_9 },
+               0, 0, /* No default value */
+               "n40"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodicityAndPattern_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* n4 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* n5 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* n8 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* n10 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* n20 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* n40 */
+};
+static asn_CHOICE_specifics_t asn_SPC_periodicityAndPattern_specs_9 = {
+       sizeof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern),
+       offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, _asn_ctx),
+       offsetof(struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern, present),
+       sizeof(((struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern *)0)->present),
+       asn_MAP_periodicityAndPattern_tag2el_9,
+       7,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodicityAndPattern_9 = {
+       "periodicityAndPattern",
+       "periodicityAndPattern",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_periodicityAndPattern_constr_9, &asn_PER_type_periodicityAndPattern_constr_9, CHOICE_constraint },
+       asn_MBR_periodicityAndPattern_9,
+       7,      /* Elements count */
+       &asn_SPC_periodicityAndPattern_specs_9  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_bitmaps_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps, resourceBlocks),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_resourceBlocks_constr_5, &asn_PER_memb_resourceBlocks_constr_5,  memb_resourceBlocks_constraint_4 },
+               0, 0, /* No default value */
+               "resourceBlocks"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType__bitmaps, symbolsInResourceBlock),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_symbolsInResourceBlock_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "symbolsInResourceBlock"
+               },
+       { ATF_POINTER, 1, offsetof(struct RateMatchPattern__patternType__bitmaps, periodicityAndPattern),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_periodicityAndPattern_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndPattern"
+               },
+};
+static const int asn_MAP_bitmaps_oms_4[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_bitmaps_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_bitmaps_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceBlocks */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* symbolsInResourceBlock */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* periodicityAndPattern */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_bitmaps_specs_4 = {
+       sizeof(struct RateMatchPattern__patternType__bitmaps),
+       offsetof(struct RateMatchPattern__patternType__bitmaps, _asn_ctx),
+       asn_MAP_bitmaps_tag2el_4,
+       3,      /* Count of tags in the map */
+       asn_MAP_bitmaps_oms_4,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_bitmaps_4 = {
+       "bitmaps",
+       "bitmaps",
+       &asn_OP_SEQUENCE,
+       asn_DEF_bitmaps_tags_4,
+       sizeof(asn_DEF_bitmaps_tags_4)
+               /sizeof(asn_DEF_bitmaps_tags_4[0]) - 1, /* 1 */
+       asn_DEF_bitmaps_tags_4, /* Same as above */
+       sizeof(asn_DEF_bitmaps_tags_4)
+               /sizeof(asn_DEF_bitmaps_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_bitmaps_4,
+       3,      /* Elements count */
+       &asn_SPC_bitmaps_specs_4        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_patternType_3[] = {
+       { ATF_POINTER, 0, offsetof(struct RateMatchPattern__patternType, choice.bitmaps),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_bitmaps_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bitmaps"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern__patternType, choice.controlResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "controlResourceSet"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_patternType_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bitmaps */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* controlResourceSet */
+};
+static asn_CHOICE_specifics_t asn_SPC_patternType_specs_3 = {
+       sizeof(struct RateMatchPattern__patternType),
+       offsetof(struct RateMatchPattern__patternType, _asn_ctx),
+       offsetof(struct RateMatchPattern__patternType, present),
+       sizeof(((struct RateMatchPattern__patternType *)0)->present),
+       asn_MAP_patternType_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_patternType_3 = {
+       "patternType",
+       "patternType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_patternType_constr_3, &asn_PER_type_patternType_constr_3, CHOICE_constraint },
+       asn_MBR_patternType_3,
+       2,      /* Elements count */
+       &asn_SPC_patternType_specs_3    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dummy_value2enum_20[] = {
+       { 0,    7,      "dynamic" },
+       { 1,    10,     "semiStatic" }
+};
+static const unsigned int asn_MAP_dummy_enum2value_20[] = {
+       0,      /* dynamic(0) */
+       1       /* semiStatic(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dummy_specs_20 = {
+       asn_MAP_dummy_value2enum_20,    /* "tag" => N; sorted by tag */
+       asn_MAP_dummy_enum2value_20,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dummy_tags_20[] = {
+       (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_dummy_20 = {
+       "dummy",
+       "dummy",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dummy_tags_20,
+       sizeof(asn_DEF_dummy_tags_20)
+               /sizeof(asn_DEF_dummy_tags_20[0]) - 1, /* 1 */
+       asn_DEF_dummy_tags_20,  /* Same as above */
+       sizeof(asn_DEF_dummy_tags_20)
+               /sizeof(asn_DEF_dummy_tags_20[0]), /* 2 */
+       { &asn_OER_type_dummy_constr_20, &asn_PER_type_dummy_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dummy_specs_20 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RateMatchPattern_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern, rateMatchPatternId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rateMatchPatternId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern, patternType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_patternType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "patternType"
+               },
+       { ATF_POINTER, 1, offsetof(struct RateMatchPattern, subcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPattern, dummy),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dummy_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy"
+               },
+};
+static const int asn_MAP_RateMatchPattern_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RateMatchPattern_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RateMatchPattern_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rateMatchPatternId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* patternType */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* dummy */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RateMatchPattern_specs_1 = {
+       sizeof(struct RateMatchPattern),
+       offsetof(struct RateMatchPattern, _asn_ctx),
+       asn_MAP_RateMatchPattern_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_RateMatchPattern_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RateMatchPattern = {
+       "RateMatchPattern",
+       "RateMatchPattern",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RateMatchPattern_tags_1,
+       sizeof(asn_DEF_RateMatchPattern_tags_1)
+               /sizeof(asn_DEF_RateMatchPattern_tags_1[0]), /* 1 */
+       asn_DEF_RateMatchPattern_tags_1,        /* Same as above */
+       sizeof(asn_DEF_RateMatchPattern_tags_1)
+               /sizeof(asn_DEF_RateMatchPattern_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RateMatchPattern_1,
+       4,      /* Elements count */
+       &asn_SPC_RateMatchPattern_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RateMatchPattern.h b/src/codec_utils/RRC/RateMatchPattern.h
new file mode 100644 (file)
index 0000000..e1678de
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RateMatchPattern_H_
+#define        _RateMatchPattern_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RateMatchPatternId.h"
+#include "SubcarrierSpacing.h"
+#include <NativeEnumerated.h>
+#include "ControlResourceSetId.h"
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RateMatchPattern__patternType_PR {
+       RateMatchPattern__patternType_PR_NOTHING,       /* No components present */
+       RateMatchPattern__patternType_PR_bitmaps,
+       RateMatchPattern__patternType_PR_controlResourceSet
+} RateMatchPattern__patternType_PR;
+typedef enum RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR {
+       RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_NOTHING,      /* No components present */
+       RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_oneSlot,
+       RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR_twoSlots
+} RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR;
+typedef enum RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR {
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_NOTHING,       /* No components present */
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n2,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n4,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n5,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n8,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n10,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n20,
+       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR_n40
+} RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR;
+typedef enum RateMatchPattern__dummy {
+       RateMatchPattern__dummy_dynamic = 0,
+       RateMatchPattern__dummy_semiStatic      = 1
+} e_RateMatchPattern__dummy;
+
+/* RateMatchPattern */
+typedef struct RateMatchPattern {
+       RateMatchPatternId_t     rateMatchPatternId;
+       struct RateMatchPattern__patternType {
+               RateMatchPattern__patternType_PR present;
+               union RateMatchPattern__patternType_u {
+                       struct RateMatchPattern__patternType__bitmaps {
+                               BIT_STRING_t     resourceBlocks;
+                               struct RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock {
+                                       RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_PR present;
+                                       union RateMatchPattern__patternType__bitmaps__symbolsInResourceBlock_u {
+                                               BIT_STRING_t     oneSlot;
+                                               BIT_STRING_t     twoSlots;
+                                       } choice;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } symbolsInResourceBlock;
+                               struct RateMatchPattern__patternType__bitmaps__periodicityAndPattern {
+                                       RateMatchPattern__patternType__bitmaps__periodicityAndPattern_PR present;
+                                       union RateMatchPattern__patternType__bitmaps__periodicityAndPattern_u {
+                                               BIT_STRING_t     n2;
+                                               BIT_STRING_t     n4;
+                                               BIT_STRING_t     n5;
+                                               BIT_STRING_t     n8;
+                                               BIT_STRING_t     n10;
+                                               BIT_STRING_t     n20;
+                                               BIT_STRING_t     n40;
+                                       } choice;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *periodicityAndPattern;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *bitmaps;
+                       ControlResourceSetId_t   controlResourceSet;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } patternType;
+       SubcarrierSpacing_t     *subcarrierSpacing;     /* OPTIONAL */
+       long     dummy;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RateMatchPattern_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dummy_20;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RateMatchPattern;
+extern asn_SEQUENCE_specifics_t asn_SPC_RateMatchPattern_specs_1;
+extern asn_TYPE_member_t asn_MBR_RateMatchPattern_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RateMatchPattern_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RateMatchPatternGroup.c b/src/codec_utils/RRC/RateMatchPatternGroup.c
new file mode 100644 (file)
index 0000000..369b6e1
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RateMatchPatternGroup.h"
+
+static asn_oer_constraints_t asn_OER_type_Member_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_Member_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_RateMatchPatternGroup_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_RateMatchPatternGroup_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternGroup__Member, choice.cellLevel),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellLevel"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternGroup__Member, choice.bwpLevel),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwpLevel"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellLevel */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* bwpLevel */
+};
+static asn_CHOICE_specifics_t asn_SPC_Member_specs_2 = {
+       sizeof(struct RateMatchPatternGroup__Member),
+       offsetof(struct RateMatchPatternGroup__Member, _asn_ctx),
+       offsetof(struct RateMatchPatternGroup__Member, present),
+       sizeof(((struct RateMatchPatternGroup__Member *)0)->present),
+       asn_MAP_Member_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_2 = {
+       "CHOICE",
+       "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_Member_constr_2, &asn_PER_type_Member_constr_2, CHOICE_constraint },
+       asn_MBR_Member_2,
+       2,      /* Elements count */
+       &asn_SPC_Member_specs_2 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RateMatchPatternGroup_1[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_Member_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_RateMatchPatternGroup_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_RateMatchPatternGroup_specs_1 = {
+       sizeof(struct RateMatchPatternGroup),
+       offsetof(struct RateMatchPatternGroup, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+asn_TYPE_descriptor_t asn_DEF_RateMatchPatternGroup = {
+       "RateMatchPatternGroup",
+       "RateMatchPatternGroup",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_RateMatchPatternGroup_tags_1,
+       sizeof(asn_DEF_RateMatchPatternGroup_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternGroup_tags_1[0]), /* 1 */
+       asn_DEF_RateMatchPatternGroup_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RateMatchPatternGroup_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternGroup_tags_1[0]), /* 1 */
+       { &asn_OER_type_RateMatchPatternGroup_constr_1, &asn_PER_type_RateMatchPatternGroup_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_RateMatchPatternGroup_1,
+       1,      /* Single element */
+       &asn_SPC_RateMatchPatternGroup_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RateMatchPatternGroup.h b/src/codec_utils/RRC/RateMatchPatternGroup.h
new file mode 100644 (file)
index 0000000..e260edf
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RateMatchPatternGroup_H_
+#define        _RateMatchPatternGroup_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include "RateMatchPatternId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RateMatchPatternGroup__Member_PR {
+       RateMatchPatternGroup__Member_PR_NOTHING,       /* No components present */
+       RateMatchPatternGroup__Member_PR_cellLevel,
+       RateMatchPatternGroup__Member_PR_bwpLevel
+} RateMatchPatternGroup__Member_PR;
+
+/* Forward definitions */
+typedef struct RateMatchPatternGroup__Member {
+       RateMatchPatternGroup__Member_PR present;
+       union RateMatchPatternGroup__Member_u {
+               RateMatchPatternId_t     cellLevel;
+               RateMatchPatternId_t     bwpLevel;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RateMatchPatternGroup__Member;
+
+/* RateMatchPatternGroup */
+typedef struct RateMatchPatternGroup {
+       A_SEQUENCE_OF(RateMatchPatternGroup__Member) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RateMatchPatternGroup_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RateMatchPatternGroup;
+extern asn_SET_OF_specifics_t asn_SPC_RateMatchPatternGroup_specs_1;
+extern asn_TYPE_member_t asn_MBR_RateMatchPatternGroup_1[1];
+extern asn_per_constraints_t asn_PER_type_RateMatchPatternGroup_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RateMatchPatternGroup_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RateMatchPatternId.c b/src/codec_utils/RRC/RateMatchPatternId.c
new file mode 100644 (file)
index 0000000..eeaf602
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RateMatchPatternId.h"
+
+int
+RateMatchPatternId_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_RateMatchPatternId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RateMatchPatternId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RateMatchPatternId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RateMatchPatternId = {
+       "RateMatchPatternId",
+       "RateMatchPatternId",
+       &asn_OP_NativeInteger,
+       asn_DEF_RateMatchPatternId_tags_1,
+       sizeof(asn_DEF_RateMatchPatternId_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternId_tags_1[0]), /* 1 */
+       asn_DEF_RateMatchPatternId_tags_1,      /* Same as above */
+       sizeof(asn_DEF_RateMatchPatternId_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternId_tags_1[0]), /* 1 */
+       { &asn_OER_type_RateMatchPatternId_constr_1, &asn_PER_type_RateMatchPatternId_constr_1, RateMatchPatternId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RateMatchPatternId.h b/src/codec_utils/RRC/RateMatchPatternId.h
new file mode 100644 (file)
index 0000000..d091fc7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RateMatchPatternId_H_
+#define        _RateMatchPatternId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RateMatchPatternId */
+typedef long    RateMatchPatternId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RateMatchPatternId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RateMatchPatternId;
+asn_struct_free_f RateMatchPatternId_free;
+asn_struct_print_f RateMatchPatternId_print;
+asn_constr_check_f RateMatchPatternId_constraint;
+ber_type_decoder_f RateMatchPatternId_decode_ber;
+der_type_encoder_f RateMatchPatternId_encode_der;
+xer_type_decoder_f RateMatchPatternId_decode_xer;
+xer_type_encoder_f RateMatchPatternId_encode_xer;
+oer_type_decoder_f RateMatchPatternId_decode_oer;
+oer_type_encoder_f RateMatchPatternId_encode_oer;
+per_type_decoder_f RateMatchPatternId_decode_uper;
+per_type_encoder_f RateMatchPatternId_encode_uper;
+per_type_decoder_f RateMatchPatternId_decode_aper;
+per_type_encoder_f RateMatchPatternId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RateMatchPatternId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RateMatchPatternLTE-CRS.c b/src/codec_utils/RRC/RateMatchPatternLTE-CRS.c
new file mode 100644 (file)
index 0000000..3e127d0
--- /dev/null
@@ -0,0 +1,295 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RateMatchPatternLTE-CRS.h"
+
+#include "EUTRA-MBSFN-SubframeConfigList.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.
+ */
+static int
+memb_carrierFreqDL_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 >= 0 && value <= 16383)) {
+               /* 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_carrierBandwidthDL_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_carrierBandwidthDL_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_nrofCRS_Ports_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofCRS_Ports_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_v_Shift_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_v_Shift_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_carrierFreqDL_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..16383) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_carrierFreqDL_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       14,  14,  0,  16383 }  /* (0..16383) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_carrierBandwidthDL_value2enum_3[] = {
+       { 0,    2,      "n6" },
+       { 1,    3,      "n15" },
+       { 2,    3,      "n25" },
+       { 3,    3,      "n50" },
+       { 4,    3,      "n75" },
+       { 5,    4,      "n100" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_carrierBandwidthDL_enum2value_3[] = {
+       5,      /* n100(5) */
+       1,      /* n15(1) */
+       2,      /* n25(2) */
+       3,      /* n50(3) */
+       0,      /* n6(0) */
+       4,      /* n75(4) */
+       7,      /* spare1(7) */
+       6       /* spare2(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_carrierBandwidthDL_specs_3 = {
+       asn_MAP_carrierBandwidthDL_value2enum_3,        /* "tag" => N; sorted by tag */
+       asn_MAP_carrierBandwidthDL_enum2value_3,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_carrierBandwidthDL_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_carrierBandwidthDL_3 = {
+       "carrierBandwidthDL",
+       "carrierBandwidthDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_carrierBandwidthDL_tags_3,
+       sizeof(asn_DEF_carrierBandwidthDL_tags_3)
+               /sizeof(asn_DEF_carrierBandwidthDL_tags_3[0]) - 1, /* 1 */
+       asn_DEF_carrierBandwidthDL_tags_3,      /* Same as above */
+       sizeof(asn_DEF_carrierBandwidthDL_tags_3)
+               /sizeof(asn_DEF_carrierBandwidthDL_tags_3[0]), /* 2 */
+       { &asn_OER_type_carrierBandwidthDL_constr_3, &asn_PER_type_carrierBandwidthDL_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_carrierBandwidthDL_specs_3     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofCRS_Ports_value2enum_13[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_nrofCRS_Ports_enum2value_13[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofCRS_Ports_specs_13 = {
+       asn_MAP_nrofCRS_Ports_value2enum_13,    /* "tag" => N; sorted by tag */
+       asn_MAP_nrofCRS_Ports_enum2value_13,    /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofCRS_Ports_tags_13[] = {
+       (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_nrofCRS_Ports_13 = {
+       "nrofCRS-Ports",
+       "nrofCRS-Ports",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofCRS_Ports_tags_13,
+       sizeof(asn_DEF_nrofCRS_Ports_tags_13)
+               /sizeof(asn_DEF_nrofCRS_Ports_tags_13[0]) - 1, /* 1 */
+       asn_DEF_nrofCRS_Ports_tags_13,  /* Same as above */
+       sizeof(asn_DEF_nrofCRS_Ports_tags_13)
+               /sizeof(asn_DEF_nrofCRS_Ports_tags_13[0]), /* 2 */
+       { &asn_OER_type_nrofCRS_Ports_constr_13, &asn_PER_type_nrofCRS_Ports_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofCRS_Ports_specs_13 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_v_Shift_value2enum_17[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" }
+};
+static const unsigned int asn_MAP_v_Shift_enum2value_17[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5       /* n5(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_v_Shift_specs_17 = {
+       asn_MAP_v_Shift_value2enum_17,  /* "tag" => N; sorted by tag */
+       asn_MAP_v_Shift_enum2value_17,  /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_v_Shift_tags_17[] = {
+       (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_v_Shift_17 = {
+       "v-Shift",
+       "v-Shift",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_v_Shift_tags_17,
+       sizeof(asn_DEF_v_Shift_tags_17)
+               /sizeof(asn_DEF_v_Shift_tags_17[0]) - 1, /* 1 */
+       asn_DEF_v_Shift_tags_17,        /* Same as above */
+       sizeof(asn_DEF_v_Shift_tags_17)
+               /sizeof(asn_DEF_v_Shift_tags_17[0]), /* 2 */
+       { &asn_OER_type_v_Shift_constr_17, &asn_PER_type_v_Shift_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_v_Shift_specs_17       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RateMatchPatternLTE_CRS_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternLTE_CRS, carrierFreqDL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_carrierFreqDL_constr_2, &asn_PER_memb_carrierFreqDL_constr_2,  memb_carrierFreqDL_constraint_1 },
+               0, 0, /* No default value */
+               "carrierFreqDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternLTE_CRS, carrierBandwidthDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_carrierBandwidthDL_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierBandwidthDL"
+               },
+       { ATF_POINTER, 1, offsetof(struct RateMatchPatternLTE_CRS, mbsfn_SubframeConfigList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_MBSFN_SubframeConfigList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mbsfn-SubframeConfigList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternLTE_CRS, nrofCRS_Ports),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofCRS_Ports_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofCRS-Ports"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RateMatchPatternLTE_CRS, v_Shift),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_v_Shift_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "v-Shift"
+               },
+};
+static const int asn_MAP_RateMatchPatternLTE_CRS_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_RateMatchPatternLTE_CRS_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RateMatchPatternLTE_CRS_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreqDL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* carrierBandwidthDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* mbsfn-SubframeConfigList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrofCRS-Ports */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* v-Shift */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RateMatchPatternLTE_CRS_specs_1 = {
+       sizeof(struct RateMatchPatternLTE_CRS),
+       offsetof(struct RateMatchPatternLTE_CRS, _asn_ctx),
+       asn_MAP_RateMatchPatternLTE_CRS_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_RateMatchPatternLTE_CRS_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RateMatchPatternLTE_CRS = {
+       "RateMatchPatternLTE-CRS",
+       "RateMatchPatternLTE-CRS",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RateMatchPatternLTE_CRS_tags_1,
+       sizeof(asn_DEF_RateMatchPatternLTE_CRS_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternLTE_CRS_tags_1[0]), /* 1 */
+       asn_DEF_RateMatchPatternLTE_CRS_tags_1, /* Same as above */
+       sizeof(asn_DEF_RateMatchPatternLTE_CRS_tags_1)
+               /sizeof(asn_DEF_RateMatchPatternLTE_CRS_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RateMatchPatternLTE_CRS_1,
+       5,      /* Elements count */
+       &asn_SPC_RateMatchPatternLTE_CRS_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RateMatchPatternLTE-CRS.h b/src/codec_utils/RRC/RateMatchPatternLTE-CRS.h
new file mode 100644 (file)
index 0000000..c1d4449
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RateMatchPatternLTE_CRS_H_
+#define        _RateMatchPatternLTE_CRS_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RateMatchPatternLTE_CRS__carrierBandwidthDL {
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n6  = 0,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n15 = 1,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n25 = 2,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n50 = 3,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n75 = 4,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_n100        = 5,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_spare2      = 6,
+       RateMatchPatternLTE_CRS__carrierBandwidthDL_spare1      = 7
+} e_RateMatchPatternLTE_CRS__carrierBandwidthDL;
+typedef enum RateMatchPatternLTE_CRS__nrofCRS_Ports {
+       RateMatchPatternLTE_CRS__nrofCRS_Ports_n1       = 0,
+       RateMatchPatternLTE_CRS__nrofCRS_Ports_n2       = 1,
+       RateMatchPatternLTE_CRS__nrofCRS_Ports_n4       = 2
+} e_RateMatchPatternLTE_CRS__nrofCRS_Ports;
+typedef enum RateMatchPatternLTE_CRS__v_Shift {
+       RateMatchPatternLTE_CRS__v_Shift_n0     = 0,
+       RateMatchPatternLTE_CRS__v_Shift_n1     = 1,
+       RateMatchPatternLTE_CRS__v_Shift_n2     = 2,
+       RateMatchPatternLTE_CRS__v_Shift_n3     = 3,
+       RateMatchPatternLTE_CRS__v_Shift_n4     = 4,
+       RateMatchPatternLTE_CRS__v_Shift_n5     = 5
+} e_RateMatchPatternLTE_CRS__v_Shift;
+
+/* Forward declarations */
+struct EUTRA_MBSFN_SubframeConfigList;
+
+/* RateMatchPatternLTE-CRS */
+typedef struct RateMatchPatternLTE_CRS {
+       long     carrierFreqDL;
+       long     carrierBandwidthDL;
+       struct EUTRA_MBSFN_SubframeConfigList   *mbsfn_SubframeConfigList;      /* OPTIONAL */
+       long     nrofCRS_Ports;
+       long     v_Shift;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RateMatchPatternLTE_CRS_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_carrierBandwidthDL_3;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofCRS_Ports_13;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_v_Shift_17;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RateMatchPatternLTE_CRS;
+extern asn_SEQUENCE_specifics_t asn_SPC_RateMatchPatternLTE_CRS_specs_1;
+extern asn_TYPE_member_t asn_MBR_RateMatchPatternLTE_CRS_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RateMatchPatternLTE_CRS_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReconfigurationWithSync.c b/src/codec_utils/RRC/ReconfigurationWithSync.c
new file mode 100644 (file)
index 0000000..97aeec4
--- /dev/null
@@ -0,0 +1,258 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReconfigurationWithSync.h"
+
+#include "ServingCellConfigCommon.h"
+#include "RACH-ConfigDedicated.h"
+#include "SSB-MTC.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_t304_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t304_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rach_ConfigDedicated_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rach_ConfigDedicated_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_t304_value2enum_4[] = {
+       { 0,    4,      "ms50" },
+       { 1,    5,      "ms100" },
+       { 2,    5,      "ms150" },
+       { 3,    5,      "ms200" },
+       { 4,    5,      "ms500" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms2000" },
+       { 7,    7,      "ms10000" }
+};
+static const unsigned int asn_MAP_t304_enum2value_4[] = {
+       1,      /* ms100(1) */
+       5,      /* ms1000(5) */
+       7,      /* ms10000(7) */
+       2,      /* ms150(2) */
+       3,      /* ms200(3) */
+       6,      /* ms2000(6) */
+       0,      /* ms50(0) */
+       4       /* ms500(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t304_specs_4 = {
+       asn_MAP_t304_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_t304_enum2value_4,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t304_tags_4[] = {
+       (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_t304_4 = {
+       "t304",
+       "t304",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t304_tags_4,
+       sizeof(asn_DEF_t304_tags_4)
+               /sizeof(asn_DEF_t304_tags_4[0]) - 1, /* 1 */
+       asn_DEF_t304_tags_4,    /* Same as above */
+       sizeof(asn_DEF_t304_tags_4)
+               /sizeof(asn_DEF_t304_tags_4[0]), /* 2 */
+       { &asn_OER_type_t304_constr_4, &asn_PER_type_t304_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t304_specs_4   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rach_ConfigDedicated_13[] = {
+       { ATF_POINTER, 0, offsetof(struct ReconfigurationWithSync__rach_ConfigDedicated, choice.uplink),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplink"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReconfigurationWithSync__rach_ConfigDedicated, choice.supplementaryUplink),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supplementaryUplink"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_rach_ConfigDedicated_tag2el_13[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uplink */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* supplementaryUplink */
+};
+static asn_CHOICE_specifics_t asn_SPC_rach_ConfigDedicated_specs_13 = {
+       sizeof(struct ReconfigurationWithSync__rach_ConfigDedicated),
+       offsetof(struct ReconfigurationWithSync__rach_ConfigDedicated, _asn_ctx),
+       offsetof(struct ReconfigurationWithSync__rach_ConfigDedicated, present),
+       sizeof(((struct ReconfigurationWithSync__rach_ConfigDedicated *)0)->present),
+       asn_MAP_rach_ConfigDedicated_tag2el_13,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rach_ConfigDedicated_13 = {
+       "rach-ConfigDedicated",
+       "rach-ConfigDedicated",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_rach_ConfigDedicated_constr_13, &asn_PER_type_rach_ConfigDedicated_constr_13, CHOICE_constraint },
+       asn_MBR_rach_ConfigDedicated_13,
+       2,      /* Elements count */
+       &asn_SPC_rach_ConfigDedicated_specs_13  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_17[] = {
+       { ATF_POINTER, 1, offsetof(struct ReconfigurationWithSync__ext1, smtc),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc"
+               },
+};
+static const int asn_MAP_ext1_oms_17[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* smtc */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_17 = {
+       sizeof(struct ReconfigurationWithSync__ext1),
+       offsetof(struct ReconfigurationWithSync__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_17,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_17,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_17 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_17,
+       sizeof(asn_DEF_ext1_tags_17)
+               /sizeof(asn_DEF_ext1_tags_17[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_17,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_17)
+               /sizeof(asn_DEF_ext1_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_17,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_17  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ReconfigurationWithSync_1[] = {
+       { ATF_POINTER, 1, offsetof(struct ReconfigurationWithSync, spCellConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServingCellConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spCellConfigCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReconfigurationWithSync, newUE_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "newUE-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReconfigurationWithSync, t304),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t304_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t304"
+               },
+       { ATF_POINTER, 2, offsetof(struct ReconfigurationWithSync, rach_ConfigDedicated),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_rach_ConfigDedicated_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigDedicated"
+               },
+       { ATF_POINTER, 1, offsetof(struct ReconfigurationWithSync, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_ext1_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_ReconfigurationWithSync_oms_1[] = { 0, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_ReconfigurationWithSync_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReconfigurationWithSync_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* spCellConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* newUE-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* t304 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rach-ConfigDedicated */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReconfigurationWithSync_specs_1 = {
+       sizeof(struct ReconfigurationWithSync),
+       offsetof(struct ReconfigurationWithSync, _asn_ctx),
+       asn_MAP_ReconfigurationWithSync_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_ReconfigurationWithSync_oms_1,  /* Optional members */
+       2, 1,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReconfigurationWithSync = {
+       "ReconfigurationWithSync",
+       "ReconfigurationWithSync",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReconfigurationWithSync_tags_1,
+       sizeof(asn_DEF_ReconfigurationWithSync_tags_1)
+               /sizeof(asn_DEF_ReconfigurationWithSync_tags_1[0]), /* 1 */
+       asn_DEF_ReconfigurationWithSync_tags_1, /* Same as above */
+       sizeof(asn_DEF_ReconfigurationWithSync_tags_1)
+               /sizeof(asn_DEF_ReconfigurationWithSync_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReconfigurationWithSync_1,
+       5,      /* Elements count */
+       &asn_SPC_ReconfigurationWithSync_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReconfigurationWithSync.h b/src/codec_utils/RRC/ReconfigurationWithSync.h
new file mode 100644 (file)
index 0000000..af0c36c
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReconfigurationWithSync_H_
+#define        _ReconfigurationWithSync_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RNTI-Value.h"
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReconfigurationWithSync__t304 {
+       ReconfigurationWithSync__t304_ms50      = 0,
+       ReconfigurationWithSync__t304_ms100     = 1,
+       ReconfigurationWithSync__t304_ms150     = 2,
+       ReconfigurationWithSync__t304_ms200     = 3,
+       ReconfigurationWithSync__t304_ms500     = 4,
+       ReconfigurationWithSync__t304_ms1000    = 5,
+       ReconfigurationWithSync__t304_ms2000    = 6,
+       ReconfigurationWithSync__t304_ms10000   = 7
+} e_ReconfigurationWithSync__t304;
+typedef enum ReconfigurationWithSync__rach_ConfigDedicated_PR {
+       ReconfigurationWithSync__rach_ConfigDedicated_PR_NOTHING,       /* No components present */
+       ReconfigurationWithSync__rach_ConfigDedicated_PR_uplink,
+       ReconfigurationWithSync__rach_ConfigDedicated_PR_supplementaryUplink
+} ReconfigurationWithSync__rach_ConfigDedicated_PR;
+
+/* Forward declarations */
+struct ServingCellConfigCommon;
+struct RACH_ConfigDedicated;
+struct SSB_MTC;
+
+/* ReconfigurationWithSync */
+typedef struct ReconfigurationWithSync {
+       struct ServingCellConfigCommon  *spCellConfigCommon;    /* OPTIONAL */
+       RNTI_Value_t     newUE_Identity;
+       long     t304;
+       struct ReconfigurationWithSync__rach_ConfigDedicated {
+               ReconfigurationWithSync__rach_ConfigDedicated_PR present;
+               union ReconfigurationWithSync__rach_ConfigDedicated_u {
+                       struct RACH_ConfigDedicated     *uplink;
+                       struct RACH_ConfigDedicated     *supplementaryUplink;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rach_ConfigDedicated;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct ReconfigurationWithSync__ext1 {
+               struct SSB_MTC  *smtc;  /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReconfigurationWithSync_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_t304_4;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ReconfigurationWithSync;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReconfigurationWithSync_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReconfigurationWithSync_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReconfigurationWithSync_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.c b/src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.c
new file mode 100644 (file)
index 0000000..92868c9
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RedirectedCarrierInfo-EUTRA.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_cnType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_cnType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cnType_value2enum_3[] = {
+       { 0,    3,      "epc" },
+       { 1,    6,      "fiveGC" }
+};
+static const unsigned int asn_MAP_cnType_enum2value_3[] = {
+       0,      /* epc(0) */
+       1       /* fiveGC(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_cnType_specs_3 = {
+       asn_MAP_cnType_value2enum_3,    /* "tag" => N; sorted by tag */
+       asn_MAP_cnType_enum2value_3,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_cnType_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_cnType_3 = {
+       "cnType",
+       "cnType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_cnType_tags_3,
+       sizeof(asn_DEF_cnType_tags_3)
+               /sizeof(asn_DEF_cnType_tags_3[0]) - 1, /* 1 */
+       asn_DEF_cnType_tags_3,  /* Same as above */
+       sizeof(asn_DEF_cnType_tags_3)
+               /sizeof(asn_DEF_cnType_tags_3[0]), /* 2 */
+       { &asn_OER_type_cnType_constr_3, &asn_PER_type_cnType_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_cnType_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_RedirectedCarrierInfo_EUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct RedirectedCarrierInfo_EUTRA, eutraFrequency),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ARFCN_ValueEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutraFrequency"
+               },
+       { ATF_POINTER, 1, offsetof(struct RedirectedCarrierInfo_EUTRA, cnType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_cnType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cnType"
+               },
+};
+static const int asn_MAP_RedirectedCarrierInfo_EUTRA_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RedirectedCarrierInfo_EUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* eutraFrequency */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cnType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RedirectedCarrierInfo_EUTRA_specs_1 = {
+       sizeof(struct RedirectedCarrierInfo_EUTRA),
+       offsetof(struct RedirectedCarrierInfo_EUTRA, _asn_ctx),
+       asn_MAP_RedirectedCarrierInfo_EUTRA_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RedirectedCarrierInfo_EUTRA_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RedirectedCarrierInfo_EUTRA = {
+       "RedirectedCarrierInfo-EUTRA",
+       "RedirectedCarrierInfo-EUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1,
+       sizeof(asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1)
+               /sizeof(asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1[0]), /* 1 */
+       asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1,     /* Same as above */
+       sizeof(asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1)
+               /sizeof(asn_DEF_RedirectedCarrierInfo_EUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RedirectedCarrierInfo_EUTRA_1,
+       2,      /* Elements count */
+       &asn_SPC_RedirectedCarrierInfo_EUTRA_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.h b/src/codec_utils/RRC/RedirectedCarrierInfo-EUTRA.h
new file mode 100644 (file)
index 0000000..5f558fb
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RedirectedCarrierInfo_EUTRA_H_
+#define        _RedirectedCarrierInfo_EUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ARFCN-ValueEUTRA.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RedirectedCarrierInfo_EUTRA__cnType {
+       RedirectedCarrierInfo_EUTRA__cnType_epc = 0,
+       RedirectedCarrierInfo_EUTRA__cnType_fiveGC      = 1
+} e_RedirectedCarrierInfo_EUTRA__cnType;
+
+/* RedirectedCarrierInfo-EUTRA */
+typedef struct RedirectedCarrierInfo_EUTRA {
+       ARFCN_ValueEUTRA_t       eutraFrequency;
+       long    *cnType;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RedirectedCarrierInfo_EUTRA_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_cnType_3;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_RedirectedCarrierInfo_EUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_RedirectedCarrierInfo_EUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_RedirectedCarrierInfo_EUTRA_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RedirectedCarrierInfo_EUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RedirectedCarrierInfo.c b/src/codec_utils/RRC/RedirectedCarrierInfo.c
new file mode 100644 (file)
index 0000000..d7c78f3
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RedirectedCarrierInfo.h"
+
+#include "CarrierInfoNR.h"
+#include "RedirectedCarrierInfo-EUTRA.h"
+static asn_oer_constraints_t asn_OER_type_RedirectedCarrierInfo_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_RedirectedCarrierInfo_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_RedirectedCarrierInfo_1[] = {
+       { ATF_POINTER, 0, offsetof(struct RedirectedCarrierInfo, choice.nr),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CarrierInfoNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nr"
+               },
+       { ATF_POINTER, 0, offsetof(struct RedirectedCarrierInfo, choice.eutra),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RedirectedCarrierInfo_EUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eutra"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_RedirectedCarrierInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nr */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* eutra */
+};
+asn_CHOICE_specifics_t asn_SPC_RedirectedCarrierInfo_specs_1 = {
+       sizeof(struct RedirectedCarrierInfo),
+       offsetof(struct RedirectedCarrierInfo, _asn_ctx),
+       offsetof(struct RedirectedCarrierInfo, present),
+       sizeof(((struct RedirectedCarrierInfo *)0)->present),
+       asn_MAP_RedirectedCarrierInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       2       /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_RedirectedCarrierInfo = {
+       "RedirectedCarrierInfo",
+       "RedirectedCarrierInfo",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_RedirectedCarrierInfo_constr_1, &asn_PER_type_RedirectedCarrierInfo_constr_1, CHOICE_constraint },
+       asn_MBR_RedirectedCarrierInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_RedirectedCarrierInfo_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RedirectedCarrierInfo.h b/src/codec_utils/RRC/RedirectedCarrierInfo.h
new file mode 100644 (file)
index 0000000..ccab2f2
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RedirectedCarrierInfo_H_
+#define        _RedirectedCarrierInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RedirectedCarrierInfo_PR {
+       RedirectedCarrierInfo_PR_NOTHING,       /* No components present */
+       RedirectedCarrierInfo_PR_nr,
+       RedirectedCarrierInfo_PR_eutra
+       /* Extensions may appear below */
+       
+} RedirectedCarrierInfo_PR;
+
+/* Forward declarations */
+struct CarrierInfoNR;
+struct RedirectedCarrierInfo_EUTRA;
+
+/* RedirectedCarrierInfo */
+typedef struct RedirectedCarrierInfo {
+       RedirectedCarrierInfo_PR present;
+       union RedirectedCarrierInfo_u {
+               struct CarrierInfoNR    *nr;
+               struct RedirectedCarrierInfo_EUTRA      *eutra;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RedirectedCarrierInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RedirectedCarrierInfo;
+extern asn_CHOICE_specifics_t asn_SPC_RedirectedCarrierInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_RedirectedCarrierInfo_1[2];
+extern asn_per_constraints_t asn_PER_type_RedirectedCarrierInfo_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RedirectedCarrierInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReducedAggregatedBandwidth.c b/src/codec_utils/RRC/ReducedAggregatedBandwidth.c
new file mode 100644 (file)
index 0000000..80008a3
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReducedAggregatedBandwidth.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ReducedAggregatedBandwidth_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ReducedAggregatedBandwidth_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ReducedAggregatedBandwidth_value2enum_1[] = {
+       { 0,    4,      "mhz0" },
+       { 1,    5,      "mhz10" },
+       { 2,    5,      "mhz20" },
+       { 3,    5,      "mhz30" },
+       { 4,    5,      "mhz40" },
+       { 5,    5,      "mhz50" },
+       { 6,    5,      "mhz60" },
+       { 7,    5,      "mhz80" },
+       { 8,    6,      "mhz100" },
+       { 9,    6,      "mhz200" },
+       { 10,   6,      "mhz300" },
+       { 11,   6,      "mhz400" }
+};
+static const unsigned int asn_MAP_ReducedAggregatedBandwidth_enum2value_1[] = {
+       0,      /* mhz0(0) */
+       1,      /* mhz10(1) */
+       8,      /* mhz100(8) */
+       2,      /* mhz20(2) */
+       9,      /* mhz200(9) */
+       3,      /* mhz30(3) */
+       10,     /* mhz300(10) */
+       4,      /* mhz40(4) */
+       11,     /* mhz400(11) */
+       5,      /* mhz50(5) */
+       6,      /* mhz60(6) */
+       7       /* mhz80(7) */
+};
+const asn_INTEGER_specifics_t asn_SPC_ReducedAggregatedBandwidth_specs_1 = {
+       asn_MAP_ReducedAggregatedBandwidth_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_ReducedAggregatedBandwidth_enum2value_1,        /* N => "tag"; sorted by N */
+       12,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ReducedAggregatedBandwidth_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReducedAggregatedBandwidth = {
+       "ReducedAggregatedBandwidth",
+       "ReducedAggregatedBandwidth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ReducedAggregatedBandwidth_tags_1,
+       sizeof(asn_DEF_ReducedAggregatedBandwidth_tags_1)
+               /sizeof(asn_DEF_ReducedAggregatedBandwidth_tags_1[0]), /* 1 */
+       asn_DEF_ReducedAggregatedBandwidth_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ReducedAggregatedBandwidth_tags_1)
+               /sizeof(asn_DEF_ReducedAggregatedBandwidth_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReducedAggregatedBandwidth_constr_1, &asn_PER_type_ReducedAggregatedBandwidth_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ReducedAggregatedBandwidth_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReducedAggregatedBandwidth.h b/src/codec_utils/RRC/ReducedAggregatedBandwidth.h
new file mode 100644 (file)
index 0000000..a7bdb2c
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReducedAggregatedBandwidth_H_
+#define        _ReducedAggregatedBandwidth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReducedAggregatedBandwidth {
+       ReducedAggregatedBandwidth_mhz0 = 0,
+       ReducedAggregatedBandwidth_mhz10        = 1,
+       ReducedAggregatedBandwidth_mhz20        = 2,
+       ReducedAggregatedBandwidth_mhz30        = 3,
+       ReducedAggregatedBandwidth_mhz40        = 4,
+       ReducedAggregatedBandwidth_mhz50        = 5,
+       ReducedAggregatedBandwidth_mhz60        = 6,
+       ReducedAggregatedBandwidth_mhz80        = 7,
+       ReducedAggregatedBandwidth_mhz100       = 8,
+       ReducedAggregatedBandwidth_mhz200       = 9,
+       ReducedAggregatedBandwidth_mhz300       = 10,
+       ReducedAggregatedBandwidth_mhz400       = 11
+} e_ReducedAggregatedBandwidth;
+
+/* ReducedAggregatedBandwidth */
+typedef long    ReducedAggregatedBandwidth_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReducedAggregatedBandwidth_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReducedAggregatedBandwidth;
+extern const asn_INTEGER_specifics_t asn_SPC_ReducedAggregatedBandwidth_specs_1;
+asn_struct_free_f ReducedAggregatedBandwidth_free;
+asn_struct_print_f ReducedAggregatedBandwidth_print;
+asn_constr_check_f ReducedAggregatedBandwidth_constraint;
+ber_type_decoder_f ReducedAggregatedBandwidth_decode_ber;
+der_type_encoder_f ReducedAggregatedBandwidth_encode_der;
+xer_type_decoder_f ReducedAggregatedBandwidth_decode_xer;
+xer_type_encoder_f ReducedAggregatedBandwidth_encode_xer;
+oer_type_decoder_f ReducedAggregatedBandwidth_decode_oer;
+oer_type_encoder_f ReducedAggregatedBandwidth_encode_oer;
+per_type_decoder_f ReducedAggregatedBandwidth_decode_uper;
+per_type_encoder_f ReducedAggregatedBandwidth_encode_uper;
+per_type_decoder_f ReducedAggregatedBandwidth_decode_aper;
+per_type_encoder_f ReducedAggregatedBandwidth_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReducedAggregatedBandwidth_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReestabNCellInfo.c b/src/codec_utils/RRC/ReestabNCellInfo.c
new file mode 100644 (file)
index 0000000..c2f1777
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReestabNCellInfo.h"
+
+static int
+memb_key_gNodeB_Star_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 == 256)) {
+               /* 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_key_gNodeB_Star_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       256     /* (SIZE(256..256)) */};
+static asn_per_constraints_t asn_PER_memb_key_gNodeB_Star_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  256,  256 }    /* (SIZE(256..256)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ReestabNCellInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabNCellInfo, cellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabNCellInfo, key_gNodeB_Star),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_key_gNodeB_Star_constr_3, &asn_PER_memb_key_gNodeB_Star_constr_3,  memb_key_gNodeB_Star_constraint_1 },
+               0, 0, /* No default value */
+               "key-gNodeB-Star"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabNCellInfo, shortMAC_I),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ShortMAC_I,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortMAC-I"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReestabNCellInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReestabNCellInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* key-gNodeB-Star */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* shortMAC-I */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReestabNCellInfo_specs_1 = {
+       sizeof(struct ReestabNCellInfo),
+       offsetof(struct ReestabNCellInfo, _asn_ctx),
+       asn_MAP_ReestabNCellInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReestabNCellInfo = {
+       "ReestabNCellInfo",
+       "ReestabNCellInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReestabNCellInfo_tags_1,
+       sizeof(asn_DEF_ReestabNCellInfo_tags_1)
+               /sizeof(asn_DEF_ReestabNCellInfo_tags_1[0]), /* 1 */
+       asn_DEF_ReestabNCellInfo_tags_1,        /* Same as above */
+       sizeof(asn_DEF_ReestabNCellInfo_tags_1)
+               /sizeof(asn_DEF_ReestabNCellInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReestabNCellInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_ReestabNCellInfo_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReestabNCellInfo.h b/src/codec_utils/RRC/ReestabNCellInfo.h
new file mode 100644 (file)
index 0000000..b101169
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReestabNCellInfo_H_
+#define        _ReestabNCellInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellIdentity.h"
+#include <BIT_STRING.h>
+#include "ShortMAC-I.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReestabNCellInfo */
+typedef struct ReestabNCellInfo {
+       CellIdentity_t   cellIdentity;
+       BIT_STRING_t     key_gNodeB_Star;
+       ShortMAC_I_t     shortMAC_I;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReestabNCellInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReestabNCellInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReestabNCellInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReestabNCellInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReestabNCellInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReestabNCellInfoList.c b/src/codec_utils/RRC/ReestabNCellInfoList.c
new file mode 100644 (file)
index 0000000..27d816c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReestabNCellInfoList.h"
+
+#include "ReestabNCellInfo.h"
+static asn_oer_constraints_t asn_OER_type_ReestabNCellInfoList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_ReestabNCellInfoList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ReestabNCellInfoList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ReestabNCellInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReestabNCellInfoList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ReestabNCellInfoList_specs_1 = {
+       sizeof(struct ReestabNCellInfoList),
+       offsetof(struct ReestabNCellInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ReestabNCellInfoList = {
+       "ReestabNCellInfoList",
+       "ReestabNCellInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ReestabNCellInfoList_tags_1,
+       sizeof(asn_DEF_ReestabNCellInfoList_tags_1)
+               /sizeof(asn_DEF_ReestabNCellInfoList_tags_1[0]), /* 1 */
+       asn_DEF_ReestabNCellInfoList_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ReestabNCellInfoList_tags_1)
+               /sizeof(asn_DEF_ReestabNCellInfoList_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReestabNCellInfoList_constr_1, &asn_PER_type_ReestabNCellInfoList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_ReestabNCellInfoList_1,
+       1,      /* Single element */
+       &asn_SPC_ReestabNCellInfoList_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReestabNCellInfoList.h b/src/codec_utils/RRC/ReestabNCellInfoList.h
new file mode 100644 (file)
index 0000000..1734cd8
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReestabNCellInfoList_H_
+#define        _ReestabNCellInfoList_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 ReestabNCellInfo;
+
+/* ReestabNCellInfoList */
+typedef struct ReestabNCellInfoList {
+       A_SEQUENCE_OF(struct ReestabNCellInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReestabNCellInfoList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReestabNCellInfoList;
+extern asn_SET_OF_specifics_t asn_SPC_ReestabNCellInfoList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReestabNCellInfoList_1[1];
+extern asn_per_constraints_t asn_PER_type_ReestabNCellInfoList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReestabNCellInfoList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReestabUE-Identity.c b/src/codec_utils/RRC/ReestabUE-Identity.c
new file mode 100644 (file)
index 0000000..442a257
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReestabUE-Identity.h"
+
+asn_TYPE_member_t asn_MBR_ReestabUE_Identity_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabUE_Identity, c_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c-RNTI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabUE_Identity, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReestabUE_Identity, shortMAC_I),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ShortMAC_I,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortMAC-I"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReestabUE_Identity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReestabUE_Identity_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* shortMAC-I */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReestabUE_Identity_specs_1 = {
+       sizeof(struct ReestabUE_Identity),
+       offsetof(struct ReestabUE_Identity, _asn_ctx),
+       asn_MAP_ReestabUE_Identity_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReestabUE_Identity = {
+       "ReestabUE-Identity",
+       "ReestabUE-Identity",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReestabUE_Identity_tags_1,
+       sizeof(asn_DEF_ReestabUE_Identity_tags_1)
+               /sizeof(asn_DEF_ReestabUE_Identity_tags_1[0]), /* 1 */
+       asn_DEF_ReestabUE_Identity_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ReestabUE_Identity_tags_1)
+               /sizeof(asn_DEF_ReestabUE_Identity_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReestabUE_Identity_1,
+       3,      /* Elements count */
+       &asn_SPC_ReestabUE_Identity_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReestabUE-Identity.h b/src/codec_utils/RRC/ReestabUE-Identity.h
new file mode 100644 (file)
index 0000000..5176a50
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReestabUE_Identity_H_
+#define        _ReestabUE_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RNTI-Value.h"
+#include "PhysCellId.h"
+#include "ShortMAC-I.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReestabUE-Identity */
+typedef struct ReestabUE_Identity {
+       RNTI_Value_t     c_RNTI;
+       PhysCellId_t     physCellId;
+       ShortMAC_I_t     shortMAC_I;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReestabUE_Identity_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReestabUE_Identity;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReestabUE_Identity_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReestabUE_Identity_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReestabUE_Identity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReestablishmentCause.c b/src/codec_utils/RRC/ReestablishmentCause.c
new file mode 100644 (file)
index 0000000..215cfbc
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReestablishmentCause.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ReestablishmentCause_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ReestablishmentCause_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ReestablishmentCause_value2enum_1[] = {
+       { 0,    22,     "reconfigurationFailure" },
+       { 1,    15,     "handoverFailure" },
+       { 2,    12,     "otherFailure" },
+       { 3,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_ReestablishmentCause_enum2value_1[] = {
+       1,      /* handoverFailure(1) */
+       2,      /* otherFailure(2) */
+       0,      /* reconfigurationFailure(0) */
+       3       /* spare1(3) */
+};
+const asn_INTEGER_specifics_t asn_SPC_ReestablishmentCause_specs_1 = {
+       asn_MAP_ReestablishmentCause_value2enum_1,      /* "tag" => N; sorted by tag */
+       asn_MAP_ReestablishmentCause_enum2value_1,      /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ReestablishmentCause_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReestablishmentCause = {
+       "ReestablishmentCause",
+       "ReestablishmentCause",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ReestablishmentCause_tags_1,
+       sizeof(asn_DEF_ReestablishmentCause_tags_1)
+               /sizeof(asn_DEF_ReestablishmentCause_tags_1[0]), /* 1 */
+       asn_DEF_ReestablishmentCause_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ReestablishmentCause_tags_1)
+               /sizeof(asn_DEF_ReestablishmentCause_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReestablishmentCause_constr_1, &asn_PER_type_ReestablishmentCause_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ReestablishmentCause_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReestablishmentCause.h b/src/codec_utils/RRC/ReestablishmentCause.h
new file mode 100644 (file)
index 0000000..6e4781b
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReestablishmentCause_H_
+#define        _ReestablishmentCause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReestablishmentCause {
+       ReestablishmentCause_reconfigurationFailure     = 0,
+       ReestablishmentCause_handoverFailure    = 1,
+       ReestablishmentCause_otherFailure       = 2,
+       ReestablishmentCause_spare1     = 3
+} e_ReestablishmentCause;
+
+/* ReestablishmentCause */
+typedef long    ReestablishmentCause_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReestablishmentCause_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReestablishmentCause;
+extern const asn_INTEGER_specifics_t asn_SPC_ReestablishmentCause_specs_1;
+asn_struct_free_f ReestablishmentCause_free;
+asn_struct_print_f ReestablishmentCause_print;
+asn_constr_check_f ReestablishmentCause_constraint;
+ber_type_decoder_f ReestablishmentCause_decode_ber;
+der_type_encoder_f ReestablishmentCause_encode_der;
+xer_type_decoder_f ReestablishmentCause_decode_xer;
+xer_type_encoder_f ReestablishmentCause_encode_xer;
+oer_type_decoder_f ReestablishmentCause_decode_oer;
+oer_type_encoder_f ReestablishmentCause_encode_oer;
+per_type_decoder_f ReestablishmentCause_decode_uper;
+per_type_encoder_f ReestablishmentCause_encode_uper;
+per_type_decoder_f ReestablishmentCause_decode_aper;
+per_type_encoder_f ReestablishmentCause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReestablishmentCause_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReestablishmentInfo.c b/src/codec_utils/RRC/ReestablishmentInfo.c
new file mode 100644 (file)
index 0000000..028064e
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReestablishmentInfo.h"
+
+#include "ReestabNCellInfoList.h"
+asn_TYPE_member_t asn_MBR_ReestablishmentInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReestablishmentInfo, sourcePhysCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sourcePhysCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReestablishmentInfo, targetCellShortMAC_I),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ShortMAC_I,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetCellShortMAC-I"
+               },
+       { ATF_POINTER, 1, offsetof(struct ReestablishmentInfo, additionalReestabInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReestabNCellInfoList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "additionalReestabInfoList"
+               },
+};
+static const int asn_MAP_ReestablishmentInfo_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_ReestablishmentInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReestablishmentInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourcePhysCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetCellShortMAC-I */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* additionalReestabInfoList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReestablishmentInfo_specs_1 = {
+       sizeof(struct ReestablishmentInfo),
+       offsetof(struct ReestablishmentInfo, _asn_ctx),
+       asn_MAP_ReestablishmentInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_ReestablishmentInfo_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReestablishmentInfo = {
+       "ReestablishmentInfo",
+       "ReestablishmentInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReestablishmentInfo_tags_1,
+       sizeof(asn_DEF_ReestablishmentInfo_tags_1)
+               /sizeof(asn_DEF_ReestablishmentInfo_tags_1[0]), /* 1 */
+       asn_DEF_ReestablishmentInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_ReestablishmentInfo_tags_1)
+               /sizeof(asn_DEF_ReestablishmentInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReestablishmentInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_ReestablishmentInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReestablishmentInfo.h b/src/codec_utils/RRC/ReestablishmentInfo.h
new file mode 100644 (file)
index 0000000..95e6225
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReestablishmentInfo_H_
+#define        _ReestablishmentInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "ShortMAC-I.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ReestabNCellInfoList;
+
+/* ReestablishmentInfo */
+typedef struct ReestablishmentInfo {
+       PhysCellId_t     sourcePhysCellId;
+       ShortMAC_I_t     targetCellShortMAC_I;
+       struct ReestabNCellInfoList     *additionalReestabInfoList;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReestablishmentInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReestablishmentInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReestablishmentInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReestablishmentInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReestablishmentInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReferenceSignalConfig.c b/src/codec_utils/RRC/ReferenceSignalConfig.c
new file mode 100644 (file)
index 0000000..484e35c
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReferenceSignalConfig.h"
+
+#include "SSB-ConfigMobility.h"
+#include "CSI-RS-ResourceConfigMobility.h"
+static asn_oer_constraints_t asn_OER_type_csi_rs_ResourceConfigMobility_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_rs_ResourceConfigMobility_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_rs_ResourceConfigMobility_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_ResourceConfigMobility,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_rs_ResourceConfigMobility_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_csi_rs_ResourceConfigMobility_specs_3 = {
+       sizeof(struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility),
+       offsetof(struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility, _asn_ctx),
+       offsetof(struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility, present),
+       sizeof(((struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility *)0)->present),
+       asn_MAP_csi_rs_ResourceConfigMobility_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_rs_ResourceConfigMobility_3 = {
+       "csi-rs-ResourceConfigMobility",
+       "csi-rs-ResourceConfigMobility",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_csi_rs_ResourceConfigMobility_constr_3, &asn_PER_type_csi_rs_ResourceConfigMobility_constr_3, CHOICE_constraint },
+       asn_MBR_csi_rs_ResourceConfigMobility_3,
+       2,      /* Elements count */
+       &asn_SPC_csi_rs_ResourceConfigMobility_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ReferenceSignalConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct ReferenceSignalConfig, ssb_ConfigMobility),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_ConfigMobility,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-ConfigMobility"
+               },
+       { ATF_POINTER, 1, offsetof(struct ReferenceSignalConfig, csi_rs_ResourceConfigMobility),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_csi_rs_ResourceConfigMobility_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-rs-ResourceConfigMobility"
+               },
+};
+static const int asn_MAP_ReferenceSignalConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ReferenceSignalConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReferenceSignalConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-ConfigMobility */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-rs-ResourceConfigMobility */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReferenceSignalConfig_specs_1 = {
+       sizeof(struct ReferenceSignalConfig),
+       offsetof(struct ReferenceSignalConfig, _asn_ctx),
+       asn_MAP_ReferenceSignalConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_ReferenceSignalConfig_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReferenceSignalConfig = {
+       "ReferenceSignalConfig",
+       "ReferenceSignalConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReferenceSignalConfig_tags_1,
+       sizeof(asn_DEF_ReferenceSignalConfig_tags_1)
+               /sizeof(asn_DEF_ReferenceSignalConfig_tags_1[0]), /* 1 */
+       asn_DEF_ReferenceSignalConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ReferenceSignalConfig_tags_1)
+               /sizeof(asn_DEF_ReferenceSignalConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReferenceSignalConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_ReferenceSignalConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReferenceSignalConfig.h b/src/codec_utils/RRC/ReferenceSignalConfig.h
new file mode 100644 (file)
index 0000000..ca20207
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReferenceSignalConfig_H_
+#define        _ReferenceSignalConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR {
+       ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR_NOTHING,        /* No components present */
+       ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR_release,
+       ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR_setup
+} ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR;
+
+/* Forward declarations */
+struct SSB_ConfigMobility;
+struct CSI_RS_ResourceConfigMobility;
+
+/* ReferenceSignalConfig */
+typedef struct ReferenceSignalConfig {
+       struct SSB_ConfigMobility       *ssb_ConfigMobility;    /* OPTIONAL */
+       struct ReferenceSignalConfig__csi_rs_ResourceConfigMobility {
+               ReferenceSignalConfig__csi_rs_ResourceConfigMobility_PR present;
+               union ReferenceSignalConfig__csi_rs_ResourceConfigMobility_u {
+                       NULL_t   release;
+                       struct CSI_RS_ResourceConfigMobility    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_rs_ResourceConfigMobility;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReferenceSignalConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReferenceSignalConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReferenceSignalConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReferenceSignalConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReferenceSignalConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RegisteredAMF.c b/src/codec_utils/RRC/RegisteredAMF.c
new file mode 100644 (file)
index 0000000..7e1f3eb
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RegisteredAMF.h"
+
+#include "PLMN-IdentitY.h"
+asn_TYPE_member_t asn_MBR_RegisteredAMF_1[] = {
+       { ATF_POINTER, 1, offsetof(struct RegisteredAMF, plmn_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PLMN_IdentitY,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmn-Identity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct RegisteredAMF, amf_Identifier),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AMF_Identifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amf-Identifier"
+               },
+};
+static const int asn_MAP_RegisteredAMF_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_RegisteredAMF_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_RegisteredAMF_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* amf-Identifier */
+};
+asn_SEQUENCE_specifics_t asn_SPC_RegisteredAMF_specs_1 = {
+       sizeof(struct RegisteredAMF),
+       offsetof(struct RegisteredAMF, _asn_ctx),
+       asn_MAP_RegisteredAMF_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_RegisteredAMF_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_RegisteredAMF = {
+       "RegisteredAMF",
+       "RegisteredAMF",
+       &asn_OP_SEQUENCE,
+       asn_DEF_RegisteredAMF_tags_1,
+       sizeof(asn_DEF_RegisteredAMF_tags_1)
+               /sizeof(asn_DEF_RegisteredAMF_tags_1[0]), /* 1 */
+       asn_DEF_RegisteredAMF_tags_1,   /* Same as above */
+       sizeof(asn_DEF_RegisteredAMF_tags_1)
+               /sizeof(asn_DEF_RegisteredAMF_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_RegisteredAMF_1,
+       2,      /* Elements count */
+       &asn_SPC_RegisteredAMF_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/RegisteredAMF.h b/src/codec_utils/RRC/RegisteredAMF.h
new file mode 100644 (file)
index 0000000..434c42e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RegisteredAMF_H_
+#define        _RegisteredAMF_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AMF-Identifier.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct PLMN_IdentitY;
+
+/* RegisteredAMF */
+typedef struct RegisteredAMF {
+       struct PLMN_IdentitY    *plmn_Identity; /* OPTIONAL */
+       AMF_Identifier_t         amf_Identifier;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} RegisteredAMF_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RegisteredAMF;
+extern asn_SEQUENCE_specifics_t asn_SPC_RegisteredAMF_specs_1;
+extern asn_TYPE_member_t asn_MBR_RegisteredAMF_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RegisteredAMF_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/RejectWaitTime.c b/src/codec_utils/RRC/RejectWaitTime.c
new file mode 100644 (file)
index 0000000..f6f2fc8
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "RejectWaitTime.h"
+
+int
+RejectWaitTime_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 <= 16)) {
+               /* 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_RejectWaitTime_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..16) */,
+       -1};
+asn_per_constraints_t asn_PER_type_RejectWaitTime_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_RejectWaitTime_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_RejectWaitTime = {
+       "RejectWaitTime",
+       "RejectWaitTime",
+       &asn_OP_NativeInteger,
+       asn_DEF_RejectWaitTime_tags_1,
+       sizeof(asn_DEF_RejectWaitTime_tags_1)
+               /sizeof(asn_DEF_RejectWaitTime_tags_1[0]), /* 1 */
+       asn_DEF_RejectWaitTime_tags_1,  /* Same as above */
+       sizeof(asn_DEF_RejectWaitTime_tags_1)
+               /sizeof(asn_DEF_RejectWaitTime_tags_1[0]), /* 1 */
+       { &asn_OER_type_RejectWaitTime_constr_1, &asn_PER_type_RejectWaitTime_constr_1, RejectWaitTime_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/RejectWaitTime.h b/src/codec_utils/RRC/RejectWaitTime.h
new file mode 100644 (file)
index 0000000..ae38910
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _RejectWaitTime_H_
+#define        _RejectWaitTime_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RejectWaitTime */
+typedef long    RejectWaitTime_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_RejectWaitTime_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_RejectWaitTime;
+asn_struct_free_f RejectWaitTime_free;
+asn_struct_print_f RejectWaitTime_print;
+asn_constr_check_f RejectWaitTime_constraint;
+ber_type_decoder_f RejectWaitTime_decode_ber;
+der_type_encoder_f RejectWaitTime_encode_der;
+xer_type_decoder_f RejectWaitTime_decode_xer;
+xer_type_encoder_f RejectWaitTime_encode_xer;
+oer_type_decoder_f RejectWaitTime_decode_oer;
+oer_type_encoder_f RejectWaitTime_encode_oer;
+per_type_decoder_f RejectWaitTime_decode_uper;
+per_type_encoder_f RejectWaitTime_encode_uper;
+per_type_decoder_f RejectWaitTime_decode_aper;
+per_type_encoder_f RejectWaitTime_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RejectWaitTime_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportCGI-EUTRA.c b/src/codec_utils/RRC/ReportCGI-EUTRA.c
new file mode 100644 (file)
index 0000000..99b91e0
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportCGI-EUTRA.h"
+
+asn_TYPE_member_t asn_MBR_ReportCGI_EUTRA_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReportCGI_EUTRA, cellForWhichToReportCGI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EUTRA_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellForWhichToReportCGI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportCGI_EUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReportCGI_EUTRA_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellForWhichToReportCGI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReportCGI_EUTRA_specs_1 = {
+       sizeof(struct ReportCGI_EUTRA),
+       offsetof(struct ReportCGI_EUTRA, _asn_ctx),
+       asn_MAP_ReportCGI_EUTRA_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_ReportCGI_EUTRA = {
+       "ReportCGI-EUTRA",
+       "ReportCGI-EUTRA",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReportCGI_EUTRA_tags_1,
+       sizeof(asn_DEF_ReportCGI_EUTRA_tags_1)
+               /sizeof(asn_DEF_ReportCGI_EUTRA_tags_1[0]), /* 1 */
+       asn_DEF_ReportCGI_EUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_ReportCGI_EUTRA_tags_1)
+               /sizeof(asn_DEF_ReportCGI_EUTRA_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReportCGI_EUTRA_1,
+       1,      /* Elements count */
+       &asn_SPC_ReportCGI_EUTRA_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportCGI-EUTRA.h b/src/codec_utils/RRC/ReportCGI-EUTRA.h
new file mode 100644 (file)
index 0000000..826be0d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportCGI_EUTRA_H_
+#define        _ReportCGI_EUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "EUTRA-PhysCellId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReportCGI-EUTRA */
+typedef struct ReportCGI_EUTRA {
+       EUTRA_PhysCellId_t       cellForWhichToReportCGI;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportCGI_EUTRA_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportCGI_EUTRA;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReportCGI_EUTRA_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportCGI_EUTRA_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportCGI_EUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportCGI.c b/src/codec_utils/RRC/ReportCGI.c
new file mode 100644 (file)
index 0000000..a3cbb93
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportCGI.h"
+
+asn_TYPE_member_t asn_MBR_ReportCGI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReportCGI, cellForWhichToReportCGI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellForWhichToReportCGI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportCGI_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReportCGI_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* cellForWhichToReportCGI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReportCGI_specs_1 = {
+       sizeof(struct ReportCGI),
+       offsetof(struct ReportCGI, _asn_ctx),
+       asn_MAP_ReportCGI_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_ReportCGI = {
+       "ReportCGI",
+       "ReportCGI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReportCGI_tags_1,
+       sizeof(asn_DEF_ReportCGI_tags_1)
+               /sizeof(asn_DEF_ReportCGI_tags_1[0]), /* 1 */
+       asn_DEF_ReportCGI_tags_1,       /* Same as above */
+       sizeof(asn_DEF_ReportCGI_tags_1)
+               /sizeof(asn_DEF_ReportCGI_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReportCGI_1,
+       1,      /* Elements count */
+       &asn_SPC_ReportCGI_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportCGI.h b/src/codec_utils/RRC/ReportCGI.h
new file mode 100644 (file)
index 0000000..f65807d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportCGI_H_
+#define        _ReportCGI_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReportCGI */
+typedef struct ReportCGI {
+       PhysCellId_t     cellForWhichToReportCGI;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportCGI_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportCGI;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReportCGI_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportCGI_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportCGI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigId.c b/src/codec_utils/RRC/ReportConfigId.c
new file mode 100644 (file)
index 0000000..f5ed104
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigId.h"
+
+int
+ReportConfigId_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 <= 64)) {
+               /* 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_ReportConfigId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ReportConfigId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReportConfigId = {
+       "ReportConfigId",
+       "ReportConfigId",
+       &asn_OP_NativeInteger,
+       asn_DEF_ReportConfigId_tags_1,
+       sizeof(asn_DEF_ReportConfigId_tags_1)
+               /sizeof(asn_DEF_ReportConfigId_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigId_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ReportConfigId_tags_1)
+               /sizeof(asn_DEF_ReportConfigId_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReportConfigId_constr_1, &asn_PER_type_ReportConfigId_constr_1, ReportConfigId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigId.h b/src/codec_utils/RRC/ReportConfigId.h
new file mode 100644 (file)
index 0000000..c9a9ad5
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigId_H_
+#define        _ReportConfigId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReportConfigId */
+typedef long    ReportConfigId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReportConfigId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigId;
+asn_struct_free_f ReportConfigId_free;
+asn_struct_print_f ReportConfigId_print;
+asn_constr_check_f ReportConfigId_constraint;
+ber_type_decoder_f ReportConfigId_decode_ber;
+der_type_encoder_f ReportConfigId_encode_der;
+xer_type_decoder_f ReportConfigId_decode_xer;
+xer_type_encoder_f ReportConfigId_encode_xer;
+oer_type_decoder_f ReportConfigId_decode_oer;
+oer_type_encoder_f ReportConfigId_encode_oer;
+per_type_decoder_f ReportConfigId_decode_uper;
+per_type_encoder_f ReportConfigId_encode_uper;
+per_type_decoder_f ReportConfigId_decode_aper;
+per_type_encoder_f ReportConfigId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigInterRAT.c b/src/codec_utils/RRC/ReportConfigInterRAT.c
new file mode 100644 (file)
index 0000000..4be492c
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigInterRAT.h"
+
+#include "PeriodicalReportConfigInterRAT.h"
+#include "EventTriggerConfigInterRAT.h"
+#include "ReportCGI-EUTRA.h"
+static asn_oer_constraints_t asn_OER_type_reportType_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportType_constr_2 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_reportType_2[] = {
+       { ATF_POINTER, 0, offsetof(struct ReportConfigInterRAT__reportType, choice.periodical),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PeriodicalReportConfigInterRAT,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodical"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReportConfigInterRAT__reportType, choice.eventTriggered),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EventTriggerConfigInterRAT,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventTriggered"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReportConfigInterRAT__reportType, choice.reportCGI),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportCGI_EUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportCGI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportType_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodical */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventTriggered */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* reportCGI */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportType_specs_2 = {
+       sizeof(struct ReportConfigInterRAT__reportType),
+       offsetof(struct ReportConfigInterRAT__reportType, _asn_ctx),
+       offsetof(struct ReportConfigInterRAT__reportType, present),
+       sizeof(((struct ReportConfigInterRAT__reportType *)0)->present),
+       asn_MAP_reportType_tag2el_2,
+       3,      /* Count of tags in the map */
+       0, 0,
+       3       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportType_2 = {
+       "reportType",
+       "reportType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_reportType_constr_2, &asn_PER_type_reportType_constr_2, CHOICE_constraint },
+       asn_MBR_reportType_2,
+       3,      /* Elements count */
+       &asn_SPC_reportType_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ReportConfigInterRAT_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReportConfigInterRAT, reportType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_reportType_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportType"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigInterRAT_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReportConfigInterRAT_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReportConfigInterRAT_specs_1 = {
+       sizeof(struct ReportConfigInterRAT),
+       offsetof(struct ReportConfigInterRAT, _asn_ctx),
+       asn_MAP_ReportConfigInterRAT_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_ReportConfigInterRAT = {
+       "ReportConfigInterRAT",
+       "ReportConfigInterRAT",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReportConfigInterRAT_tags_1,
+       sizeof(asn_DEF_ReportConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_ReportConfigInterRAT_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigInterRAT_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ReportConfigInterRAT_tags_1)
+               /sizeof(asn_DEF_ReportConfigInterRAT_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReportConfigInterRAT_1,
+       1,      /* Elements count */
+       &asn_SPC_ReportConfigInterRAT_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigInterRAT.h b/src/codec_utils/RRC/ReportConfigInterRAT.h
new file mode 100644 (file)
index 0000000..d3d0a50
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigInterRAT_H_
+#define        _ReportConfigInterRAT_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReportConfigInterRAT__reportType_PR {
+       ReportConfigInterRAT__reportType_PR_NOTHING,    /* No components present */
+       ReportConfigInterRAT__reportType_PR_periodical,
+       ReportConfigInterRAT__reportType_PR_eventTriggered,
+       ReportConfigInterRAT__reportType_PR_reportCGI
+       /* Extensions may appear below */
+       
+} ReportConfigInterRAT__reportType_PR;
+
+/* Forward declarations */
+struct PeriodicalReportConfigInterRAT;
+struct EventTriggerConfigInterRAT;
+struct ReportCGI_EUTRA;
+
+/* ReportConfigInterRAT */
+typedef struct ReportConfigInterRAT {
+       struct ReportConfigInterRAT__reportType {
+               ReportConfigInterRAT__reportType_PR present;
+               union ReportConfigInterRAT__reportType_u {
+                       struct PeriodicalReportConfigInterRAT   *periodical;
+                       struct EventTriggerConfigInterRAT       *eventTriggered;
+                       struct ReportCGI_EUTRA  *reportCGI;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } reportType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportConfigInterRAT_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigInterRAT;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReportConfigInterRAT_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportConfigInterRAT_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigInterRAT_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigNR.c b/src/codec_utils/RRC/ReportConfigNR.c
new file mode 100644 (file)
index 0000000..9af2d32
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigNR.h"
+
+#include "PeriodicalReportConfig.h"
+#include "EventTriggerConfig.h"
+#include "ReportCGI.h"
+static asn_oer_constraints_t asn_OER_type_reportType_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportType_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_reportType_2[] = {
+       { ATF_POINTER, 0, offsetof(struct ReportConfigNR__reportType, choice.periodical),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PeriodicalReportConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodical"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReportConfigNR__reportType, choice.eventTriggered),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_EventTriggerConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eventTriggered"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReportConfigNR__reportType, choice.reportCGI),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportCGI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportCGI"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportType_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodical */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* eventTriggered */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* reportCGI */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportType_specs_2 = {
+       sizeof(struct ReportConfigNR__reportType),
+       offsetof(struct ReportConfigNR__reportType, _asn_ctx),
+       offsetof(struct ReportConfigNR__reportType, present),
+       sizeof(((struct ReportConfigNR__reportType *)0)->present),
+       asn_MAP_reportType_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_reportType_2 = {
+       "reportType",
+       "reportType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_reportType_constr_2, &asn_PER_type_reportType_constr_2, CHOICE_constraint },
+       asn_MBR_reportType_2,
+       3,      /* Elements count */
+       &asn_SPC_reportType_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ReportConfigNR_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReportConfigNR, reportType),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_reportType_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportType"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReportConfigNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* reportType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReportConfigNR_specs_1 = {
+       sizeof(struct ReportConfigNR),
+       offsetof(struct ReportConfigNR, _asn_ctx),
+       asn_MAP_ReportConfigNR_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_ReportConfigNR = {
+       "ReportConfigNR",
+       "ReportConfigNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReportConfigNR_tags_1,
+       sizeof(asn_DEF_ReportConfigNR_tags_1)
+               /sizeof(asn_DEF_ReportConfigNR_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigNR_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ReportConfigNR_tags_1)
+               /sizeof(asn_DEF_ReportConfigNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReportConfigNR_1,
+       1,      /* Elements count */
+       &asn_SPC_ReportConfigNR_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigNR.h b/src/codec_utils/RRC/ReportConfigNR.h
new file mode 100644 (file)
index 0000000..190f857
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigNR_H_
+#define        _ReportConfigNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReportConfigNR__reportType_PR {
+       ReportConfigNR__reportType_PR_NOTHING,  /* No components present */
+       ReportConfigNR__reportType_PR_periodical,
+       ReportConfigNR__reportType_PR_eventTriggered,
+       /* Extensions may appear below */
+       ReportConfigNR__reportType_PR_reportCGI
+} ReportConfigNR__reportType_PR;
+
+/* Forward declarations */
+struct PeriodicalReportConfig;
+struct EventTriggerConfig;
+struct ReportCGI;
+
+/* ReportConfigNR */
+typedef struct ReportConfigNR {
+       struct ReportConfigNR__reportType {
+               ReportConfigNR__reportType_PR present;
+               union ReportConfigNR__reportType_u {
+                       struct PeriodicalReportConfig   *periodical;
+                       struct EventTriggerConfig       *eventTriggered;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct ReportCGI        *reportCGI;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } reportType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportConfigNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReportConfigNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportConfigNR_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigToAddMod.c b/src/codec_utils/RRC/ReportConfigToAddMod.c
new file mode 100644 (file)
index 0000000..55b061c
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigToAddMod.h"
+
+#include "ReportConfigNR.h"
+#include "ReportConfigInterRAT.h"
+static asn_oer_constraints_t asn_OER_type_reportConfig_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reportConfig_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_TYPE_member_t asn_MBR_reportConfig_3[] = {
+       { ATF_POINTER, 0, offsetof(struct ReportConfigToAddMod__reportConfig, choice.reportConfigNR),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigNR"
+               },
+       { ATF_POINTER, 0, offsetof(struct ReportConfigToAddMod__reportConfig, choice.reportConfigInterRAT),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigInterRAT,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigInterRAT"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_reportConfig_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportConfigNR */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportConfigInterRAT */
+};
+static asn_CHOICE_specifics_t asn_SPC_reportConfig_specs_3 = {
+       sizeof(struct ReportConfigToAddMod__reportConfig),
+       offsetof(struct ReportConfigToAddMod__reportConfig, _asn_ctx),
+       offsetof(struct ReportConfigToAddMod__reportConfig, present),
+       sizeof(((struct ReportConfigToAddMod__reportConfig *)0)->present),
+       asn_MAP_reportConfig_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       1       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_reportConfig_3 = {
+       "reportConfig",
+       "reportConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_reportConfig_constr_3, &asn_PER_type_reportConfig_constr_3, CHOICE_constraint },
+       asn_MBR_reportConfig_3,
+       2,      /* Elements count */
+       &asn_SPC_reportConfig_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ReportConfigToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ReportConfigToAddMod, reportConfigId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ReportConfigToAddMod, reportConfig),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_reportConfig_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfig"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ReportConfigToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reportConfigId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* reportConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ReportConfigToAddMod_specs_1 = {
+       sizeof(struct ReportConfigToAddMod),
+       offsetof(struct ReportConfigToAddMod, _asn_ctx),
+       asn_MAP_ReportConfigToAddMod_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ReportConfigToAddMod = {
+       "ReportConfigToAddMod",
+       "ReportConfigToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ReportConfigToAddMod_tags_1,
+       sizeof(asn_DEF_ReportConfigToAddMod_tags_1)
+               /sizeof(asn_DEF_ReportConfigToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigToAddMod_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ReportConfigToAddMod_tags_1)
+               /sizeof(asn_DEF_ReportConfigToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ReportConfigToAddMod_1,
+       2,      /* Elements count */
+       &asn_SPC_ReportConfigToAddMod_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigToAddMod.h b/src/codec_utils/RRC/ReportConfigToAddMod.h
new file mode 100644 (file)
index 0000000..0790171
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigToAddMod_H_
+#define        _ReportConfigToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ReportConfigId.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReportConfigToAddMod__reportConfig_PR {
+       ReportConfigToAddMod__reportConfig_PR_NOTHING,  /* No components present */
+       ReportConfigToAddMod__reportConfig_PR_reportConfigNR,
+       /* Extensions may appear below */
+       ReportConfigToAddMod__reportConfig_PR_reportConfigInterRAT
+} ReportConfigToAddMod__reportConfig_PR;
+
+/* Forward declarations */
+struct ReportConfigNR;
+struct ReportConfigInterRAT;
+
+/* ReportConfigToAddMod */
+typedef struct ReportConfigToAddMod {
+       ReportConfigId_t         reportConfigId;
+       struct ReportConfigToAddMod__reportConfig {
+               ReportConfigToAddMod__reportConfig_PR present;
+               union ReportConfigToAddMod__reportConfig_u {
+                       struct ReportConfigNR   *reportConfigNR;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+                       struct ReportConfigInterRAT     *reportConfigInterRAT;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } reportConfig;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportConfigToAddMod_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_ReportConfigToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportConfigToAddMod_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigToAddModList.c b/src/codec_utils/RRC/ReportConfigToAddModList.c
new file mode 100644 (file)
index 0000000..947c414
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigToAddModList.h"
+
+#include "ReportConfigToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_ReportConfigToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_ReportConfigToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ReportConfigToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ReportConfigToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ReportConfigToAddModList_specs_1 = {
+       sizeof(struct ReportConfigToAddModList),
+       offsetof(struct ReportConfigToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ReportConfigToAddModList = {
+       "ReportConfigToAddModList",
+       "ReportConfigToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ReportConfigToAddModList_tags_1,
+       sizeof(asn_DEF_ReportConfigToAddModList_tags_1)
+               /sizeof(asn_DEF_ReportConfigToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigToAddModList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_ReportConfigToAddModList_tags_1)
+               /sizeof(asn_DEF_ReportConfigToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReportConfigToAddModList_constr_1, &asn_PER_type_ReportConfigToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_ReportConfigToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_ReportConfigToAddModList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigToAddModList.h b/src/codec_utils/RRC/ReportConfigToAddModList.h
new file mode 100644 (file)
index 0000000..ac433ed
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigToAddModList_H_
+#define        _ReportConfigToAddModList_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 ReportConfigToAddMod;
+
+/* ReportConfigToAddModList */
+typedef struct ReportConfigToAddModList {
+       A_SEQUENCE_OF(struct ReportConfigToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportConfigToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_ReportConfigToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportConfigToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_ReportConfigToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportConfigToRemoveList.c b/src/codec_utils/RRC/ReportConfigToRemoveList.c
new file mode 100644 (file)
index 0000000..b6e153d
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportConfigToRemoveList.h"
+
+static asn_oer_constraints_t asn_OER_type_ReportConfigToRemoveList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_ReportConfigToRemoveList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ReportConfigToRemoveList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ReportConfigId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ReportConfigToRemoveList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ReportConfigToRemoveList_specs_1 = {
+       sizeof(struct ReportConfigToRemoveList),
+       offsetof(struct ReportConfigToRemoveList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ReportConfigToRemoveList = {
+       "ReportConfigToRemoveList",
+       "ReportConfigToRemoveList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ReportConfigToRemoveList_tags_1,
+       sizeof(asn_DEF_ReportConfigToRemoveList_tags_1)
+               /sizeof(asn_DEF_ReportConfigToRemoveList_tags_1[0]), /* 1 */
+       asn_DEF_ReportConfigToRemoveList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_ReportConfigToRemoveList_tags_1)
+               /sizeof(asn_DEF_ReportConfigToRemoveList_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReportConfigToRemoveList_constr_1, &asn_PER_type_ReportConfigToRemoveList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_ReportConfigToRemoveList_1,
+       1,      /* Single element */
+       &asn_SPC_ReportConfigToRemoveList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportConfigToRemoveList.h b/src/codec_utils/RRC/ReportConfigToRemoveList.h
new file mode 100644 (file)
index 0000000..5c12ed1
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportConfigToRemoveList_H_
+#define        _ReportConfigToRemoveList_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ReportConfigId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReportConfigToRemoveList */
+typedef struct ReportConfigToRemoveList {
+       A_SEQUENCE_OF(ReportConfigId_t) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ReportConfigToRemoveList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ReportConfigToRemoveList;
+extern asn_SET_OF_specifics_t asn_SPC_ReportConfigToRemoveList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ReportConfigToRemoveList_1[1];
+extern asn_per_constraints_t asn_PER_type_ReportConfigToRemoveList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportConfigToRemoveList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReportInterval.c b/src/codec_utils/RRC/ReportInterval.c
new file mode 100644 (file)
index 0000000..b9a996f
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReportInterval.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ReportInterval_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ReportInterval_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ReportInterval_value2enum_1[] = {
+       { 0,    5,      "ms120" },
+       { 1,    5,      "ms240" },
+       { 2,    5,      "ms480" },
+       { 3,    5,      "ms640" },
+       { 4,    6,      "ms1024" },
+       { 5,    6,      "ms2048" },
+       { 6,    6,      "ms5120" },
+       { 7,    7,      "ms10240" },
+       { 8,    7,      "ms20480" },
+       { 9,    7,      "ms40960" },
+       { 10,   4,      "min1" },
+       { 11,   4,      "min6" },
+       { 12,   5,      "min12" },
+       { 13,   5,      "min30" }
+};
+static const unsigned int asn_MAP_ReportInterval_enum2value_1[] = {
+       10,     /* min1(10) */
+       12,     /* min12(12) */
+       13,     /* min30(13) */
+       11,     /* min6(11) */
+       4,      /* ms1024(4) */
+       7,      /* ms10240(7) */
+       0,      /* ms120(0) */
+       5,      /* ms2048(5) */
+       8,      /* ms20480(8) */
+       1,      /* ms240(1) */
+       9,      /* ms40960(9) */
+       2,      /* ms480(2) */
+       6,      /* ms5120(6) */
+       3       /* ms640(3) */
+};
+const asn_INTEGER_specifics_t asn_SPC_ReportInterval_specs_1 = {
+       asn_MAP_ReportInterval_value2enum_1,    /* "tag" => N; sorted by tag */
+       asn_MAP_ReportInterval_enum2value_1,    /* N => "tag"; sorted by N */
+       14,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ReportInterval_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReportInterval = {
+       "ReportInterval",
+       "ReportInterval",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ReportInterval_tags_1,
+       sizeof(asn_DEF_ReportInterval_tags_1)
+               /sizeof(asn_DEF_ReportInterval_tags_1[0]), /* 1 */
+       asn_DEF_ReportInterval_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ReportInterval_tags_1)
+               /sizeof(asn_DEF_ReportInterval_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReportInterval_constr_1, &asn_PER_type_ReportInterval_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ReportInterval_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ReportInterval.h b/src/codec_utils/RRC/ReportInterval.h
new file mode 100644 (file)
index 0000000..c52e84e
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReportInterval_H_
+#define        _ReportInterval_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ReportInterval {
+       ReportInterval_ms120    = 0,
+       ReportInterval_ms240    = 1,
+       ReportInterval_ms480    = 2,
+       ReportInterval_ms640    = 3,
+       ReportInterval_ms1024   = 4,
+       ReportInterval_ms2048   = 5,
+       ReportInterval_ms5120   = 6,
+       ReportInterval_ms10240  = 7,
+       ReportInterval_ms20480  = 8,
+       ReportInterval_ms40960  = 9,
+       ReportInterval_min1     = 10,
+       ReportInterval_min6     = 11,
+       ReportInterval_min12    = 12,
+       ReportInterval_min30    = 13
+} e_ReportInterval;
+
+/* ReportInterval */
+typedef long    ReportInterval_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReportInterval_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReportInterval;
+extern const asn_INTEGER_specifics_t asn_SPC_ReportInterval_specs_1;
+asn_struct_free_f ReportInterval_free;
+asn_struct_print_f ReportInterval_print;
+asn_constr_check_f ReportInterval_constraint;
+ber_type_decoder_f ReportInterval_decode_ber;
+der_type_encoder_f ReportInterval_encode_der;
+xer_type_decoder_f ReportInterval_decode_xer;
+xer_type_encoder_f ReportInterval_encode_xer;
+oer_type_decoder_f ReportInterval_decode_oer;
+oer_type_encoder_f ReportInterval_encode_oer;
+per_type_decoder_f ReportInterval_decode_uper;
+per_type_encoder_f ReportInterval_encode_uper;
+per_type_decoder_f ReportInterval_decode_aper;
+per_type_encoder_f ReportInterval_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReportInterval_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReselectionThreshold.c b/src/codec_utils/RRC/ReselectionThreshold.c
new file mode 100644 (file)
index 0000000..51b9837
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReselectionThreshold.h"
+
+int
+ReselectionThreshold_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 <= 31)) {
+               /* 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_ReselectionThreshold_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ReselectionThreshold_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ReselectionThreshold_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReselectionThreshold = {
+       "ReselectionThreshold",
+       "ReselectionThreshold",
+       &asn_OP_NativeInteger,
+       asn_DEF_ReselectionThreshold_tags_1,
+       sizeof(asn_DEF_ReselectionThreshold_tags_1)
+               /sizeof(asn_DEF_ReselectionThreshold_tags_1[0]), /* 1 */
+       asn_DEF_ReselectionThreshold_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ReselectionThreshold_tags_1)
+               /sizeof(asn_DEF_ReselectionThreshold_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReselectionThreshold_constr_1, &asn_PER_type_ReselectionThreshold_constr_1, ReselectionThreshold_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ReselectionThreshold.h b/src/codec_utils/RRC/ReselectionThreshold.h
new file mode 100644 (file)
index 0000000..54cd48d
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReselectionThreshold_H_
+#define        _ReselectionThreshold_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReselectionThreshold */
+typedef long    ReselectionThreshold_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReselectionThreshold_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReselectionThreshold;
+asn_struct_free_f ReselectionThreshold_free;
+asn_struct_print_f ReselectionThreshold_print;
+asn_constr_check_f ReselectionThreshold_constraint;
+ber_type_decoder_f ReselectionThreshold_decode_ber;
+der_type_encoder_f ReselectionThreshold_encode_der;
+xer_type_decoder_f ReselectionThreshold_decode_xer;
+xer_type_encoder_f ReselectionThreshold_encode_xer;
+oer_type_decoder_f ReselectionThreshold_decode_oer;
+oer_type_encoder_f ReselectionThreshold_encode_oer;
+per_type_decoder_f ReselectionThreshold_decode_uper;
+per_type_encoder_f ReselectionThreshold_encode_uper;
+per_type_decoder_f ReselectionThreshold_decode_aper;
+per_type_encoder_f ReselectionThreshold_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReselectionThreshold_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ReselectionThresholdQ.c b/src/codec_utils/RRC/ReselectionThresholdQ.c
new file mode 100644 (file)
index 0000000..0f7a3f9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ReselectionThresholdQ.h"
+
+int
+ReselectionThresholdQ_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 <= 31)) {
+               /* 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_ReselectionThresholdQ_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ReselectionThresholdQ_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ReselectionThresholdQ_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ReselectionThresholdQ = {
+       "ReselectionThresholdQ",
+       "ReselectionThresholdQ",
+       &asn_OP_NativeInteger,
+       asn_DEF_ReselectionThresholdQ_tags_1,
+       sizeof(asn_DEF_ReselectionThresholdQ_tags_1)
+               /sizeof(asn_DEF_ReselectionThresholdQ_tags_1[0]), /* 1 */
+       asn_DEF_ReselectionThresholdQ_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ReselectionThresholdQ_tags_1)
+               /sizeof(asn_DEF_ReselectionThresholdQ_tags_1[0]), /* 1 */
+       { &asn_OER_type_ReselectionThresholdQ_constr_1, &asn_PER_type_ReselectionThresholdQ_constr_1, ReselectionThresholdQ_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ReselectionThresholdQ.h b/src/codec_utils/RRC/ReselectionThresholdQ.h
new file mode 100644 (file)
index 0000000..77e2045
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ReselectionThresholdQ_H_
+#define        _ReselectionThresholdQ_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ReselectionThresholdQ */
+typedef long    ReselectionThresholdQ_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ReselectionThresholdQ_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ReselectionThresholdQ;
+asn_struct_free_f ReselectionThresholdQ_free;
+asn_struct_print_f ReselectionThresholdQ_print;
+asn_constr_check_f ReselectionThresholdQ_constraint;
+ber_type_decoder_f ReselectionThresholdQ_decode_ber;
+der_type_encoder_f ReselectionThresholdQ_encode_der;
+xer_type_decoder_f ReselectionThresholdQ_decode_xer;
+xer_type_encoder_f ReselectionThresholdQ_encode_xer;
+oer_type_decoder_f ReselectionThresholdQ_decode_oer;
+oer_type_encoder_f ReselectionThresholdQ_encode_oer;
+per_type_decoder_f ReselectionThresholdQ_decode_uper;
+per_type_encoder_f ReselectionThresholdQ_encode_uper;
+per_type_decoder_f ReselectionThresholdQ_decode_aper;
+per_type_encoder_f ReselectionThresholdQ_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ReselectionThresholdQ_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ResultsPerCSI-RS-Index.c b/src/codec_utils/RRC/ResultsPerCSI-RS-Index.c
new file mode 100644 (file)
index 0000000..706beca
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ResultsPerCSI-RS-Index.h"
+
+#include "MeasQuantityResults.h"
+asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_Index_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ResultsPerCSI_RS_Index, csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+       { ATF_POINTER, 1, offsetof(struct ResultsPerCSI_RS_Index, csi_RS_Results),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasQuantityResults,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Results"
+               },
+};
+static const int asn_MAP_ResultsPerCSI_RS_Index_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_ResultsPerCSI_RS_Index_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ResultsPerCSI_RS_Index_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* csi-RS-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Results */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ResultsPerCSI_RS_Index_specs_1 = {
+       sizeof(struct ResultsPerCSI_RS_Index),
+       offsetof(struct ResultsPerCSI_RS_Index, _asn_ctx),
+       asn_MAP_ResultsPerCSI_RS_Index_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_ResultsPerCSI_RS_Index_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_Index = {
+       "ResultsPerCSI-RS-Index",
+       "ResultsPerCSI-RS-Index",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ResultsPerCSI_RS_Index_tags_1,
+       sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1)
+               /sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1[0]), /* 1 */
+       asn_DEF_ResultsPerCSI_RS_Index_tags_1,  /* Same as above */
+       sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1)
+               /sizeof(asn_DEF_ResultsPerCSI_RS_Index_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ResultsPerCSI_RS_Index_1,
+       2,      /* Elements count */
+       &asn_SPC_ResultsPerCSI_RS_Index_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ResultsPerCSI-RS-Index.h b/src/codec_utils/RRC/ResultsPerCSI-RS-Index.h
new file mode 100644 (file)
index 0000000..9d3e487
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ResultsPerCSI_RS_Index_H_
+#define        _ResultsPerCSI_RS_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CSI-RS-Index.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+
+/* ResultsPerCSI-RS-Index */
+typedef struct ResultsPerCSI_RS_Index {
+       CSI_RS_Index_t   csi_RS_Index;
+       struct MeasQuantityResults      *csi_RS_Results;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ResultsPerCSI_RS_Index_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_Index;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResultsPerCSI_RS_Index_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_Index_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ResultsPerCSI_RS_Index_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.c b/src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.c
new file mode 100644 (file)
index 0000000..cada45c
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ResultsPerCSI-RS-IndexList.h"
+
+#include "ResultsPerCSI-RS-Index.h"
+static asn_oer_constraints_t asn_OER_type_ResultsPerCSI_RS_IndexList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_IndexList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ResultsPerCSI_RS_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ResultsPerCSI_RS_IndexList_specs_1 = {
+       sizeof(struct ResultsPerCSI_RS_IndexList),
+       offsetof(struct ResultsPerCSI_RS_IndexList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_IndexList = {
+       "ResultsPerCSI-RS-IndexList",
+       "ResultsPerCSI-RS-IndexList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ResultsPerCSI_RS_IndexList_tags_1,
+       sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1)
+               /sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[0]), /* 1 */
+       asn_DEF_ResultsPerCSI_RS_IndexList_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1)
+               /sizeof(asn_DEF_ResultsPerCSI_RS_IndexList_tags_1[0]), /* 1 */
+       { &asn_OER_type_ResultsPerCSI_RS_IndexList_constr_1, &asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_ResultsPerCSI_RS_IndexList_1,
+       1,      /* Single element */
+       &asn_SPC_ResultsPerCSI_RS_IndexList_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.h b/src/codec_utils/RRC/ResultsPerCSI-RS-IndexList.h
new file mode 100644 (file)
index 0000000..d4ec7b6
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ResultsPerCSI_RS_IndexList_H_
+#define        _ResultsPerCSI_RS_IndexList_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 ResultsPerCSI_RS_Index;
+
+/* ResultsPerCSI-RS-IndexList */
+typedef struct ResultsPerCSI_RS_IndexList {
+       A_SEQUENCE_OF(struct ResultsPerCSI_RS_Index) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ResultsPerCSI_RS_IndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerCSI_RS_IndexList;
+extern asn_SET_OF_specifics_t asn_SPC_ResultsPerCSI_RS_IndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerCSI_RS_IndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_ResultsPerCSI_RS_IndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ResultsPerCSI_RS_IndexList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ResultsPerSSB-Index.c b/src/codec_utils/RRC/ResultsPerSSB-Index.c
new file mode 100644 (file)
index 0000000..123edad
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ResultsPerSSB-Index.h"
+
+#include "MeasQuantityResults.h"
+asn_TYPE_member_t asn_MBR_ResultsPerSSB_Index_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ResultsPerSSB_Index, ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_POINTER, 1, offsetof(struct ResultsPerSSB_Index, ssb_Results),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasQuantityResults,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Results"
+               },
+};
+static const int asn_MAP_ResultsPerSSB_Index_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_ResultsPerSSB_Index_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ResultsPerSSB_Index_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb-Results */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ResultsPerSSB_Index_specs_1 = {
+       sizeof(struct ResultsPerSSB_Index),
+       offsetof(struct ResultsPerSSB_Index, _asn_ctx),
+       asn_MAP_ResultsPerSSB_Index_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_ResultsPerSSB_Index_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_Index = {
+       "ResultsPerSSB-Index",
+       "ResultsPerSSB-Index",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ResultsPerSSB_Index_tags_1,
+       sizeof(asn_DEF_ResultsPerSSB_Index_tags_1)
+               /sizeof(asn_DEF_ResultsPerSSB_Index_tags_1[0]), /* 1 */
+       asn_DEF_ResultsPerSSB_Index_tags_1,     /* Same as above */
+       sizeof(asn_DEF_ResultsPerSSB_Index_tags_1)
+               /sizeof(asn_DEF_ResultsPerSSB_Index_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ResultsPerSSB_Index_1,
+       2,      /* Elements count */
+       &asn_SPC_ResultsPerSSB_Index_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ResultsPerSSB-Index.h b/src/codec_utils/RRC/ResultsPerSSB-Index.h
new file mode 100644 (file)
index 0000000..35860e6
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ResultsPerSSB_Index_H_
+#define        _ResultsPerSSB_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SSB-Index.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasQuantityResults;
+
+/* ResultsPerSSB-Index */
+typedef struct ResultsPerSSB_Index {
+       SSB_Index_t      ssb_Index;
+       struct MeasQuantityResults      *ssb_Results;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ResultsPerSSB_Index_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_Index;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResultsPerSSB_Index_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerSSB_Index_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ResultsPerSSB_Index_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ResultsPerSSB-IndexList.c b/src/codec_utils/RRC/ResultsPerSSB-IndexList.c
new file mode 100644 (file)
index 0000000..fc891d2
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ResultsPerSSB-IndexList.h"
+
+#include "ResultsPerSSB-Index.h"
+static asn_oer_constraints_t asn_OER_type_ResultsPerSSB_IndexList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+asn_per_constraints_t asn_PER_type_ResultsPerSSB_IndexList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ResultsPerSSB_IndexList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_ResultsPerSSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ResultsPerSSB_IndexList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ResultsPerSSB_IndexList_specs_1 = {
+       sizeof(struct ResultsPerSSB_IndexList),
+       offsetof(struct ResultsPerSSB_IndexList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_IndexList = {
+       "ResultsPerSSB-IndexList",
+       "ResultsPerSSB-IndexList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_ResultsPerSSB_IndexList_tags_1,
+       sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1)
+               /sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1[0]), /* 1 */
+       asn_DEF_ResultsPerSSB_IndexList_tags_1, /* Same as above */
+       sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1)
+               /sizeof(asn_DEF_ResultsPerSSB_IndexList_tags_1[0]), /* 1 */
+       { &asn_OER_type_ResultsPerSSB_IndexList_constr_1, &asn_PER_type_ResultsPerSSB_IndexList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_ResultsPerSSB_IndexList_1,
+       1,      /* Single element */
+       &asn_SPC_ResultsPerSSB_IndexList_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ResultsPerSSB-IndexList.h b/src/codec_utils/RRC/ResultsPerSSB-IndexList.h
new file mode 100644 (file)
index 0000000..f202172
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ResultsPerSSB_IndexList_H_
+#define        _ResultsPerSSB_IndexList_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 ResultsPerSSB_Index;
+
+/* ResultsPerSSB-IndexList */
+typedef struct ResultsPerSSB_IndexList {
+       A_SEQUENCE_OF(struct ResultsPerSSB_Index) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ResultsPerSSB_IndexList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultsPerSSB_IndexList;
+extern asn_SET_OF_specifics_t asn_SPC_ResultsPerSSB_IndexList_specs_1;
+extern asn_TYPE_member_t asn_MBR_ResultsPerSSB_IndexList_1[1];
+extern asn_per_constraints_t asn_PER_type_ResultsPerSSB_IndexList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ResultsPerSSB_IndexList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ResumeCause.c b/src/codec_utils/RRC/ResumeCause.c
new file mode 100644 (file)
index 0000000..2e728eb
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ResumeCause.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_ResumeCause_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_ResumeCause_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ResumeCause_value2enum_1[] = {
+       { 0,    9,      "emergency" },
+       { 1,    18,     "highPriorityAccess" },
+       { 2,    9,      "mt-Access" },
+       { 3,    13,     "mo-Signalling" },
+       { 4,    7,      "mo-Data" },
+       { 5,    12,     "mo-VoiceCall" },
+       { 6,    12,     "mo-VideoCall" },
+       { 7,    6,      "mo-SMS" },
+       { 8,    10,     "rna-Update" },
+       { 9,    18,     "mps-PriorityAccess" },
+       { 10,   18,     "mcs-PriorityAccess" },
+       { 11,   6,      "spare1" },
+       { 12,   6,      "spare2" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare4" },
+       { 15,   6,      "spare5" }
+};
+static const unsigned int asn_MAP_ResumeCause_enum2value_1[] = {
+       0,      /* emergency(0) */
+       1,      /* highPriorityAccess(1) */
+       10,     /* mcs-PriorityAccess(10) */
+       4,      /* mo-Data(4) */
+       7,      /* mo-SMS(7) */
+       3,      /* mo-Signalling(3) */
+       6,      /* mo-VideoCall(6) */
+       5,      /* mo-VoiceCall(5) */
+       9,      /* mps-PriorityAccess(9) */
+       2,      /* mt-Access(2) */
+       8,      /* rna-Update(8) */
+       11,     /* spare1(11) */
+       12,     /* spare2(12) */
+       13,     /* spare3(13) */
+       14,     /* spare4(14) */
+       15      /* spare5(15) */
+};
+const asn_INTEGER_specifics_t asn_SPC_ResumeCause_specs_1 = {
+       asn_MAP_ResumeCause_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_ResumeCause_enum2value_1,       /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ResumeCause_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ResumeCause = {
+       "ResumeCause",
+       "ResumeCause",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ResumeCause_tags_1,
+       sizeof(asn_DEF_ResumeCause_tags_1)
+               /sizeof(asn_DEF_ResumeCause_tags_1[0]), /* 1 */
+       asn_DEF_ResumeCause_tags_1,     /* Same as above */
+       sizeof(asn_DEF_ResumeCause_tags_1)
+               /sizeof(asn_DEF_ResumeCause_tags_1[0]), /* 1 */
+       { &asn_OER_type_ResumeCause_constr_1, &asn_PER_type_ResumeCause_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ResumeCause_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ResumeCause.h b/src/codec_utils/RRC/ResumeCause.h
new file mode 100644 (file)
index 0000000..f406acc
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ResumeCause_H_
+#define        _ResumeCause_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ResumeCause {
+       ResumeCause_emergency   = 0,
+       ResumeCause_highPriorityAccess  = 1,
+       ResumeCause_mt_Access   = 2,
+       ResumeCause_mo_Signalling       = 3,
+       ResumeCause_mo_Data     = 4,
+       ResumeCause_mo_VoiceCall        = 5,
+       ResumeCause_mo_VideoCall        = 6,
+       ResumeCause_mo_SMS      = 7,
+       ResumeCause_rna_Update  = 8,
+       ResumeCause_mps_PriorityAccess  = 9,
+       ResumeCause_mcs_PriorityAccess  = 10,
+       ResumeCause_spare1      = 11,
+       ResumeCause_spare2      = 12,
+       ResumeCause_spare3      = 13,
+       ResumeCause_spare4      = 14,
+       ResumeCause_spare5      = 15
+} e_ResumeCause;
+
+/* ResumeCause */
+typedef long    ResumeCause_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ResumeCause_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ResumeCause;
+extern const asn_INTEGER_specifics_t asn_SPC_ResumeCause_specs_1;
+asn_struct_free_f ResumeCause_free;
+asn_struct_print_f ResumeCause_print;
+asn_constr_check_f ResumeCause_constraint;
+ber_type_decoder_f ResumeCause_decode_ber;
+der_type_encoder_f ResumeCause_encode_der;
+xer_type_decoder_f ResumeCause_decode_xer;
+xer_type_encoder_f ResumeCause_encode_xer;
+oer_type_decoder_f ResumeCause_decode_oer;
+oer_type_encoder_f ResumeCause_encode_oer;
+per_type_decoder_f ResumeCause_decode_uper;
+per_type_encoder_f ResumeCause_encode_uper;
+per_type_decoder_f ResumeCause_decode_aper;
+per_type_encoder_f ResumeCause_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ResumeCause_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/S-NSSAI.c b/src/codec_utils/RRC/S-NSSAI.c
new file mode 100644 (file)
index 0000000..aae0e32
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "S-NSSAI.h"
+
+static int
+memb_sst_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 == 8)) {
+               /* 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_sst_SD_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 == 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_sst_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_sst_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sst_SD_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       32      /* (SIZE(32..32)) */};
+static asn_per_constraints_t asn_PER_memb_sst_SD_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  32,  32 }      /* (SIZE(32..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_S_NSSAI_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_S_NSSAI_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_S_NSSAI_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, choice.sst),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_sst_constr_2, &asn_PER_memb_sst_constr_2,  memb_sst_constraint_1 },
+               0, 0, /* No default value */
+               "sst"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct S_NSSAI, choice.sst_SD),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_sst_SD_constr_3, &asn_PER_memb_sst_SD_constr_3,  memb_sst_SD_constraint_1 },
+               0, 0, /* No default value */
+               "sst-SD"
+               },
+};
+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 } /* sst-SD */
+};
+asn_CHOICE_specifics_t asn_SPC_S_NSSAI_specs_1 = {
+       sizeof(struct S_NSSAI),
+       offsetof(struct S_NSSAI, _asn_ctx),
+       offsetof(struct S_NSSAI, present),
+       sizeof(((struct S_NSSAI *)0)->present),
+       asn_MAP_S_NSSAI_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_S_NSSAI = {
+       "S-NSSAI",
+       "S-NSSAI",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_S_NSSAI_constr_1, &asn_PER_type_S_NSSAI_constr_1, CHOICE_constraint },
+       asn_MBR_S_NSSAI_1,
+       2,      /* Elements count */
+       &asn_SPC_S_NSSAI_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/S-NSSAI.h b/src/codec_utils/RRC/S-NSSAI.h
new file mode 100644 (file)
index 0000000..b5c9862
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -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 <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum S_NSSAI_PR {
+       S_NSSAI_PR_NOTHING,     /* No components present */
+       S_NSSAI_PR_sst,
+       S_NSSAI_PR_sst_SD
+} S_NSSAI_PR;
+
+/* S-NSSAI */
+typedef struct S_NSSAI {
+       S_NSSAI_PR present;
+       union S_NSSAI_u {
+               BIT_STRING_t     sst;
+               BIT_STRING_t     sst_SD;
+       } choice;
+       
+       /* 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_CHOICE_specifics_t asn_SPC_S_NSSAI_specs_1;
+extern asn_TYPE_member_t asn_MBR_S_NSSAI_1[2];
+extern asn_per_constraints_t asn_PER_type_S_NSSAI_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _S_NSSAI_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SCS-SpecificCarrier.c b/src/codec_utils/RRC/SCS-SpecificCarrier.c
new file mode 100644 (file)
index 0000000..d6008a2
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SCS-SpecificCarrier.h"
+
+static int
+memb_txDirectCurrentLocation_v1530_constraint_6(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;
+       }
+}
+
+static int
+memb_offsetToCarrier_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 >= 0 && value <= 2199)) {
+               /* 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_carrierBandwidth_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 <= 275)) {
+               /* 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_txDirectCurrentLocation_v1530_constr_7 CC_NOTUSED = {
+       { 2, 1 }        /* (0..4095) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_txDirectCurrentLocation_v1530_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  4095 }   /* (0..4095) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_offsetToCarrier_constr_2 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2199) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_offsetToCarrier_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2199 }   /* (0..2199) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_carrierBandwidth_constr_4 CC_NOTUSED = {
+       { 2, 1 }        /* (1..275) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_carrierBandwidth_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  1,  275 }      /* (1..275) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_ext1_6[] = {
+       { ATF_POINTER, 1, offsetof(struct SCS_SpecificCarrier__ext1, txDirectCurrentLocation_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_txDirectCurrentLocation_v1530_constr_7, &asn_PER_memb_txDirectCurrentLocation_v1530_constr_7,  memb_txDirectCurrentLocation_v1530_constraint_6 },
+               0, 0, /* No default value */
+               "txDirectCurrentLocation-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_6[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* txDirectCurrentLocation-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
+       sizeof(struct SCS_SpecificCarrier__ext1),
+       offsetof(struct SCS_SpecificCarrier__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_6,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_6,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_6,
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_6,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_6,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SCS_SpecificCarrier_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, offsetToCarrier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_offsetToCarrier_constr_2, &asn_PER_memb_offsetToCarrier_constr_2,  memb_offsetToCarrier_constraint_1 },
+               0, 0, /* No default value */
+               "offsetToCarrier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, subcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, carrierBandwidth),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_carrierBandwidth_constr_4, &asn_PER_memb_carrierBandwidth_constr_4,  memb_carrierBandwidth_constraint_1 },
+               0, 0, /* No default value */
+               "carrierBandwidth"
+               },
+       { ATF_POINTER, 1, offsetof(struct SCS_SpecificCarrier, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_SCS_SpecificCarrier_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_SCS_SpecificCarrier_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SCS_SpecificCarrier_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offsetToCarrier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* carrierBandwidth */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SCS_SpecificCarrier_specs_1 = {
+       sizeof(struct SCS_SpecificCarrier),
+       offsetof(struct SCS_SpecificCarrier, _asn_ctx),
+       asn_MAP_SCS_SpecificCarrier_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SCS_SpecificCarrier_oms_1,      /* Optional members */
+       0, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SCS_SpecificCarrier = {
+       "SCS-SpecificCarrier",
+       "SCS-SpecificCarrier",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SCS_SpecificCarrier_tags_1,
+       sizeof(asn_DEF_SCS_SpecificCarrier_tags_1)
+               /sizeof(asn_DEF_SCS_SpecificCarrier_tags_1[0]), /* 1 */
+       asn_DEF_SCS_SpecificCarrier_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SCS_SpecificCarrier_tags_1)
+               /sizeof(asn_DEF_SCS_SpecificCarrier_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SCS_SpecificCarrier_1,
+       4,      /* Elements count */
+       &asn_SPC_SCS_SpecificCarrier_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SCS-SpecificCarrier.h b/src/codec_utils/RRC/SCS-SpecificCarrier.h
new file mode 100644 (file)
index 0000000..bfb03d3
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SCS_SpecificCarrier_H_
+#define        _SCS_SpecificCarrier_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "SubcarrierSpacing.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SCS-SpecificCarrier */
+typedef struct SCS_SpecificCarrier {
+       long     offsetToCarrier;
+       SubcarrierSpacing_t      subcarrierSpacing;
+       long     carrierBandwidth;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct SCS_SpecificCarrier__ext1 {
+               long    *txDirectCurrentLocation_v1530; /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SCS_SpecificCarrier_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SCS_SpecificCarrier;
+extern asn_SEQUENCE_specifics_t asn_SPC_SCS_SpecificCarrier_specs_1;
+extern asn_TYPE_member_t asn_MBR_SCS_SpecificCarrier_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCS_SpecificCarrier_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SCellConfig.c b/src/codec_utils/RRC/SCellConfig.c
new file mode 100644 (file)
index 0000000..35852d2
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SCellConfig.h"
+
+#include "ServingCellConfigCommon.h"
+#include "ServingCellConfig.h"
+#include "SSB-MTC.h"
+static asn_TYPE_member_t asn_MBR_ext1_6[] = {
+       { ATF_POINTER, 1, offsetof(struct SCellConfig__ext1, smtc),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc"
+               },
+};
+static const int asn_MAP_ext1_oms_6[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* smtc */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
+       sizeof(struct SCellConfig__ext1),
+       offsetof(struct SCellConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_6,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_6,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_6,
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_6,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_6)
+               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_6,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_6   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SCellConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SCellConfig, sCellIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sCellIndex"
+               },
+       { ATF_POINTER, 3, offsetof(struct SCellConfig, sCellConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServingCellConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sCellConfigCommon"
+               },
+       { ATF_POINTER, 2, offsetof(struct SCellConfig, sCellConfigDedicated),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServingCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sCellConfigDedicated"
+               },
+       { ATF_POINTER, 1, offsetof(struct SCellConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_SCellConfig_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCellIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sCellConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCellConfigDedicated */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SCellConfig_specs_1 = {
+       sizeof(struct SCellConfig),
+       offsetof(struct SCellConfig, _asn_ctx),
+       asn_MAP_SCellConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SCellConfig_oms_1,      /* Optional members */
+       2, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SCellConfig = {
+       "SCellConfig",
+       "SCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SCellConfig_tags_1,
+       sizeof(asn_DEF_SCellConfig_tags_1)
+               /sizeof(asn_DEF_SCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_SCellConfig_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SCellConfig_tags_1)
+               /sizeof(asn_DEF_SCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SCellConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_SCellConfig_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SCellConfig.h b/src/codec_utils/RRC/SCellConfig.h
new file mode 100644 (file)
index 0000000..b41b5c8
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SCellConfig_H_
+#define        _SCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SCellIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct ServingCellConfigCommon;
+struct ServingCellConfig;
+struct SSB_MTC;
+
+/* SCellConfig */
+typedef struct SCellConfig {
+       SCellIndex_t     sCellIndex;
+       struct ServingCellConfigCommon  *sCellConfigCommon;     /* OPTIONAL */
+       struct ServingCellConfig        *sCellConfigDedicated;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct SCellConfig__ext1 {
+               struct SSB_MTC  *smtc;  /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SCellConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SCellConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SCellIndex.c b/src/codec_utils/RRC/SCellIndex.c
new file mode 100644 (file)
index 0000000..d466a5d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SCellIndex.h"
+
+int
+SCellIndex_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 <= 31)) {
+               /* 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_SCellIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SCellIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (1..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SCellIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SCellIndex = {
+       "SCellIndex",
+       "SCellIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_SCellIndex_tags_1,
+       sizeof(asn_DEF_SCellIndex_tags_1)
+               /sizeof(asn_DEF_SCellIndex_tags_1[0]), /* 1 */
+       asn_DEF_SCellIndex_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SCellIndex_tags_1)
+               /sizeof(asn_DEF_SCellIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_SCellIndex_constr_1, &asn_PER_type_SCellIndex_constr_1, SCellIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SCellIndex.h b/src/codec_utils/RRC/SCellIndex.h
new file mode 100644 (file)
index 0000000..b401228
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SCellIndex_H_
+#define        _SCellIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SCellIndex */
+typedef long    SCellIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SCellIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SCellIndex;
+asn_struct_free_f SCellIndex_free;
+asn_struct_print_f SCellIndex_print;
+asn_constr_check_f SCellIndex_constraint;
+ber_type_decoder_f SCellIndex_decode_ber;
+der_type_encoder_f SCellIndex_encode_der;
+xer_type_decoder_f SCellIndex_decode_xer;
+xer_type_encoder_f SCellIndex_encode_xer;
+oer_type_decoder_f SCellIndex_decode_oer;
+oer_type_encoder_f SCellIndex_encode_oer;
+per_type_decoder_f SCellIndex_decode_uper;
+per_type_encoder_f SCellIndex_encode_uper;
+per_type_decoder_f SCellIndex_decode_aper;
+per_type_encoder_f SCellIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SCellIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SDAP-Config.c b/src/codec_utils/RRC/SDAP-Config.c
new file mode 100644 (file)
index 0000000..1f822bb
--- /dev/null
@@ -0,0 +1,358 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SDAP-Config.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.
+ */
+static int
+memb_mappedQoS_FlowsToAdd_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 <= 64)) {
+               /* 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_mappedQoS_FlowsToRelease_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 <= 64)) {
+               /* 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_sdap_HeaderDL_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sdap_HeaderDL_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sdap_HeaderUL_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sdap_HeaderUL_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_mappedQoS_FlowsToAdd_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_mappedQoS_FlowsToAdd_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_mappedQoS_FlowsToRelease_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_mappedQoS_FlowsToRelease_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mappedQoS_FlowsToAdd_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_mappedQoS_FlowsToAdd_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mappedQoS_FlowsToRelease_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_mappedQoS_FlowsToRelease_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_sdap_HeaderDL_value2enum_3[] = {
+       { 0,    7,      "present" },
+       { 1,    6,      "absent" }
+};
+static const unsigned int asn_MAP_sdap_HeaderDL_enum2value_3[] = {
+       1,      /* absent(1) */
+       0       /* present(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sdap_HeaderDL_specs_3 = {
+       asn_MAP_sdap_HeaderDL_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_sdap_HeaderDL_enum2value_3,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sdap_HeaderDL_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_sdap_HeaderDL_3 = {
+       "sdap-HeaderDL",
+       "sdap-HeaderDL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sdap_HeaderDL_tags_3,
+       sizeof(asn_DEF_sdap_HeaderDL_tags_3)
+               /sizeof(asn_DEF_sdap_HeaderDL_tags_3[0]) - 1, /* 1 */
+       asn_DEF_sdap_HeaderDL_tags_3,   /* Same as above */
+       sizeof(asn_DEF_sdap_HeaderDL_tags_3)
+               /sizeof(asn_DEF_sdap_HeaderDL_tags_3[0]), /* 2 */
+       { &asn_OER_type_sdap_HeaderDL_constr_3, &asn_PER_type_sdap_HeaderDL_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sdap_HeaderDL_specs_3  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sdap_HeaderUL_value2enum_6[] = {
+       { 0,    7,      "present" },
+       { 1,    6,      "absent" }
+};
+static const unsigned int asn_MAP_sdap_HeaderUL_enum2value_6[] = {
+       1,      /* absent(1) */
+       0       /* present(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sdap_HeaderUL_specs_6 = {
+       asn_MAP_sdap_HeaderUL_value2enum_6,     /* "tag" => N; sorted by tag */
+       asn_MAP_sdap_HeaderUL_enum2value_6,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sdap_HeaderUL_tags_6[] = {
+       (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_sdap_HeaderUL_6 = {
+       "sdap-HeaderUL",
+       "sdap-HeaderUL",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sdap_HeaderUL_tags_6,
+       sizeof(asn_DEF_sdap_HeaderUL_tags_6)
+               /sizeof(asn_DEF_sdap_HeaderUL_tags_6[0]) - 1, /* 1 */
+       asn_DEF_sdap_HeaderUL_tags_6,   /* Same as above */
+       sizeof(asn_DEF_sdap_HeaderUL_tags_6)
+               /sizeof(asn_DEF_sdap_HeaderUL_tags_6[0]), /* 2 */
+       { &asn_OER_type_sdap_HeaderUL_constr_6, &asn_PER_type_sdap_HeaderUL_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sdap_HeaderUL_specs_6  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_mappedQoS_FlowsToAdd_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_QFI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_mappedQoS_FlowsToAdd_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mappedQoS_FlowsToAdd_specs_10 = {
+       sizeof(struct SDAP_Config__mappedQoS_FlowsToAdd),
+       offsetof(struct SDAP_Config__mappedQoS_FlowsToAdd, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mappedQoS_FlowsToAdd_10 = {
+       "mappedQoS-FlowsToAdd",
+       "mappedQoS-FlowsToAdd",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_mappedQoS_FlowsToAdd_tags_10,
+       sizeof(asn_DEF_mappedQoS_FlowsToAdd_tags_10)
+               /sizeof(asn_DEF_mappedQoS_FlowsToAdd_tags_10[0]) - 1, /* 1 */
+       asn_DEF_mappedQoS_FlowsToAdd_tags_10,   /* Same as above */
+       sizeof(asn_DEF_mappedQoS_FlowsToAdd_tags_10)
+               /sizeof(asn_DEF_mappedQoS_FlowsToAdd_tags_10[0]), /* 2 */
+       { &asn_OER_type_mappedQoS_FlowsToAdd_constr_10, &asn_PER_type_mappedQoS_FlowsToAdd_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_mappedQoS_FlowsToAdd_10,
+       1,      /* Single element */
+       &asn_SPC_mappedQoS_FlowsToAdd_specs_10  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_mappedQoS_FlowsToRelease_12[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_QFI,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_mappedQoS_FlowsToRelease_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_mappedQoS_FlowsToRelease_specs_12 = {
+       sizeof(struct SDAP_Config__mappedQoS_FlowsToRelease),
+       offsetof(struct SDAP_Config__mappedQoS_FlowsToRelease, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_mappedQoS_FlowsToRelease_12 = {
+       "mappedQoS-FlowsToRelease",
+       "mappedQoS-FlowsToRelease",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_mappedQoS_FlowsToRelease_tags_12,
+       sizeof(asn_DEF_mappedQoS_FlowsToRelease_tags_12)
+               /sizeof(asn_DEF_mappedQoS_FlowsToRelease_tags_12[0]) - 1, /* 1 */
+       asn_DEF_mappedQoS_FlowsToRelease_tags_12,       /* Same as above */
+       sizeof(asn_DEF_mappedQoS_FlowsToRelease_tags_12)
+               /sizeof(asn_DEF_mappedQoS_FlowsToRelease_tags_12[0]), /* 2 */
+       { &asn_OER_type_mappedQoS_FlowsToRelease_constr_12, &asn_PER_type_mappedQoS_FlowsToRelease_constr_12, SEQUENCE_OF_constraint },
+       asn_MBR_mappedQoS_FlowsToRelease_12,
+       1,      /* Single element */
+       &asn_SPC_mappedQoS_FlowsToRelease_specs_12      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SDAP_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SDAP_Config, pdu_Session),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDU_SessionID,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdu-Session"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SDAP_Config, sdap_HeaderDL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sdap_HeaderDL_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sdap-HeaderDL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SDAP_Config, sdap_HeaderUL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sdap_HeaderUL_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sdap-HeaderUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SDAP_Config, defaultDRB),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "defaultDRB"
+               },
+       { ATF_POINTER, 2, offsetof(struct SDAP_Config, mappedQoS_FlowsToAdd),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_mappedQoS_FlowsToAdd_10,
+               0,
+               { &asn_OER_memb_mappedQoS_FlowsToAdd_constr_10, &asn_PER_memb_mappedQoS_FlowsToAdd_constr_10,  memb_mappedQoS_FlowsToAdd_constraint_1 },
+               0, 0, /* No default value */
+               "mappedQoS-FlowsToAdd"
+               },
+       { ATF_POINTER, 1, offsetof(struct SDAP_Config, mappedQoS_FlowsToRelease),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_mappedQoS_FlowsToRelease_12,
+               0,
+               { &asn_OER_memb_mappedQoS_FlowsToRelease_constr_12, &asn_PER_memb_mappedQoS_FlowsToRelease_constr_12,  memb_mappedQoS_FlowsToRelease_constraint_1 },
+               0, 0, /* No default value */
+               "mappedQoS-FlowsToRelease"
+               },
+};
+static const int asn_MAP_SDAP_Config_oms_1[] = { 4, 5 };
+static const ber_tlv_tag_t asn_DEF_SDAP_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SDAP_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pdu-Session */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sdap-HeaderDL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sdap-HeaderUL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* defaultDRB */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* mappedQoS-FlowsToAdd */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* mappedQoS-FlowsToRelease */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SDAP_Config_specs_1 = {
+       sizeof(struct SDAP_Config),
+       offsetof(struct SDAP_Config, _asn_ctx),
+       asn_MAP_SDAP_Config_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_SDAP_Config_oms_1,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SDAP_Config = {
+       "SDAP-Config",
+       "SDAP-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SDAP_Config_tags_1,
+       sizeof(asn_DEF_SDAP_Config_tags_1)
+               /sizeof(asn_DEF_SDAP_Config_tags_1[0]), /* 1 */
+       asn_DEF_SDAP_Config_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SDAP_Config_tags_1)
+               /sizeof(asn_DEF_SDAP_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SDAP_Config_1,
+       6,      /* Elements count */
+       &asn_SPC_SDAP_Config_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SDAP-Config.h b/src/codec_utils/RRC/SDAP-Config.h
new file mode 100644 (file)
index 0000000..0da6b44
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SDAP_Config_H_
+#define        _SDAP_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PDU-SessionID.h"
+#include <NativeEnumerated.h>
+#include <BOOLEAN.h>
+#include "QFI.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SDAP_Config__sdap_HeaderDL {
+       SDAP_Config__sdap_HeaderDL_present      = 0,
+       SDAP_Config__sdap_HeaderDL_absent       = 1
+} e_SDAP_Config__sdap_HeaderDL;
+typedef enum SDAP_Config__sdap_HeaderUL {
+       SDAP_Config__sdap_HeaderUL_present      = 0,
+       SDAP_Config__sdap_HeaderUL_absent       = 1
+} e_SDAP_Config__sdap_HeaderUL;
+
+/* SDAP-Config */
+typedef struct SDAP_Config {
+       PDU_SessionID_t  pdu_Session;
+       long     sdap_HeaderDL;
+       long     sdap_HeaderUL;
+       BOOLEAN_t        defaultDRB;
+       struct SDAP_Config__mappedQoS_FlowsToAdd {
+               A_SEQUENCE_OF(QFI_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *mappedQoS_FlowsToAdd;
+       struct SDAP_Config__mappedQoS_FlowsToRelease {
+               A_SEQUENCE_OF(QFI_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *mappedQoS_FlowsToRelease;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SDAP_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_sdap_HeaderDL_3;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sdap_HeaderUL_6;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SDAP_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_SDAP_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_SDAP_Config_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SDAP_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SI-RequestConfig.c b/src/codec_utils/RRC/SI-RequestConfig.c
new file mode 100644 (file)
index 0000000..d4d13b0
--- /dev/null
@@ -0,0 +1,327 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SI-RequestConfig.h"
+
+#include "SI-RequestResources.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.
+ */
+static int
+memb_si_RequestResources_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 <= 32)) {
+               /* 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_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_si_RequestPeriod_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_si_RequestPeriod_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_si_RequestResources_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_si_RequestResources_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_si_RequestResources_constr_22 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_si_RequestResources_constr_22 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_perRACH_Occasion_value2enum_4[] = {
+       { 0,    9,      "oneEighth" },
+       { 1,    9,      "oneFourth" },
+       { 2,    7,      "oneHalf" },
+       { 3,    3,      "one" },
+       { 4,    3,      "two" },
+       { 5,    4,      "four" },
+       { 6,    5,      "eight" },
+       { 7,    7,      "sixteen" }
+};
+static const unsigned int asn_MAP_ssb_perRACH_Occasion_enum2value_4[] = {
+       6,      /* eight(6) */
+       5,      /* four(5) */
+       3,      /* one(3) */
+       0,      /* oneEighth(0) */
+       1,      /* oneFourth(1) */
+       2,      /* oneHalf(2) */
+       7,      /* sixteen(7) */
+       4       /* two(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_perRACH_Occasion_specs_4 = {
+       asn_MAP_ssb_perRACH_Occasion_value2enum_4,      /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_perRACH_Occasion_enum2value_4,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_perRACH_Occasion_tags_4[] = {
+       (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_ssb_perRACH_Occasion_4 = {
+       "ssb-perRACH-Occasion",
+       "ssb-perRACH-Occasion",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_perRACH_Occasion_tags_4,
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]) - 1, /* 1 */
+       asn_DEF_ssb_perRACH_Occasion_tags_4,    /* Same as above */
+       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
+               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]), /* 2 */
+       { &asn_OER_type_ssb_perRACH_Occasion_constr_4, &asn_PER_type_ssb_perRACH_Occasion_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_perRACH_Occasion_specs_4   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rach_OccasionsSI_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig__rach_OccasionsSI, rach_ConfigSI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RACH_ConfigGeneric,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-ConfigSI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig__rach_OccasionsSI, ssb_perRACH_Occasion),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_perRACH_Occasion_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-perRACH-Occasion"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rach_OccasionsSI_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_rach_OccasionsSI_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-ConfigSI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb-perRACH-Occasion */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_rach_OccasionsSI_specs_2 = {
+       sizeof(struct SI_RequestConfig__rach_OccasionsSI),
+       offsetof(struct SI_RequestConfig__rach_OccasionsSI, _asn_ctx),
+       asn_MAP_rach_OccasionsSI_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rach_OccasionsSI_2 = {
+       "rach-OccasionsSI",
+       "rach-OccasionsSI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_rach_OccasionsSI_tags_2,
+       sizeof(asn_DEF_rach_OccasionsSI_tags_2)
+               /sizeof(asn_DEF_rach_OccasionsSI_tags_2[0]) - 1, /* 1 */
+       asn_DEF_rach_OccasionsSI_tags_2,        /* Same as above */
+       sizeof(asn_DEF_rach_OccasionsSI_tags_2)
+               /sizeof(asn_DEF_rach_OccasionsSI_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_rach_OccasionsSI_2,
+       2,      /* Elements count */
+       &asn_SPC_rach_OccasionsSI_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_si_RequestPeriod_value2enum_13[] = {
+       { 0,    3,      "one" },
+       { 1,    3,      "two" },
+       { 2,    4,      "four" },
+       { 3,    3,      "six" },
+       { 4,    5,      "eight" },
+       { 5,    3,      "ten" },
+       { 6,    6,      "twelve" },
+       { 7,    7,      "sixteen" }
+};
+static const unsigned int asn_MAP_si_RequestPeriod_enum2value_13[] = {
+       4,      /* eight(4) */
+       2,      /* four(2) */
+       0,      /* one(0) */
+       3,      /* six(3) */
+       7,      /* sixteen(7) */
+       5,      /* ten(5) */
+       6,      /* twelve(6) */
+       1       /* two(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_si_RequestPeriod_specs_13 = {
+       asn_MAP_si_RequestPeriod_value2enum_13, /* "tag" => N; sorted by tag */
+       asn_MAP_si_RequestPeriod_enum2value_13, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_si_RequestPeriod_tags_13[] = {
+       (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_si_RequestPeriod_13 = {
+       "si-RequestPeriod",
+       "si-RequestPeriod",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_si_RequestPeriod_tags_13,
+       sizeof(asn_DEF_si_RequestPeriod_tags_13)
+               /sizeof(asn_DEF_si_RequestPeriod_tags_13[0]) - 1, /* 1 */
+       asn_DEF_si_RequestPeriod_tags_13,       /* Same as above */
+       sizeof(asn_DEF_si_RequestPeriod_tags_13)
+               /sizeof(asn_DEF_si_RequestPeriod_tags_13[0]), /* 2 */
+       { &asn_OER_type_si_RequestPeriod_constr_13, &asn_PER_type_si_RequestPeriod_constr_13, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_si_RequestPeriod_specs_13      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_si_RequestResources_22[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SI_RequestResources,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_si_RequestResources_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_si_RequestResources_specs_22 = {
+       sizeof(struct SI_RequestConfig__si_RequestResources),
+       offsetof(struct SI_RequestConfig__si_RequestResources, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_si_RequestResources_22 = {
+       "si-RequestResources",
+       "si-RequestResources",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_si_RequestResources_tags_22,
+       sizeof(asn_DEF_si_RequestResources_tags_22)
+               /sizeof(asn_DEF_si_RequestResources_tags_22[0]) - 1, /* 1 */
+       asn_DEF_si_RequestResources_tags_22,    /* Same as above */
+       sizeof(asn_DEF_si_RequestResources_tags_22)
+               /sizeof(asn_DEF_si_RequestResources_tags_22[0]), /* 2 */
+       { &asn_OER_type_si_RequestResources_constr_22, &asn_PER_type_si_RequestResources_constr_22, SEQUENCE_OF_constraint },
+       asn_MBR_si_RequestResources_22,
+       1,      /* Single element */
+       &asn_SPC_si_RequestResources_specs_22   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SI_RequestConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SI_RequestConfig, rach_OccasionsSI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_rach_OccasionsSI_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rach-OccasionsSI"
+               },
+       { ATF_POINTER, 1, offsetof(struct SI_RequestConfig, si_RequestPeriod),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_si_RequestPeriod_13,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-RequestPeriod"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig, si_RequestResources),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_si_RequestResources_22,
+               0,
+               { &asn_OER_memb_si_RequestResources_constr_22, &asn_PER_memb_si_RequestResources_constr_22,  memb_si_RequestResources_constraint_1 },
+               0, 0, /* No default value */
+               "si-RequestResources"
+               },
+};
+static const int asn_MAP_SI_RequestConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SI_RequestConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SI_RequestConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-OccasionsSI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-RequestPeriod */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* si-RequestResources */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SI_RequestConfig_specs_1 = {
+       sizeof(struct SI_RequestConfig),
+       offsetof(struct SI_RequestConfig, _asn_ctx),
+       asn_MAP_SI_RequestConfig_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SI_RequestConfig_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SI_RequestConfig = {
+       "SI-RequestConfig",
+       "SI-RequestConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SI_RequestConfig_tags_1,
+       sizeof(asn_DEF_SI_RequestConfig_tags_1)
+               /sizeof(asn_DEF_SI_RequestConfig_tags_1[0]), /* 1 */
+       asn_DEF_SI_RequestConfig_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SI_RequestConfig_tags_1)
+               /sizeof(asn_DEF_SI_RequestConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SI_RequestConfig_1,
+       3,      /* Elements count */
+       &asn_SPC_SI_RequestConfig_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SI-RequestConfig.h b/src/codec_utils/RRC/SI-RequestConfig.h
new file mode 100644 (file)
index 0000000..350d6f4
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SI_RequestConfig_H_
+#define        _SI_RequestConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "RACH-ConfigGeneric.h"
+#include <constr_SEQUENCE.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion {
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneEighth      = 0,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneFourth      = 1,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneHalf        = 2,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_one    = 3,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_two    = 4,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_four   = 5,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_eight  = 6,
+       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_sixteen        = 7
+} e_SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion;
+typedef enum SI_RequestConfig__si_RequestPeriod {
+       SI_RequestConfig__si_RequestPeriod_one  = 0,
+       SI_RequestConfig__si_RequestPeriod_two  = 1,
+       SI_RequestConfig__si_RequestPeriod_four = 2,
+       SI_RequestConfig__si_RequestPeriod_six  = 3,
+       SI_RequestConfig__si_RequestPeriod_eight        = 4,
+       SI_RequestConfig__si_RequestPeriod_ten  = 5,
+       SI_RequestConfig__si_RequestPeriod_twelve       = 6,
+       SI_RequestConfig__si_RequestPeriod_sixteen      = 7
+} e_SI_RequestConfig__si_RequestPeriod;
+
+/* Forward declarations */
+struct SI_RequestResources;
+
+/* SI-RequestConfig */
+typedef struct SI_RequestConfig {
+       struct SI_RequestConfig__rach_OccasionsSI {
+               RACH_ConfigGeneric_t     rach_ConfigSI;
+               long     ssb_perRACH_Occasion;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rach_OccasionsSI;
+       long    *si_RequestPeriod;      /* OPTIONAL */
+       struct SI_RequestConfig__si_RequestResources {
+               A_SEQUENCE_OF(struct SI_RequestResources) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } si_RequestResources;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SI_RequestConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_Occasion_4;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_si_RequestPeriod_13;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SI_RequestConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SI_RequestConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SI_RequestConfig_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SI_RequestConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SI-RequestResources.c b/src/codec_utils/RRC/SI-RequestResources.c
new file mode 100644 (file)
index 0000000..d9c20de
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SI-RequestResources.h"
+
+static int
+memb_ra_PreambleStartIndex_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 >= 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;
+       }
+}
+
+static int
+memb_ra_AssociationPeriodIndex_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 >= 0 && 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_ra_ssb_OccasionMaskIndex_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 >= 0 && 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 asn_oer_constraints_t asn_OER_memb_ra_PreambleStartIndex_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_PreambleStartIndex_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_AssociationPeriodIndex_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_AssociationPeriodIndex_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SI_RequestResources_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestResources, ra_PreambleStartIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_PreambleStartIndex_constr_2, &asn_PER_memb_ra_PreambleStartIndex_constr_2,  memb_ra_PreambleStartIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-PreambleStartIndex"
+               },
+       { ATF_POINTER, 2, offsetof(struct SI_RequestResources, ra_AssociationPeriodIndex),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_AssociationPeriodIndex_constr_3, &asn_PER_memb_ra_AssociationPeriodIndex_constr_3,  memb_ra_AssociationPeriodIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-AssociationPeriodIndex"
+               },
+       { ATF_POINTER, 1, offsetof(struct SI_RequestResources, ra_ssb_OccasionMaskIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_4, &asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_4,  memb_ra_ssb_OccasionMaskIndex_constraint_1 },
+               0, 0, /* No default value */
+               "ra-ssb-OccasionMaskIndex"
+               },
+};
+static const int asn_MAP_SI_RequestResources_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SI_RequestResources_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SI_RequestResources_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ra-PreambleStartIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ra-AssociationPeriodIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ra-ssb-OccasionMaskIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SI_RequestResources_specs_1 = {
+       sizeof(struct SI_RequestResources),
+       offsetof(struct SI_RequestResources, _asn_ctx),
+       asn_MAP_SI_RequestResources_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SI_RequestResources_oms_1,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SI_RequestResources = {
+       "SI-RequestResources",
+       "SI-RequestResources",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SI_RequestResources_tags_1,
+       sizeof(asn_DEF_SI_RequestResources_tags_1)
+               /sizeof(asn_DEF_SI_RequestResources_tags_1[0]), /* 1 */
+       asn_DEF_SI_RequestResources_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SI_RequestResources_tags_1)
+               /sizeof(asn_DEF_SI_RequestResources_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SI_RequestResources_1,
+       3,      /* Elements count */
+       &asn_SPC_SI_RequestResources_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SI-RequestResources.h b/src/codec_utils/RRC/SI-RequestResources.h
new file mode 100644 (file)
index 0000000..18df32d
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SI_RequestResources_H_
+#define        _SI_RequestResources_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SI-RequestResources */
+typedef struct SI_RequestResources {
+       long     ra_PreambleStartIndex;
+       long    *ra_AssociationPeriodIndex;     /* OPTIONAL */
+       long    *ra_ssb_OccasionMaskIndex;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SI_RequestResources_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SI_RequestResources;
+extern asn_SEQUENCE_specifics_t asn_SPC_SI_RequestResources_specs_1;
+extern asn_TYPE_member_t asn_MBR_SI_RequestResources_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SI_RequestResources_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SI-SchedulingInfo.c b/src/codec_utils/RRC/SI-SchedulingInfo.c
new file mode 100644 (file)
index 0000000..7b73ef6
--- /dev/null
@@ -0,0 +1,275 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SI-SchedulingInfo.h"
+
+#include "SI-RequestConfig.h"
+#include "SchedulingInfo.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_schedulingInfoList_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 <= 32)) {
+               /* 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_systemInformationAreaID_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 == 24)) {
+               /* 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_schedulingInfoList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_schedulingInfoList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_si_WindowLength_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_si_WindowLength_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  8 }        /* (0..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_schedulingInfoList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_schedulingInfoList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_systemInformationAreaID_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+static asn_per_constraints_t asn_PER_memb_systemInformationAreaID_constr_16 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_schedulingInfoList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SchedulingInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_schedulingInfoList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_schedulingInfoList_specs_2 = {
+       sizeof(struct SI_SchedulingInfo__schedulingInfoList),
+       offsetof(struct SI_SchedulingInfo__schedulingInfoList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingInfoList_2 = {
+       "schedulingInfoList",
+       "schedulingInfoList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_schedulingInfoList_tags_2,
+       sizeof(asn_DEF_schedulingInfoList_tags_2)
+               /sizeof(asn_DEF_schedulingInfoList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_schedulingInfoList_tags_2,      /* Same as above */
+       sizeof(asn_DEF_schedulingInfoList_tags_2)
+               /sizeof(asn_DEF_schedulingInfoList_tags_2[0]), /* 2 */
+       { &asn_OER_type_schedulingInfoList_constr_2, &asn_PER_type_schedulingInfoList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_schedulingInfoList_2,
+       1,      /* Single element */
+       &asn_SPC_schedulingInfoList_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_si_WindowLength_value2enum_4[] = {
+       { 0,    2,      "s5" },
+       { 1,    3,      "s10" },
+       { 2,    3,      "s20" },
+       { 3,    3,      "s40" },
+       { 4,    3,      "s80" },
+       { 5,    4,      "s160" },
+       { 6,    4,      "s320" },
+       { 7,    4,      "s640" },
+       { 8,    5,      "s1280" }
+};
+static const unsigned int asn_MAP_si_WindowLength_enum2value_4[] = {
+       1,      /* s10(1) */
+       8,      /* s1280(8) */
+       5,      /* s160(5) */
+       2,      /* s20(2) */
+       6,      /* s320(6) */
+       3,      /* s40(3) */
+       0,      /* s5(0) */
+       7,      /* s640(7) */
+       4       /* s80(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_si_WindowLength_specs_4 = {
+       asn_MAP_si_WindowLength_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_si_WindowLength_enum2value_4,   /* N => "tag"; sorted by N */
+       9,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_si_WindowLength_tags_4[] = {
+       (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_si_WindowLength_4 = {
+       "si-WindowLength",
+       "si-WindowLength",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_si_WindowLength_tags_4,
+       sizeof(asn_DEF_si_WindowLength_tags_4)
+               /sizeof(asn_DEF_si_WindowLength_tags_4[0]) - 1, /* 1 */
+       asn_DEF_si_WindowLength_tags_4, /* Same as above */
+       sizeof(asn_DEF_si_WindowLength_tags_4)
+               /sizeof(asn_DEF_si_WindowLength_tags_4[0]), /* 2 */
+       { &asn_OER_type_si_WindowLength_constr_4, &asn_PER_type_si_WindowLength_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_si_WindowLength_specs_4        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SI_SchedulingInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SI_SchedulingInfo, schedulingInfoList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_schedulingInfoList_2,
+               0,
+               { &asn_OER_memb_schedulingInfoList_constr_2, &asn_PER_memb_schedulingInfoList_constr_2,  memb_schedulingInfoList_constraint_1 },
+               0, 0, /* No default value */
+               "schedulingInfoList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SI_SchedulingInfo, si_WindowLength),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_si_WindowLength_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-WindowLength"
+               },
+       { ATF_POINTER, 3, offsetof(struct SI_SchedulingInfo, si_RequestConfig),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SI_RequestConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-RequestConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct SI_SchedulingInfo, si_RequestConfigSUL),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SI_RequestConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-RequestConfigSUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct SI_SchedulingInfo, systemInformationAreaID),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_systemInformationAreaID_constr_16, &asn_PER_memb_systemInformationAreaID_constr_16,  memb_systemInformationAreaID_constraint_1 },
+               0, 0, /* No default value */
+               "systemInformationAreaID"
+               },
+};
+static const int asn_MAP_SI_SchedulingInfo_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_SI_SchedulingInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SI_SchedulingInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingInfoList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-WindowLength */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* si-RequestConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* si-RequestConfigSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* systemInformationAreaID */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SI_SchedulingInfo_specs_1 = {
+       sizeof(struct SI_SchedulingInfo),
+       offsetof(struct SI_SchedulingInfo, _asn_ctx),
+       asn_MAP_SI_SchedulingInfo_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_SI_SchedulingInfo_oms_1,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SI_SchedulingInfo = {
+       "SI-SchedulingInfo",
+       "SI-SchedulingInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SI_SchedulingInfo_tags_1,
+       sizeof(asn_DEF_SI_SchedulingInfo_tags_1)
+               /sizeof(asn_DEF_SI_SchedulingInfo_tags_1[0]), /* 1 */
+       asn_DEF_SI_SchedulingInfo_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SI_SchedulingInfo_tags_1)
+               /sizeof(asn_DEF_SI_SchedulingInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SI_SchedulingInfo_1,
+       5,      /* Elements count */
+       &asn_SPC_SI_SchedulingInfo_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SI-SchedulingInfo.h b/src/codec_utils/RRC/SI-SchedulingInfo.h
new file mode 100644 (file)
index 0000000..166ff19
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SI_SchedulingInfo_H_
+#define        _SI_SchedulingInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BIT_STRING.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SI_SchedulingInfo__si_WindowLength {
+       SI_SchedulingInfo__si_WindowLength_s5   = 0,
+       SI_SchedulingInfo__si_WindowLength_s10  = 1,
+       SI_SchedulingInfo__si_WindowLength_s20  = 2,
+       SI_SchedulingInfo__si_WindowLength_s40  = 3,
+       SI_SchedulingInfo__si_WindowLength_s80  = 4,
+       SI_SchedulingInfo__si_WindowLength_s160 = 5,
+       SI_SchedulingInfo__si_WindowLength_s320 = 6,
+       SI_SchedulingInfo__si_WindowLength_s640 = 7,
+       SI_SchedulingInfo__si_WindowLength_s1280        = 8
+} e_SI_SchedulingInfo__si_WindowLength;
+
+/* Forward declarations */
+struct SI_RequestConfig;
+struct SchedulingInfo;
+
+/* SI-SchedulingInfo */
+typedef struct SI_SchedulingInfo {
+       struct SI_SchedulingInfo__schedulingInfoList {
+               A_SEQUENCE_OF(struct SchedulingInfo) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } schedulingInfoList;
+       long     si_WindowLength;
+       struct SI_RequestConfig *si_RequestConfig;      /* OPTIONAL */
+       struct SI_RequestConfig *si_RequestConfigSUL;   /* OPTIONAL */
+       BIT_STRING_t    *systemInformationAreaID;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SI_SchedulingInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_si_WindowLength_4;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SI_SchedulingInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_SI_SchedulingInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_SI_SchedulingInfo_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SI_SchedulingInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB-Mapping.c b/src/codec_utils/RRC/SIB-Mapping.c
new file mode 100644 (file)
index 0000000..df17550
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB-Mapping.h"
+
+#include "SIB-TypeInfo.h"
+static asn_oer_constraints_t asn_OER_type_SIB_Mapping_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_SIB_Mapping_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SIB_Mapping_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SIB_TypeInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SIB_Mapping_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_SIB_Mapping_specs_1 = {
+       sizeof(struct SIB_Mapping),
+       offsetof(struct SIB_Mapping, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB_Mapping = {
+       "SIB-Mapping",
+       "SIB-Mapping",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_SIB_Mapping_tags_1,
+       sizeof(asn_DEF_SIB_Mapping_tags_1)
+               /sizeof(asn_DEF_SIB_Mapping_tags_1[0]), /* 1 */
+       asn_DEF_SIB_Mapping_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SIB_Mapping_tags_1)
+               /sizeof(asn_DEF_SIB_Mapping_tags_1[0]), /* 1 */
+       { &asn_OER_type_SIB_Mapping_constr_1, &asn_PER_type_SIB_Mapping_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_SIB_Mapping_1,
+       1,      /* Single element */
+       &asn_SPC_SIB_Mapping_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB-Mapping.h b/src/codec_utils/RRC/SIB-Mapping.h
new file mode 100644 (file)
index 0000000..9417723
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB_Mapping_H_
+#define        _SIB_Mapping_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 SIB_TypeInfo;
+
+/* SIB-Mapping */
+typedef struct SIB_Mapping {
+       A_SEQUENCE_OF(struct SIB_TypeInfo) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB_Mapping_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB_Mapping;
+extern asn_SET_OF_specifics_t asn_SPC_SIB_Mapping_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB_Mapping_1[1];
+extern asn_per_constraints_t asn_PER_type_SIB_Mapping_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB_Mapping_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB-TypeInfo.c b/src/codec_utils/RRC/SIB-TypeInfo.c
new file mode 100644 (file)
index 0000000..939986b
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB-TypeInfo.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.
+ */
+static int
+memb_valueTag_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 >= 0 && value <= 31)) {
+               /* 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_type_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_type_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  15 }   /* (0..15,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_areaScope_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_areaScope_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_valueTag_constr_20 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_valueTag_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_type_value2enum_2[] = {
+       { 0,    8,      "sibType2" },
+       { 1,    8,      "sibType3" },
+       { 2,    8,      "sibType4" },
+       { 3,    8,      "sibType5" },
+       { 4,    8,      "sibType6" },
+       { 5,    8,      "sibType7" },
+       { 6,    8,      "sibType8" },
+       { 7,    8,      "sibType9" },
+       { 8,    6,      "spare8" },
+       { 9,    6,      "spare7" },
+       { 10,   6,      "spare6" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+       /* This list is extensible */
+};
+static const unsigned int asn_MAP_type_enum2value_2[] = {
+       0,      /* sibType2(0) */
+       1,      /* sibType3(1) */
+       2,      /* sibType4(2) */
+       3,      /* sibType5(3) */
+       4,      /* sibType6(4) */
+       5,      /* sibType7(5) */
+       6,      /* sibType8(6) */
+       7,      /* sibType9(7) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11,     /* spare5(11) */
+       10,     /* spare6(10) */
+       9,      /* spare7(9) */
+       8       /* spare8(8) */
+       /* This list is extensible */
+};
+static const asn_INTEGER_specifics_t asn_SPC_type_specs_2 = {
+       asn_MAP_type_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_type_enum2value_2,      /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       17,     /* Extensions before this member */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_type_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_type_2 = {
+       "type",
+       "type",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_type_tags_2,
+       sizeof(asn_DEF_type_tags_2)
+               /sizeof(asn_DEF_type_tags_2[0]) - 1, /* 1 */
+       asn_DEF_type_tags_2,    /* Same as above */
+       sizeof(asn_DEF_type_tags_2)
+               /sizeof(asn_DEF_type_tags_2[0]), /* 2 */
+       { &asn_OER_type_type_constr_2, &asn_PER_type_type_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_type_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_areaScope_value2enum_21[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_areaScope_enum2value_21[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_areaScope_specs_21 = {
+       asn_MAP_areaScope_value2enum_21,        /* "tag" => N; sorted by tag */
+       asn_MAP_areaScope_enum2value_21,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_areaScope_tags_21[] = {
+       (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_areaScope_21 = {
+       "areaScope",
+       "areaScope",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_areaScope_tags_21,
+       sizeof(asn_DEF_areaScope_tags_21)
+               /sizeof(asn_DEF_areaScope_tags_21[0]) - 1, /* 1 */
+       asn_DEF_areaScope_tags_21,      /* Same as above */
+       sizeof(asn_DEF_areaScope_tags_21)
+               /sizeof(asn_DEF_areaScope_tags_21[0]), /* 2 */
+       { &asn_OER_type_areaScope_constr_21, &asn_PER_type_areaScope_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_areaScope_specs_21     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB_TypeInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB_TypeInfo, type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_type_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "type"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB_TypeInfo, valueTag),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_valueTag_constr_20, &asn_PER_memb_valueTag_constr_20,  memb_valueTag_constraint_1 },
+               0, 0, /* No default value */
+               "valueTag"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB_TypeInfo, areaScope),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_areaScope_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "areaScope"
+               },
+};
+static const int asn_MAP_SIB_TypeInfo_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SIB_TypeInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB_TypeInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueTag */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* areaScope */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB_TypeInfo_specs_1 = {
+       sizeof(struct SIB_TypeInfo),
+       offsetof(struct SIB_TypeInfo, _asn_ctx),
+       asn_MAP_SIB_TypeInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SIB_TypeInfo_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB_TypeInfo = {
+       "SIB-TypeInfo",
+       "SIB-TypeInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB_TypeInfo_tags_1,
+       sizeof(asn_DEF_SIB_TypeInfo_tags_1)
+               /sizeof(asn_DEF_SIB_TypeInfo_tags_1[0]), /* 1 */
+       asn_DEF_SIB_TypeInfo_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB_TypeInfo_tags_1)
+               /sizeof(asn_DEF_SIB_TypeInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB_TypeInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_SIB_TypeInfo_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB-TypeInfo.h b/src/codec_utils/RRC/SIB-TypeInfo.h
new file mode 100644 (file)
index 0000000..eb1ec6e
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB_TypeInfo_H_
+#define        _SIB_TypeInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SIB_TypeInfo__type {
+       SIB_TypeInfo__type_sibType2     = 0,
+       SIB_TypeInfo__type_sibType3     = 1,
+       SIB_TypeInfo__type_sibType4     = 2,
+       SIB_TypeInfo__type_sibType5     = 3,
+       SIB_TypeInfo__type_sibType6     = 4,
+       SIB_TypeInfo__type_sibType7     = 5,
+       SIB_TypeInfo__type_sibType8     = 6,
+       SIB_TypeInfo__type_sibType9     = 7,
+       SIB_TypeInfo__type_spare8       = 8,
+       SIB_TypeInfo__type_spare7       = 9,
+       SIB_TypeInfo__type_spare6       = 10,
+       SIB_TypeInfo__type_spare5       = 11,
+       SIB_TypeInfo__type_spare4       = 12,
+       SIB_TypeInfo__type_spare3       = 13,
+       SIB_TypeInfo__type_spare2       = 14,
+       SIB_TypeInfo__type_spare1       = 15
+       /*
+        * Enumeration is extensible
+        */
+} e_SIB_TypeInfo__type;
+typedef enum SIB_TypeInfo__areaScope {
+       SIB_TypeInfo__areaScope_true    = 0
+} e_SIB_TypeInfo__areaScope;
+
+/* SIB-TypeInfo */
+typedef struct SIB_TypeInfo {
+       long     type;
+       long    *valueTag;      /* OPTIONAL */
+       long    *areaScope;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB_TypeInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_type_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_areaScope_21;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SIB_TypeInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB_TypeInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB_TypeInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB_TypeInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB1.c b/src/codec_utils/RRC/SIB1.c
new file mode 100644 (file)
index 0000000..7e72db4
--- /dev/null
@@ -0,0 +1,699 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB1.h"
+
+#include "ConnEstFailureControl.h"
+#include "SI-SchedulingInfo.h"
+#include "ServingCellConfigCommonSIB.h"
+#include "UE-TimersAndConstants.h"
+#include "UAC-BarringPerCatList.h"
+#include "UAC-BarringPerPLMN-List.h"
+static int
+memb_q_RxLevMinOffset_constraint_2(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 <= 8)) {
+               /* 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_q_QualMinOffset_constraint_2(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 <= 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_individualPLMNList_constraint_21(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 >= 2 && size <= 12)) {
+               /* 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;
+       }
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_memb_q_RxLevMinOffset_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffset_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_q_QualMinOffset_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_q_QualMinOffset_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ims_EmergencySupport_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ims_EmergencySupport_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_eCallOverIMS_Support_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_eCallOverIMS_Support_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_individualPLMNList_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(2..12)) */};
+static asn_per_constraints_t asn_PER_type_individualPLMNList_constr_23 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  2,  12 }       /* (SIZE(2..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_individualPLMNList_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(2..12)) */};
+static asn_per_constraints_t asn_PER_memb_individualPLMNList_constr_23 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  2,  12 }       /* (SIZE(2..12)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_useFullResumeID_constr_25 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_useFullResumeID_constr_25 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_cellSelectionInfo_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMin),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMin"
+               },
+       { ATF_POINTER, 4, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMinOffset),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_RxLevMinOffset_constr_4, &asn_PER_memb_q_RxLevMinOffset_constr_4,  memb_q_RxLevMinOffset_constraint_2 },
+               0, 0, /* No default value */
+               "q-RxLevMinOffset"
+               },
+       { ATF_POINTER, 3, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMinSUL),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMinSUL"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB1__cellSelectionInfo, q_QualMin),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_QualMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-QualMin"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB1__cellSelectionInfo, q_QualMinOffset),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_q_QualMinOffset_constr_7, &asn_PER_memb_q_QualMinOffset_constr_7,  memb_q_QualMinOffset_constraint_2 },
+               0, 0, /* No default value */
+               "q-QualMinOffset"
+               },
+};
+static const int asn_MAP_cellSelectionInfo_oms_2[] = { 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_cellSelectionInfo_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cellSelectionInfo_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* q-RxLevMin */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-RxLevMinOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-RxLevMinSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* q-QualMin */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* q-QualMinOffset */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cellSelectionInfo_specs_2 = {
+       sizeof(struct SIB1__cellSelectionInfo),
+       offsetof(struct SIB1__cellSelectionInfo, _asn_ctx),
+       asn_MAP_cellSelectionInfo_tag2el_2,
+       5,      /* Count of tags in the map */
+       asn_MAP_cellSelectionInfo_oms_2,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellSelectionInfo_2 = {
+       "cellSelectionInfo",
+       "cellSelectionInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cellSelectionInfo_tags_2,
+       sizeof(asn_DEF_cellSelectionInfo_tags_2)
+               /sizeof(asn_DEF_cellSelectionInfo_tags_2[0]) - 1, /* 1 */
+       asn_DEF_cellSelectionInfo_tags_2,       /* Same as above */
+       sizeof(asn_DEF_cellSelectionInfo_tags_2)
+               /sizeof(asn_DEF_cellSelectionInfo_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cellSelectionInfo_2,
+       5,      /* Elements count */
+       &asn_SPC_cellSelectionInfo_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ims_EmergencySupport_value2enum_12[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_ims_EmergencySupport_enum2value_12[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ims_EmergencySupport_specs_12 = {
+       asn_MAP_ims_EmergencySupport_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_ims_EmergencySupport_enum2value_12,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ims_EmergencySupport_tags_12[] = {
+       (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_ims_EmergencySupport_12 = {
+       "ims-EmergencySupport",
+       "ims-EmergencySupport",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ims_EmergencySupport_tags_12,
+       sizeof(asn_DEF_ims_EmergencySupport_tags_12)
+               /sizeof(asn_DEF_ims_EmergencySupport_tags_12[0]) - 1, /* 1 */
+       asn_DEF_ims_EmergencySupport_tags_12,   /* Same as above */
+       sizeof(asn_DEF_ims_EmergencySupport_tags_12)
+               /sizeof(asn_DEF_ims_EmergencySupport_tags_12[0]), /* 2 */
+       { &asn_OER_type_ims_EmergencySupport_constr_12, &asn_PER_type_ims_EmergencySupport_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ims_EmergencySupport_specs_12  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_eCallOverIMS_Support_value2enum_14[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_eCallOverIMS_Support_enum2value_14[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_eCallOverIMS_Support_specs_14 = {
+       asn_MAP_eCallOverIMS_Support_value2enum_14,     /* "tag" => N; sorted by tag */
+       asn_MAP_eCallOverIMS_Support_enum2value_14,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_eCallOverIMS_Support_tags_14[] = {
+       (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_eCallOverIMS_Support_14 = {
+       "eCallOverIMS-Support",
+       "eCallOverIMS-Support",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_eCallOverIMS_Support_tags_14,
+       sizeof(asn_DEF_eCallOverIMS_Support_tags_14)
+               /sizeof(asn_DEF_eCallOverIMS_Support_tags_14[0]) - 1, /* 1 */
+       asn_DEF_eCallOverIMS_Support_tags_14,   /* Same as above */
+       sizeof(asn_DEF_eCallOverIMS_Support_tags_14)
+               /sizeof(asn_DEF_eCallOverIMS_Support_tags_14[0]), /* 2 */
+       { &asn_OER_type_eCallOverIMS_Support_constr_14, &asn_PER_type_eCallOverIMS_Support_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_eCallOverIMS_Support_specs_14  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_individualPLMNList_23[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
+               0,
+               &asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_individualPLMNList_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_individualPLMNList_specs_23 = {
+       sizeof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList),
+       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList, _asn_ctx),
+       1,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_individualPLMNList_23 = {
+       "individualPLMNList",
+       "individualPLMNList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_individualPLMNList_tags_23,
+       sizeof(asn_DEF_individualPLMNList_tags_23)
+               /sizeof(asn_DEF_individualPLMNList_tags_23[0]) - 1, /* 1 */
+       asn_DEF_individualPLMNList_tags_23,     /* Same as above */
+       sizeof(asn_DEF_individualPLMNList_tags_23)
+               /sizeof(asn_DEF_individualPLMNList_tags_23[0]), /* 2 */
+       { &asn_OER_type_individualPLMNList_constr_23, &asn_PER_type_individualPLMNList_constr_23, SEQUENCE_OF_constraint },
+       asn_MBR_individualPLMNList_23,
+       1,      /* Single element */
+       &asn_SPC_individualPLMNList_specs_23    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uac_AccessCategory1_SelectionAssistanceInfo_21[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, choice.plmnCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "plmnCommon"
+               },
+       { ATF_POINTER, 0, offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, choice.individualPLMNList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_individualPLMNList_23,
+               0,
+               { &asn_OER_memb_individualPLMNList_constr_23, &asn_PER_memb_individualPLMNList_constr_23,  memb_individualPLMNList_constraint_21 },
+               0, 0, /* No default value */
+               "individualPLMNList"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_uac_AccessCategory1_SelectionAssistanceInfo_tag2el_21[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmnCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* individualPLMNList */
+};
+static asn_CHOICE_specifics_t asn_SPC_uac_AccessCategory1_SelectionAssistanceInfo_specs_21 = {
+       sizeof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo),
+       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, _asn_ctx),
+       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, present),
+       sizeof(((struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo *)0)->present),
+       asn_MAP_uac_AccessCategory1_SelectionAssistanceInfo_tag2el_21,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uac_AccessCategory1_SelectionAssistanceInfo_21 = {
+       "uac-AccessCategory1-SelectionAssistanceInfo",
+       "uac-AccessCategory1-SelectionAssistanceInfo",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21, &asn_PER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21, CHOICE_constraint },
+       asn_MBR_uac_AccessCategory1_SelectionAssistanceInfo_21,
+       2,      /* Elements count */
+       &asn_SPC_uac_AccessCategory1_SelectionAssistanceInfo_specs_21   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uac_BarringInfo_17[] = {
+       { ATF_POINTER, 2, offsetof(struct SIB1__uac_BarringInfo, uac_BarringForCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_BarringPerCatList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringForCommon"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB1__uac_BarringInfo, uac_BarringPerPLMN_List),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_BarringPerPLMN_List,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringPerPLMN-List"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB1__uac_BarringInfo, uac_BarringInfoSetList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_BarringInfoSetList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringInfoSetList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB1__uac_BarringInfo, uac_AccessCategory1_SelectionAssistanceInfo),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_uac_AccessCategory1_SelectionAssistanceInfo_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-AccessCategory1-SelectionAssistanceInfo"
+               },
+};
+static const int asn_MAP_uac_BarringInfo_oms_17[] = { 0, 1, 3 };
+static const ber_tlv_tag_t asn_DEF_uac_BarringInfo_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_uac_BarringInfo_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-BarringForCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uac-BarringPerPLMN-List */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uac-BarringInfoSetList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* uac-AccessCategory1-SelectionAssistanceInfo */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_uac_BarringInfo_specs_17 = {
+       sizeof(struct SIB1__uac_BarringInfo),
+       offsetof(struct SIB1__uac_BarringInfo, _asn_ctx),
+       asn_MAP_uac_BarringInfo_tag2el_17,
+       4,      /* Count of tags in the map */
+       asn_MAP_uac_BarringInfo_oms_17, /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uac_BarringInfo_17 = {
+       "uac-BarringInfo",
+       "uac-BarringInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_uac_BarringInfo_tags_17,
+       sizeof(asn_DEF_uac_BarringInfo_tags_17)
+               /sizeof(asn_DEF_uac_BarringInfo_tags_17[0]) - 1, /* 1 */
+       asn_DEF_uac_BarringInfo_tags_17,        /* Same as above */
+       sizeof(asn_DEF_uac_BarringInfo_tags_17)
+               /sizeof(asn_DEF_uac_BarringInfo_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_uac_BarringInfo_17,
+       4,      /* Elements count */
+       &asn_SPC_uac_BarringInfo_specs_17       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_useFullResumeID_value2enum_25[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_useFullResumeID_enum2value_25[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_useFullResumeID_specs_25 = {
+       asn_MAP_useFullResumeID_value2enum_25,  /* "tag" => N; sorted by tag */
+       asn_MAP_useFullResumeID_enum2value_25,  /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_useFullResumeID_tags_25[] = {
+       (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_useFullResumeID_25 = {
+       "useFullResumeID",
+       "useFullResumeID",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_useFullResumeID_tags_25,
+       sizeof(asn_DEF_useFullResumeID_tags_25)
+               /sizeof(asn_DEF_useFullResumeID_tags_25[0]) - 1, /* 1 */
+       asn_DEF_useFullResumeID_tags_25,        /* Same as above */
+       sizeof(asn_DEF_useFullResumeID_tags_25)
+               /sizeof(asn_DEF_useFullResumeID_tags_25[0]), /* 2 */
+       { &asn_OER_type_useFullResumeID_constr_25, &asn_PER_type_useFullResumeID_constr_25, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_useFullResumeID_specs_25       /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_28[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_28 = {
+       sizeof(struct SIB1__nonCriticalExtension),
+       offsetof(struct SIB1__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_28 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_28,
+       sizeof(asn_DEF_nonCriticalExtension_tags_28)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_28[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_28,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_28)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_28[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_28  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB1_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SIB1, cellSelectionInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_cellSelectionInfo_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellSelectionInfo"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB1, cellAccessRelatedInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellAccessRelatedInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellAccessRelatedInfo"
+               },
+       { ATF_POINTER, 10, offsetof(struct SIB1, connEstFailureControl),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ConnEstFailureControl,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "connEstFailureControl"
+               },
+       { ATF_POINTER, 9, offsetof(struct SIB1, si_SchedulingInfo),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SI_SchedulingInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-SchedulingInfo"
+               },
+       { ATF_POINTER, 8, offsetof(struct SIB1, servingCellConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServingCellConfigCommonSIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellConfigCommon"
+               },
+       { ATF_POINTER, 7, offsetof(struct SIB1, ims_EmergencySupport),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ims_EmergencySupport_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ims-EmergencySupport"
+               },
+       { ATF_POINTER, 6, offsetof(struct SIB1, eCallOverIMS_Support),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_eCallOverIMS_Support_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "eCallOverIMS-Support"
+               },
+       { ATF_POINTER, 5, offsetof(struct SIB1, ue_TimersAndConstants),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_TimersAndConstants,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-TimersAndConstants"
+               },
+       { ATF_POINTER, 4, offsetof(struct SIB1, uac_BarringInfo),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_uac_BarringInfo_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringInfo"
+               },
+       { ATF_POINTER, 3, offsetof(struct SIB1, useFullResumeID),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_useFullResumeID_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "useFullResumeID"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB1, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB1, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB1_oms_1[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+static const ber_tlv_tag_t asn_DEF_SIB1_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB1_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellSelectionInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellAccessRelatedInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* connEstFailureControl */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* si-SchedulingInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* servingCellConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ims-EmergencySupport */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eCallOverIMS-Support */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ue-TimersAndConstants */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* uac-BarringInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* useFullResumeID */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB1_specs_1 = {
+       sizeof(struct SIB1),
+       offsetof(struct SIB1, _asn_ctx),
+       asn_MAP_SIB1_tag2el_1,
+       12,     /* Count of tags in the map */
+       asn_MAP_SIB1_oms_1,     /* Optional members */
+       11, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB1 = {
+       "SIB1",
+       "SIB1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB1_tags_1,
+       sizeof(asn_DEF_SIB1_tags_1)
+               /sizeof(asn_DEF_SIB1_tags_1[0]), /* 1 */
+       asn_DEF_SIB1_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB1_tags_1)
+               /sizeof(asn_DEF_SIB1_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB1_1,
+       12,     /* Elements count */
+       &asn_SPC_SIB1_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB1.h b/src/codec_utils/RRC/SIB1.h
new file mode 100644 (file)
index 0000000..2ffcbd0
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB1_H_
+#define        _SIB1_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CellAccessRelatedInfo.h"
+#include <NativeEnumerated.h>
+#include <OCTET_STRING.h>
+#include "Q-RxLevMin.h"
+#include <NativeInteger.h>
+#include "Q-QualMin.h"
+#include <constr_SEQUENCE.h>
+#include "UAC-BarringInfoSetList.h"
+#include "UAC-AccessCategory1-SelectionAssistanceInfo.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SIB1__ims_EmergencySupport {
+       SIB1__ims_EmergencySupport_true = 0
+} e_SIB1__ims_EmergencySupport;
+typedef enum SIB1__eCallOverIMS_Support {
+       SIB1__eCallOverIMS_Support_true = 0
+} e_SIB1__eCallOverIMS_Support;
+typedef enum SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR {
+       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_NOTHING,  /* No components present */
+       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_plmnCommon,
+       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_individualPLMNList
+} SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR;
+typedef enum SIB1__useFullResumeID {
+       SIB1__useFullResumeID_true      = 0
+} e_SIB1__useFullResumeID;
+
+/* Forward declarations */
+struct ConnEstFailureControl;
+struct SI_SchedulingInfo;
+struct ServingCellConfigCommonSIB;
+struct UE_TimersAndConstants;
+struct UAC_BarringPerCatList;
+struct UAC_BarringPerPLMN_List;
+
+/* SIB1 */
+typedef struct SIB1 {
+       struct SIB1__cellSelectionInfo {
+               Q_RxLevMin_t     q_RxLevMin;
+               long    *q_RxLevMinOffset;      /* OPTIONAL */
+               Q_RxLevMin_t    *q_RxLevMinSUL; /* OPTIONAL */
+               Q_QualMin_t     *q_QualMin;     /* OPTIONAL */
+               long    *q_QualMinOffset;       /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *cellSelectionInfo;
+       CellAccessRelatedInfo_t  cellAccessRelatedInfo;
+       struct ConnEstFailureControl    *connEstFailureControl; /* OPTIONAL */
+       struct SI_SchedulingInfo        *si_SchedulingInfo;     /* OPTIONAL */
+       struct ServingCellConfigCommonSIB       *servingCellConfigCommon;       /* OPTIONAL */
+       long    *ims_EmergencySupport;  /* OPTIONAL */
+       long    *eCallOverIMS_Support;  /* OPTIONAL */
+       struct UE_TimersAndConstants    *ue_TimersAndConstants; /* OPTIONAL */
+       struct SIB1__uac_BarringInfo {
+               struct UAC_BarringPerCatList    *uac_BarringForCommon;  /* OPTIONAL */
+               struct UAC_BarringPerPLMN_List  *uac_BarringPerPLMN_List;       /* OPTIONAL */
+               UAC_BarringInfoSetList_t         uac_BarringInfoSetList;
+               struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo {
+                       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR present;
+                       union SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_u {
+                               UAC_AccessCategory1_SelectionAssistanceInfo_t    plmnCommon;
+                               struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList {
+                                       A_SEQUENCE_OF(UAC_AccessCategory1_SelectionAssistanceInfo_t) list;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *individualPLMNList;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *uac_AccessCategory1_SelectionAssistanceInfo;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uac_BarringInfo;
+       long    *useFullResumeID;       /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct SIB1__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB1_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_ims_EmergencySupport_12;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_eCallOverIMS_Support_14;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_useFullResumeID_25;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SIB1;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB1_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB1_1[12];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB1_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB2.c b/src/codec_utils/RRC/SIB2.c
new file mode 100644 (file)
index 0000000..75678d1
--- /dev/null
@@ -0,0 +1,798 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB2.h"
+
+#include "ThresholdNR.h"
+#include "MultiFrequencyBandListNR-SIB.h"
+#include "SSB-MTC.h"
+#include "SS-RSSI-Measurement.h"
+#include "SSB-ToMeasure.h"
+#include "SpeedStateScaleFactors.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.
+ */
+static int
+memb_nrofSS_BlocksToAverage_constraint_2(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 >= 2 && value <= 16)) {
+               /* 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_q_Hyst_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_q_Hyst_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sf_Medium_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sf_Medium_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sf_High_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sf_High_constr_31 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofSS_BlocksToAverage_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (2..16) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofSS_BlocksToAverage_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  2,  16 }       /* (2..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_q_Hyst_value2enum_6[] = {
+       { 0,    3,      "dB0" },
+       { 1,    3,      "dB1" },
+       { 2,    3,      "dB2" },
+       { 3,    3,      "dB3" },
+       { 4,    3,      "dB4" },
+       { 5,    3,      "dB5" },
+       { 6,    3,      "dB6" },
+       { 7,    3,      "dB8" },
+       { 8,    4,      "dB10" },
+       { 9,    4,      "dB12" },
+       { 10,   4,      "dB14" },
+       { 11,   4,      "dB16" },
+       { 12,   4,      "dB18" },
+       { 13,   4,      "dB20" },
+       { 14,   4,      "dB22" },
+       { 15,   4,      "dB24" }
+};
+static const unsigned int asn_MAP_q_Hyst_enum2value_6[] = {
+       0,      /* dB0(0) */
+       1,      /* dB1(1) */
+       8,      /* dB10(8) */
+       9,      /* dB12(9) */
+       10,     /* dB14(10) */
+       11,     /* dB16(11) */
+       12,     /* dB18(12) */
+       2,      /* dB2(2) */
+       13,     /* dB20(13) */
+       14,     /* dB22(14) */
+       15,     /* dB24(15) */
+       3,      /* dB3(3) */
+       4,      /* dB4(4) */
+       5,      /* dB5(5) */
+       6,      /* dB6(6) */
+       7       /* dB8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_q_Hyst_specs_6 = {
+       asn_MAP_q_Hyst_value2enum_6,    /* "tag" => N; sorted by tag */
+       asn_MAP_q_Hyst_enum2value_6,    /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_q_Hyst_tags_6[] = {
+       (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_q_Hyst_6 = {
+       "q-Hyst",
+       "q-Hyst",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_q_Hyst_tags_6,
+       sizeof(asn_DEF_q_Hyst_tags_6)
+               /sizeof(asn_DEF_q_Hyst_tags_6[0]) - 1, /* 1 */
+       asn_DEF_q_Hyst_tags_6,  /* Same as above */
+       sizeof(asn_DEF_q_Hyst_tags_6)
+               /sizeof(asn_DEF_q_Hyst_tags_6[0]), /* 2 */
+       { &asn_OER_type_q_Hyst_constr_6, &asn_PER_type_q_Hyst_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_q_Hyst_specs_6 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sf_Medium_value2enum_26[] = {
+       { 0,    4,      "dB-6" },
+       { 1,    4,      "dB-4" },
+       { 2,    4,      "dB-2" },
+       { 3,    3,      "dB0" }
+};
+static const unsigned int asn_MAP_sf_Medium_enum2value_26[] = {
+       2,      /* dB-2(2) */
+       1,      /* dB-4(1) */
+       0,      /* dB-6(0) */
+       3       /* dB0(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sf_Medium_specs_26 = {
+       asn_MAP_sf_Medium_value2enum_26,        /* "tag" => N; sorted by tag */
+       asn_MAP_sf_Medium_enum2value_26,        /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sf_Medium_tags_26[] = {
+       (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_sf_Medium_26 = {
+       "sf-Medium",
+       "sf-Medium",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sf_Medium_tags_26,
+       sizeof(asn_DEF_sf_Medium_tags_26)
+               /sizeof(asn_DEF_sf_Medium_tags_26[0]) - 1, /* 1 */
+       asn_DEF_sf_Medium_tags_26,      /* Same as above */
+       sizeof(asn_DEF_sf_Medium_tags_26)
+               /sizeof(asn_DEF_sf_Medium_tags_26[0]), /* 2 */
+       { &asn_OER_type_sf_Medium_constr_26, &asn_PER_type_sf_Medium_constr_26, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sf_Medium_specs_26     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sf_High_value2enum_31[] = {
+       { 0,    4,      "dB-6" },
+       { 1,    4,      "dB-4" },
+       { 2,    4,      "dB-2" },
+       { 3,    3,      "dB0" }
+};
+static const unsigned int asn_MAP_sf_High_enum2value_31[] = {
+       2,      /* dB-2(2) */
+       1,      /* dB-4(1) */
+       0,      /* dB-6(0) */
+       3       /* dB0(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sf_High_specs_31 = {
+       asn_MAP_sf_High_value2enum_31,  /* "tag" => N; sorted by tag */
+       asn_MAP_sf_High_enum2value_31,  /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sf_High_tags_31[] = {
+       (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_sf_High_31 = {
+       "sf-High",
+       "sf-High",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sf_High_tags_31,
+       sizeof(asn_DEF_sf_High_tags_31)
+               /sizeof(asn_DEF_sf_High_tags_31[0]) - 1, /* 1 */
+       asn_DEF_sf_High_tags_31,        /* Same as above */
+       sizeof(asn_DEF_sf_High_tags_31)
+               /sizeof(asn_DEF_sf_High_tags_31[0]), /* 2 */
+       { &asn_OER_type_sf_High_constr_31, &asn_PER_type_sf_High_constr_31, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sf_High_specs_31       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_q_HystSF_25[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF, sf_Medium),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sf_Medium_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sf-Medium"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF, sf_High),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sf_High_31,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sf-High"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_q_HystSF_tags_25[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_q_HystSF_tag2el_25[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sf-Medium */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sf-High */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_q_HystSF_specs_25 = {
+       sizeof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF),
+       offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF, _asn_ctx),
+       asn_MAP_q_HystSF_tag2el_25,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_q_HystSF_25 = {
+       "q-HystSF",
+       "q-HystSF",
+       &asn_OP_SEQUENCE,
+       asn_DEF_q_HystSF_tags_25,
+       sizeof(asn_DEF_q_HystSF_tags_25)
+               /sizeof(asn_DEF_q_HystSF_tags_25[0]) - 1, /* 1 */
+       asn_DEF_q_HystSF_tags_25,       /* Same as above */
+       sizeof(asn_DEF_q_HystSF_tags_25)
+               /sizeof(asn_DEF_q_HystSF_tags_25[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_q_HystSF_25,
+       2,      /* Elements count */
+       &asn_SPC_q_HystSF_specs_25      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_speedStateReselectionPars_23[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars, mobilityStateParameters),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MobilityStateParameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mobilityStateParameters"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars, q_HystSF),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_q_HystSF_25,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-HystSF"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_speedStateReselectionPars_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_speedStateReselectionPars_tag2el_23[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mobilityStateParameters */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* q-HystSF */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_speedStateReselectionPars_specs_23 = {
+       sizeof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars),
+       offsetof(struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars, _asn_ctx),
+       asn_MAP_speedStateReselectionPars_tag2el_23,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_speedStateReselectionPars_23 = {
+       "speedStateReselectionPars",
+       "speedStateReselectionPars",
+       &asn_OP_SEQUENCE,
+       asn_DEF_speedStateReselectionPars_tags_23,
+       sizeof(asn_DEF_speedStateReselectionPars_tags_23)
+               /sizeof(asn_DEF_speedStateReselectionPars_tags_23[0]) - 1, /* 1 */
+       asn_DEF_speedStateReselectionPars_tags_23,      /* Same as above */
+       sizeof(asn_DEF_speedStateReselectionPars_tags_23)
+               /sizeof(asn_DEF_speedStateReselectionPars_tags_23[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_speedStateReselectionPars_23,
+       2,      /* Elements count */
+       &asn_SPC_speedStateReselectionPars_specs_23     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cellReselectionInfoCommon_2[] = {
+       { ATF_POINTER, 3, offsetof(struct SIB2__cellReselectionInfoCommon, nrofSS_BlocksToAverage),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofSS_BlocksToAverage_constr_3, &asn_PER_memb_nrofSS_BlocksToAverage_constr_3,  memb_nrofSS_BlocksToAverage_constraint_2 },
+               0, 0, /* No default value */
+               "nrofSS-BlocksToAverage"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB2__cellReselectionInfoCommon, absThreshSS_BlocksConsolidation),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ThresholdNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "absThreshSS-BlocksConsolidation"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__cellReselectionInfoCommon, rangeToBestCell),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RangeToBestCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rangeToBestCell"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionInfoCommon, q_Hyst),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_q_Hyst_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-Hyst"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__cellReselectionInfoCommon, speedStateReselectionPars),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_speedStateReselectionPars_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "speedStateReselectionPars"
+               },
+};
+static const int asn_MAP_cellReselectionInfoCommon_oms_2[] = { 0, 1, 2, 4 };
+static const ber_tlv_tag_t asn_DEF_cellReselectionInfoCommon_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cellReselectionInfoCommon_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofSS-BlocksToAverage */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* absThreshSS-BlocksConsolidation */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rangeToBestCell */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* q-Hyst */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* speedStateReselectionPars */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cellReselectionInfoCommon_specs_2 = {
+       sizeof(struct SIB2__cellReselectionInfoCommon),
+       offsetof(struct SIB2__cellReselectionInfoCommon, _asn_ctx),
+       asn_MAP_cellReselectionInfoCommon_tag2el_2,
+       5,      /* Count of tags in the map */
+       asn_MAP_cellReselectionInfoCommon_oms_2,        /* Optional members */
+       4, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellReselectionInfoCommon_2 = {
+       "cellReselectionInfoCommon",
+       "cellReselectionInfoCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cellReselectionInfoCommon_tags_2,
+       sizeof(asn_DEF_cellReselectionInfoCommon_tags_2)
+               /sizeof(asn_DEF_cellReselectionInfoCommon_tags_2[0]) - 1, /* 1 */
+       asn_DEF_cellReselectionInfoCommon_tags_2,       /* Same as above */
+       sizeof(asn_DEF_cellReselectionInfoCommon_tags_2)
+               /sizeof(asn_DEF_cellReselectionInfoCommon_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cellReselectionInfoCommon_2,
+       5,      /* Elements count */
+       &asn_SPC_cellReselectionInfoCommon_specs_2      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_cellReselectionServingFreqInfo_37[] = {
+       { ATF_POINTER, 2, offsetof(struct SIB2__cellReselectionServingFreqInfo, s_NonIntraSearchP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-NonIntraSearchP"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__cellReselectionServingFreqInfo, s_NonIntraSearchQ),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-NonIntraSearchQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionServingFreqInfo, threshServingLowP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshServingLowP"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__cellReselectionServingFreqInfo, threshServingLowQ),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "threshServingLowQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__cellReselectionServingFreqInfo, cellReselectionPriority),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionPriority"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__cellReselectionServingFreqInfo, cellReselectionSubPriority),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellReselectionSubPriority,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionSubPriority"
+               },
+};
+static const int asn_MAP_cellReselectionServingFreqInfo_oms_37[] = { 0, 1, 3, 5 };
+static const ber_tlv_tag_t asn_DEF_cellReselectionServingFreqInfo_tags_37[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_cellReselectionServingFreqInfo_tag2el_37[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* s-NonIntraSearchP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* s-NonIntraSearchQ */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* threshServingLowP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* threshServingLowQ */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* cellReselectionPriority */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* cellReselectionSubPriority */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_cellReselectionServingFreqInfo_specs_37 = {
+       sizeof(struct SIB2__cellReselectionServingFreqInfo),
+       offsetof(struct SIB2__cellReselectionServingFreqInfo, _asn_ctx),
+       asn_MAP_cellReselectionServingFreqInfo_tag2el_37,
+       6,      /* Count of tags in the map */
+       asn_MAP_cellReselectionServingFreqInfo_oms_37,  /* Optional members */
+       4, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_cellReselectionServingFreqInfo_37 = {
+       "cellReselectionServingFreqInfo",
+       "cellReselectionServingFreqInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_cellReselectionServingFreqInfo_tags_37,
+       sizeof(asn_DEF_cellReselectionServingFreqInfo_tags_37)
+               /sizeof(asn_DEF_cellReselectionServingFreqInfo_tags_37[0]) - 1, /* 1 */
+       asn_DEF_cellReselectionServingFreqInfo_tags_37, /* Same as above */
+       sizeof(asn_DEF_cellReselectionServingFreqInfo_tags_37)
+               /sizeof(asn_DEF_cellReselectionServingFreqInfo_tags_37[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_cellReselectionServingFreqInfo_37,
+       6,      /* Elements count */
+       &asn_SPC_cellReselectionServingFreqInfo_specs_37        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_60[] = {
+       { ATF_POINTER, 1, offsetof(struct SIB2__intraFreqCellReselectionInfo__ext1, t_ReselectionNR_SF),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SpeedStateScaleFactors,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionNR-SF"
+               },
+};
+static const int asn_MAP_ext1_oms_60[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_60[] = {
+       (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_60[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* t-ReselectionNR-SF */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_60 = {
+       sizeof(struct SIB2__intraFreqCellReselectionInfo__ext1),
+       offsetof(struct SIB2__intraFreqCellReselectionInfo__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_60,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_60,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_60 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_60,
+       sizeof(asn_DEF_ext1_tags_60)
+               /sizeof(asn_DEF_ext1_tags_60[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_60,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_60)
+               /sizeof(asn_DEF_ext1_tags_60[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_60,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_60  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_intraFreqCellReselectionInfo_45[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__intraFreqCellReselectionInfo, q_RxLevMin),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMin"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB2__intraFreqCellReselectionInfo, q_RxLevMinSUL),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_RxLevMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-RxLevMinSUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__intraFreqCellReselectionInfo, q_QualMin),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Q_QualMin,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "q-QualMin"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__intraFreqCellReselectionInfo, s_IntraSearchP),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThreshold,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-IntraSearchP"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__intraFreqCellReselectionInfo, s_IntraSearchQ),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReselectionThresholdQ,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-IntraSearchQ"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__intraFreqCellReselectionInfo, t_ReselectionNR),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_Reselection,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionNR"
+               },
+       { ATF_POINTER, 6, offsetof(struct SIB2__intraFreqCellReselectionInfo, frequencyBandList),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandList"
+               },
+       { ATF_POINTER, 5, offsetof(struct SIB2__intraFreqCellReselectionInfo, frequencyBandListSUL),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MultiFrequencyBandListNR_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandListSUL"
+               },
+       { ATF_POINTER, 4, offsetof(struct SIB2__intraFreqCellReselectionInfo, p_Max),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P_Max,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "p-Max"
+               },
+       { ATF_POINTER, 3, offsetof(struct SIB2__intraFreqCellReselectionInfo, smtc),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_MTC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "smtc"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB2__intraFreqCellReselectionInfo, ss_RSSI_Measurement),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SS_RSSI_Measurement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ss-RSSI-Measurement"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__intraFreqCellReselectionInfo, ssb_ToMeasure),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SSB_ToMeasure,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-ToMeasure"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2__intraFreqCellReselectionInfo, deriveSSB_IndexFromCell),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deriveSSB-IndexFromCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB2__intraFreqCellReselectionInfo, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               0,
+               &asn_DEF_ext1_60,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_intraFreqCellReselectionInfo_oms_45[] = { 1, 2, 4, 6, 7, 8, 9, 10, 11, 13 };
+static const ber_tlv_tag_t asn_DEF_intraFreqCellReselectionInfo_tags_45[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_intraFreqCellReselectionInfo_tag2el_45[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* q-RxLevMin */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-RxLevMinSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-QualMin */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* s-IntraSearchP */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* s-IntraSearchQ */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* t-ReselectionNR */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* frequencyBandList */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* frequencyBandListSUL */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* p-Max */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* smtc */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* ss-RSSI-Measurement */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ssb-ToMeasure */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* deriveSSB-IndexFromCell */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 } /* ext1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_intraFreqCellReselectionInfo_specs_45 = {
+       sizeof(struct SIB2__intraFreqCellReselectionInfo),
+       offsetof(struct SIB2__intraFreqCellReselectionInfo, _asn_ctx),
+       asn_MAP_intraFreqCellReselectionInfo_tag2el_45,
+       14,     /* Count of tags in the map */
+       asn_MAP_intraFreqCellReselectionInfo_oms_45,    /* Optional members */
+       9, 1,   /* Root/Additions */
+       13,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_intraFreqCellReselectionInfo_45 = {
+       "intraFreqCellReselectionInfo",
+       "intraFreqCellReselectionInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_intraFreqCellReselectionInfo_tags_45,
+       sizeof(asn_DEF_intraFreqCellReselectionInfo_tags_45)
+               /sizeof(asn_DEF_intraFreqCellReselectionInfo_tags_45[0]) - 1, /* 1 */
+       asn_DEF_intraFreqCellReselectionInfo_tags_45,   /* Same as above */
+       sizeof(asn_DEF_intraFreqCellReselectionInfo_tags_45)
+               /sizeof(asn_DEF_intraFreqCellReselectionInfo_tags_45[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_intraFreqCellReselectionInfo_45,
+       14,     /* Elements count */
+       &asn_SPC_intraFreqCellReselectionInfo_specs_45  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB2_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2, cellReselectionInfoCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_cellReselectionInfoCommon_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionInfoCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2, cellReselectionServingFreqInfo),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_cellReselectionServingFreqInfo_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellReselectionServingFreqInfo"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB2, intraFreqCellReselectionInfo),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_intraFreqCellReselectionInfo_45,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraFreqCellReselectionInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SIB2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellReselectionInfoCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellReselectionServingFreqInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* intraFreqCellReselectionInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB2_specs_1 = {
+       sizeof(struct SIB2),
+       offsetof(struct SIB2, _asn_ctx),
+       asn_MAP_SIB2_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_SIB2 = {
+       "SIB2",
+       "SIB2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB2_tags_1,
+       sizeof(asn_DEF_SIB2_tags_1)
+               /sizeof(asn_DEF_SIB2_tags_1[0]), /* 1 */
+       asn_DEF_SIB2_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB2_tags_1)
+               /sizeof(asn_DEF_SIB2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB2_1,
+       3,      /* Elements count */
+       &asn_SPC_SIB2_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB2.h b/src/codec_utils/RRC/SIB2.h
new file mode 100644 (file)
index 0000000..8e49159
--- /dev/null
@@ -0,0 +1,167 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB2_H_
+#define        _SIB2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "RangeToBestCell.h"
+#include <NativeEnumerated.h>
+#include "MobilityStateParameters.h"
+#include <constr_SEQUENCE.h>
+#include "ReselectionThreshold.h"
+#include "ReselectionThresholdQ.h"
+#include "CellReselectionPriority.h"
+#include "CellReselectionSubPriority.h"
+#include "Q-RxLevMin.h"
+#include "Q-QualMin.h"
+#include "T-Reselection.h"
+#include "P-Max.h"
+#include <BOOLEAN.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SIB2__cellReselectionInfoCommon__q_Hyst {
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB0     = 0,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB1     = 1,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB2     = 2,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB3     = 3,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB4     = 4,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB5     = 5,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB6     = 6,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB8     = 7,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB10    = 8,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB12    = 9,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB14    = 10,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB16    = 11,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB18    = 12,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB20    = 13,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB22    = 14,
+       SIB2__cellReselectionInfoCommon__q_Hyst_dB24    = 15
+} e_SIB2__cellReselectionInfoCommon__q_Hyst;
+typedef enum SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium {
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium_dB_6    = 0,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium_dB_4    = 1,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium_dB_2    = 2,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium_dB0     = 3
+} e_SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_Medium;
+typedef enum SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High {
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High_dB_6      = 0,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High_dB_4      = 1,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High_dB_2      = 2,
+       SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High_dB0       = 3
+} e_SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF__sf_High;
+
+/* Forward declarations */
+struct ThresholdNR;
+struct MultiFrequencyBandListNR_SIB;
+struct SSB_MTC;
+struct SS_RSSI_Measurement;
+struct SSB_ToMeasure;
+struct SpeedStateScaleFactors;
+
+/* SIB2 */
+typedef struct SIB2 {
+       struct SIB2__cellReselectionInfoCommon {
+               long    *nrofSS_BlocksToAverage;        /* OPTIONAL */
+               struct ThresholdNR      *absThreshSS_BlocksConsolidation;       /* OPTIONAL */
+               RangeToBestCell_t       *rangeToBestCell;       /* OPTIONAL */
+               long     q_Hyst;
+               struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars {
+                       MobilityStateParameters_t        mobilityStateParameters;
+                       struct SIB2__cellReselectionInfoCommon__speedStateReselectionPars__q_HystSF {
+                               long     sf_Medium;
+                               long     sf_High;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } q_HystSF;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *speedStateReselectionPars;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } cellReselectionInfoCommon;
+       struct SIB2__cellReselectionServingFreqInfo {
+               ReselectionThreshold_t  *s_NonIntraSearchP;     /* OPTIONAL */
+               ReselectionThresholdQ_t *s_NonIntraSearchQ;     /* OPTIONAL */
+               ReselectionThreshold_t   threshServingLowP;
+               ReselectionThresholdQ_t *threshServingLowQ;     /* OPTIONAL */
+               CellReselectionPriority_t        cellReselectionPriority;
+               CellReselectionSubPriority_t    *cellReselectionSubPriority;    /* OPTIONAL */
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } cellReselectionServingFreqInfo;
+       struct SIB2__intraFreqCellReselectionInfo {
+               Q_RxLevMin_t     q_RxLevMin;
+               Q_RxLevMin_t    *q_RxLevMinSUL; /* OPTIONAL */
+               Q_QualMin_t     *q_QualMin;     /* OPTIONAL */
+               ReselectionThreshold_t   s_IntraSearchP;
+               ReselectionThresholdQ_t *s_IntraSearchQ;        /* OPTIONAL */
+               T_Reselection_t  t_ReselectionNR;
+               struct MultiFrequencyBandListNR_SIB     *frequencyBandList;     /* OPTIONAL */
+               struct MultiFrequencyBandListNR_SIB     *frequencyBandListSUL;  /* OPTIONAL */
+               P_Max_t *p_Max; /* OPTIONAL */
+               struct SSB_MTC  *smtc;  /* OPTIONAL */
+               struct SS_RSSI_Measurement      *ss_RSSI_Measurement;   /* OPTIONAL */
+               struct SSB_ToMeasure    *ssb_ToMeasure; /* OPTIONAL */
+               BOOLEAN_t        deriveSSB_IndexFromCell;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+               struct SIB2__intraFreqCellReselectionInfo__ext1 {
+                       struct SpeedStateScaleFactors   *t_ReselectionNR_SF;    /* OPTIONAL */
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *ext1;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } intraFreqCellReselectionInfo;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB2_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_q_Hyst_6;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sf_Medium_26;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sf_High_31;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SIB2;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB2_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB2_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB3.c b/src/codec_utils/RRC/SIB3.c
new file mode 100644 (file)
index 0000000..cf3c21f
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB3.h"
+
+#include "IntraFreqNeighCellList.h"
+#include "IntraFreqBlackCellList.h"
+asn_TYPE_member_t asn_MBR_SIB3_1[] = {
+       { ATF_POINTER, 3, offsetof(struct SIB3, intraFreqNeighCellList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_IntraFreqNeighCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraFreqNeighCellList"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB3, intraFreqBlackCellList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_IntraFreqBlackCellList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "intraFreqBlackCellList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB3, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB3_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SIB3_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB3_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* intraFreqNeighCellList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* intraFreqBlackCellList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB3_specs_1 = {
+       sizeof(struct SIB3),
+       offsetof(struct SIB3, _asn_ctx),
+       asn_MAP_SIB3_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SIB3_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB3 = {
+       "SIB3",
+       "SIB3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB3_tags_1,
+       sizeof(asn_DEF_SIB3_tags_1)
+               /sizeof(asn_DEF_SIB3_tags_1[0]), /* 1 */
+       asn_DEF_SIB3_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB3_tags_1)
+               /sizeof(asn_DEF_SIB3_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB3_1,
+       3,      /* Elements count */
+       &asn_SPC_SIB3_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB3.h b/src/codec_utils/RRC/SIB3.h
new file mode 100644 (file)
index 0000000..f48af81
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB3_H_
+#define        _SIB3_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct IntraFreqNeighCellList;
+struct IntraFreqBlackCellList;
+
+/* SIB3 */
+typedef struct SIB3 {
+       struct IntraFreqNeighCellList   *intraFreqNeighCellList;        /* OPTIONAL */
+       struct IntraFreqBlackCellList   *intraFreqBlackCellList;        /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB3_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB3;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB3_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB3_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB3_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB4.c b/src/codec_utils/RRC/SIB4.c
new file mode 100644 (file)
index 0000000..80c924a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB4.h"
+
+asn_TYPE_member_t asn_MBR_SIB4_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB4, interFreqCarrierFreqList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_InterFreqCarrierFreqList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "interFreqCarrierFreqList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB4, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB4_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_SIB4_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB4_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interFreqCarrierFreqList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB4_specs_1 = {
+       sizeof(struct SIB4),
+       offsetof(struct SIB4, _asn_ctx),
+       asn_MAP_SIB4_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SIB4_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB4 = {
+       "SIB4",
+       "SIB4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB4_tags_1,
+       sizeof(asn_DEF_SIB4_tags_1)
+               /sizeof(asn_DEF_SIB4_tags_1[0]), /* 1 */
+       asn_DEF_SIB4_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB4_tags_1)
+               /sizeof(asn_DEF_SIB4_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB4_1,
+       2,      /* Elements count */
+       &asn_SPC_SIB4_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB4.h b/src/codec_utils/RRC/SIB4.h
new file mode 100644 (file)
index 0000000..842a78e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB4_H_
+#define        _SIB4_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "InterFreqCarrierFreqList.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SIB4 */
+typedef struct SIB4 {
+       InterFreqCarrierFreqList_t       interFreqCarrierFreqList;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB4_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB4;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB4_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB4_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB4_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB5.c b/src/codec_utils/RRC/SIB5.c
new file mode 100644 (file)
index 0000000..770d59e
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB5.h"
+
+#include "CarrierFreqListEUTRA.h"
+#include "SpeedStateScaleFactors.h"
+asn_TYPE_member_t asn_MBR_SIB5_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SIB5, carrierFreqListEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CarrierFreqListEUTRA,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierFreqListEUTRA"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB5, t_ReselectionEUTRA),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_Reselection,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionEUTRA"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB5, t_ReselectionEUTRA_SF),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SpeedStateScaleFactors,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-ReselectionEUTRA-SF"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB5, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB5_oms_1[] = { 0, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SIB5_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB5_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* carrierFreqListEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t-ReselectionEUTRA */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* t-ReselectionEUTRA-SF */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB5_specs_1 = {
+       sizeof(struct SIB5),
+       offsetof(struct SIB5, _asn_ctx),
+       asn_MAP_SIB5_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SIB5_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB5 = {
+       "SIB5",
+       "SIB5",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB5_tags_1,
+       sizeof(asn_DEF_SIB5_tags_1)
+               /sizeof(asn_DEF_SIB5_tags_1[0]), /* 1 */
+       asn_DEF_SIB5_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB5_tags_1)
+               /sizeof(asn_DEF_SIB5_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB5_1,
+       4,      /* Elements count */
+       &asn_SPC_SIB5_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB5.h b/src/codec_utils/RRC/SIB5.h
new file mode 100644 (file)
index 0000000..235f0db
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB5_H_
+#define        _SIB5_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "T-Reselection.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CarrierFreqListEUTRA;
+struct SpeedStateScaleFactors;
+
+/* SIB5 */
+typedef struct SIB5 {
+       struct CarrierFreqListEUTRA     *carrierFreqListEUTRA;  /* OPTIONAL */
+       T_Reselection_t  t_ReselectionEUTRA;
+       struct SpeedStateScaleFactors   *t_ReselectionEUTRA_SF; /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB5_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB5;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB5_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB5_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB5_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB6.c b/src/codec_utils/RRC/SIB6.c
new file mode 100644 (file)
index 0000000..c525e48
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB6.h"
+
+static int
+memb_messageIdentifier_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 == 16)) {
+               /* 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_serialNumber_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 == 16)) {
+               /* 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_warningType_constraint_1(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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_warningType_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_warningType_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SIB6_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB6, messageIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_messageIdentifier_constr_2, &asn_PER_memb_messageIdentifier_constr_2,  memb_messageIdentifier_constraint_1 },
+               0, 0, /* No default value */
+               "messageIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB6, serialNumber),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_serialNumber_constr_3, &asn_PER_memb_serialNumber_constr_3,  memb_serialNumber_constraint_1 },
+               0, 0, /* No default value */
+               "serialNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB6, warningType),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_warningType_constr_4, &asn_PER_memb_warningType_constr_4,  memb_warningType_constraint_1 },
+               0, 0, /* No default value */
+               "warningType"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB6, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB6_oms_1[] = { 3 };
+static const ber_tlv_tag_t asn_DEF_SIB6_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB6_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serialNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* warningType */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB6_specs_1 = {
+       sizeof(struct SIB6),
+       offsetof(struct SIB6, _asn_ctx),
+       asn_MAP_SIB6_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SIB6_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB6 = {
+       "SIB6",
+       "SIB6",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB6_tags_1,
+       sizeof(asn_DEF_SIB6_tags_1)
+               /sizeof(asn_DEF_SIB6_tags_1[0]), /* 1 */
+       asn_DEF_SIB6_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB6_tags_1)
+               /sizeof(asn_DEF_SIB6_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB6_1,
+       4,      /* Elements count */
+       &asn_SPC_SIB6_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB6.h b/src/codec_utils/RRC/SIB6.h
new file mode 100644 (file)
index 0000000..dd92efa
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB6_H_
+#define        _SIB6_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SIB6 */
+typedef struct SIB6 {
+       BIT_STRING_t     messageIdentifier;
+       BIT_STRING_t     serialNumber;
+       OCTET_STRING_t   warningType;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB6_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB6;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB6_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB6_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB6_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB7.c b/src/codec_utils/RRC/SIB7.c
new file mode 100644 (file)
index 0000000..4fae0f6
--- /dev/null
@@ -0,0 +1,306 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB7.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_messageIdentifier_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 == 16)) {
+               /* 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_serialNumber_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 == 16)) {
+               /* 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_warningMessageSegmentNumber_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 >= 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;
+       }
+}
+
+static int
+memb_dataCodingScheme_constraint_1(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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_type_warningMessageSegmentType_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_warningMessageSegmentType_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_warningMessageSegmentNumber_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_warningMessageSegmentNumber_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dataCodingScheme_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_dataCodingScheme_constr_9 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 asn_INTEGER_enum_map_t asn_MAP_warningMessageSegmentType_value2enum_4[] = {
+       { 0,    14,     "notLastSegment" },
+       { 1,    11,     "lastSegment" }
+};
+static const unsigned int asn_MAP_warningMessageSegmentType_enum2value_4[] = {
+       1,      /* lastSegment(1) */
+       0       /* notLastSegment(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_warningMessageSegmentType_specs_4 = {
+       asn_MAP_warningMessageSegmentType_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_warningMessageSegmentType_enum2value_4, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_warningMessageSegmentType_tags_4[] = {
+       (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_warningMessageSegmentType_4 = {
+       "warningMessageSegmentType",
+       "warningMessageSegmentType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_warningMessageSegmentType_tags_4,
+       sizeof(asn_DEF_warningMessageSegmentType_tags_4)
+               /sizeof(asn_DEF_warningMessageSegmentType_tags_4[0]) - 1, /* 1 */
+       asn_DEF_warningMessageSegmentType_tags_4,       /* Same as above */
+       sizeof(asn_DEF_warningMessageSegmentType_tags_4)
+               /sizeof(asn_DEF_warningMessageSegmentType_tags_4[0]), /* 2 */
+       { &asn_OER_type_warningMessageSegmentType_constr_4, &asn_PER_type_warningMessageSegmentType_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_warningMessageSegmentType_specs_4      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB7_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB7, messageIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_messageIdentifier_constr_2, &asn_PER_memb_messageIdentifier_constr_2,  memb_messageIdentifier_constraint_1 },
+               0, 0, /* No default value */
+               "messageIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB7, serialNumber),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_serialNumber_constr_3, &asn_PER_memb_serialNumber_constr_3,  memb_serialNumber_constraint_1 },
+               0, 0, /* No default value */
+               "serialNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB7, warningMessageSegmentType),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_warningMessageSegmentType_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "warningMessageSegmentType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB7, warningMessageSegmentNumber),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_warningMessageSegmentNumber_constr_7, &asn_PER_memb_warningMessageSegmentNumber_constr_7,  memb_warningMessageSegmentNumber_constraint_1 },
+               0, 0, /* No default value */
+               "warningMessageSegmentNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB7, warningMessageSegment),
+               (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 */
+               "warningMessageSegment"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB7, dataCodingScheme),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_dataCodingScheme_constr_9, &asn_PER_memb_dataCodingScheme_constr_9,  memb_dataCodingScheme_constraint_1 },
+               0, 0, /* No default value */
+               "dataCodingScheme"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB7, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB7_oms_1[] = { 5, 6 };
+static const ber_tlv_tag_t asn_DEF_SIB7_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB7_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serialNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* warningMessageSegmentType */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* warningMessageSegmentNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* warningMessageSegment */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dataCodingScheme */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB7_specs_1 = {
+       sizeof(struct SIB7),
+       offsetof(struct SIB7, _asn_ctx),
+       asn_MAP_SIB7_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_SIB7_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB7 = {
+       "SIB7",
+       "SIB7",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB7_tags_1,
+       sizeof(asn_DEF_SIB7_tags_1)
+               /sizeof(asn_DEF_SIB7_tags_1[0]), /* 1 */
+       asn_DEF_SIB7_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB7_tags_1)
+               /sizeof(asn_DEF_SIB7_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB7_1,
+       7,      /* Elements count */
+       &asn_SPC_SIB7_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB7.h b/src/codec_utils/RRC/SIB7.h
new file mode 100644 (file)
index 0000000..861af54
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB7_H_
+#define        _SIB7_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SIB7__warningMessageSegmentType {
+       SIB7__warningMessageSegmentType_notLastSegment  = 0,
+       SIB7__warningMessageSegmentType_lastSegment     = 1
+} e_SIB7__warningMessageSegmentType;
+
+/* SIB7 */
+typedef struct SIB7 {
+       BIT_STRING_t     messageIdentifier;
+       BIT_STRING_t     serialNumber;
+       long     warningMessageSegmentType;
+       long     warningMessageSegmentNumber;
+       OCTET_STRING_t   warningMessageSegment;
+       OCTET_STRING_t  *dataCodingScheme;      /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB7_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_warningMessageSegmentType_4;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SIB7;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB7_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB7_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB7_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB8.c b/src/codec_utils/RRC/SIB8.c
new file mode 100644 (file)
index 0000000..eacb284
--- /dev/null
@@ -0,0 +1,316 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB8.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_messageIdentifier_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 == 16)) {
+               /* 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_serialNumber_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 == 16)) {
+               /* 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_warningMessageSegmentNumber_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 >= 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;
+       }
+}
+
+static int
+memb_dataCodingScheme_constraint_1(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;
+       }
+}
+
+static asn_oer_constraints_t asn_OER_type_warningMessageSegmentType_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_warningMessageSegmentType_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_messageIdentifier_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+static asn_per_constraints_t asn_PER_memb_serialNumber_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_warningMessageSegmentNumber_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_warningMessageSegmentNumber_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dataCodingScheme_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       1       /* (SIZE(1..1)) */};
+static asn_per_constraints_t asn_PER_memb_dataCodingScheme_constr_9 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 asn_INTEGER_enum_map_t asn_MAP_warningMessageSegmentType_value2enum_4[] = {
+       { 0,    14,     "notLastSegment" },
+       { 1,    11,     "lastSegment" }
+};
+static const unsigned int asn_MAP_warningMessageSegmentType_enum2value_4[] = {
+       1,      /* lastSegment(1) */
+       0       /* notLastSegment(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_warningMessageSegmentType_specs_4 = {
+       asn_MAP_warningMessageSegmentType_value2enum_4, /* "tag" => N; sorted by tag */
+       asn_MAP_warningMessageSegmentType_enum2value_4, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_warningMessageSegmentType_tags_4[] = {
+       (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_warningMessageSegmentType_4 = {
+       "warningMessageSegmentType",
+       "warningMessageSegmentType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_warningMessageSegmentType_tags_4,
+       sizeof(asn_DEF_warningMessageSegmentType_tags_4)
+               /sizeof(asn_DEF_warningMessageSegmentType_tags_4[0]) - 1, /* 1 */
+       asn_DEF_warningMessageSegmentType_tags_4,       /* Same as above */
+       sizeof(asn_DEF_warningMessageSegmentType_tags_4)
+               /sizeof(asn_DEF_warningMessageSegmentType_tags_4[0]), /* 2 */
+       { &asn_OER_type_warningMessageSegmentType_constr_4, &asn_PER_type_warningMessageSegmentType_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_warningMessageSegmentType_specs_4      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB8_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB8, messageIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_messageIdentifier_constr_2, &asn_PER_memb_messageIdentifier_constr_2,  memb_messageIdentifier_constraint_1 },
+               0, 0, /* No default value */
+               "messageIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB8, serialNumber),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_serialNumber_constr_3, &asn_PER_memb_serialNumber_constr_3,  memb_serialNumber_constraint_1 },
+               0, 0, /* No default value */
+               "serialNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB8, warningMessageSegmentType),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_warningMessageSegmentType_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "warningMessageSegmentType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB8, warningMessageSegmentNumber),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_warningMessageSegmentNumber_constr_7, &asn_PER_memb_warningMessageSegmentNumber_constr_7,  memb_warningMessageSegmentNumber_constraint_1 },
+               0, 0, /* No default value */
+               "warningMessageSegmentNumber"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SIB8, warningMessageSegment),
+               (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 */
+               "warningMessageSegment"
+               },
+       { ATF_POINTER, 3, offsetof(struct SIB8, dataCodingScheme),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_dataCodingScheme_constr_9, &asn_PER_memb_dataCodingScheme_constr_9,  memb_dataCodingScheme_constraint_1 },
+               0, 0, /* No default value */
+               "dataCodingScheme"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB8, warningAreaCoordinatesSegment),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "warningAreaCoordinatesSegment"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB8, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB8_oms_1[] = { 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_SIB8_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB8_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* messageIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* serialNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* warningMessageSegmentType */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* warningMessageSegmentNumber */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* warningMessageSegment */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* dataCodingScheme */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* warningAreaCoordinatesSegment */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB8_specs_1 = {
+       sizeof(struct SIB8),
+       offsetof(struct SIB8, _asn_ctx),
+       asn_MAP_SIB8_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_SIB8_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB8 = {
+       "SIB8",
+       "SIB8",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB8_tags_1,
+       sizeof(asn_DEF_SIB8_tags_1)
+               /sizeof(asn_DEF_SIB8_tags_1[0]), /* 1 */
+       asn_DEF_SIB8_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB8_tags_1)
+               /sizeof(asn_DEF_SIB8_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB8_1,
+       8,      /* Elements count */
+       &asn_SPC_SIB8_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB8.h b/src/codec_utils/RRC/SIB8.h
new file mode 100644 (file)
index 0000000..961b389
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB8_H_
+#define        _SIB8_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SIB8__warningMessageSegmentType {
+       SIB8__warningMessageSegmentType_notLastSegment  = 0,
+       SIB8__warningMessageSegmentType_lastSegment     = 1
+} e_SIB8__warningMessageSegmentType;
+
+/* SIB8 */
+typedef struct SIB8 {
+       BIT_STRING_t     messageIdentifier;
+       BIT_STRING_t     serialNumber;
+       long     warningMessageSegmentType;
+       long     warningMessageSegmentNumber;
+       OCTET_STRING_t   warningMessageSegment;
+       OCTET_STRING_t  *dataCodingScheme;      /* OPTIONAL */
+       OCTET_STRING_t  *warningAreaCoordinatesSegment; /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB8_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_warningMessageSegmentType_4;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SIB8;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB8_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB8_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB8_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SIB9.c b/src/codec_utils/RRC/SIB9.c
new file mode 100644 (file)
index 0000000..577f232
--- /dev/null
@@ -0,0 +1,281 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SIB9.h"
+
+static int
+memb_timeInfoUTC_constraint_2(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 <= 549755813887)) {
+               /* 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_dayLightSavingTime_constraint_2(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 == 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 int
+memb_leapSeconds_constraint_2(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 >= -127 && value <= 128)) {
+               /* 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_localTimeOffset_constraint_2(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 >= -63 && value <= 64)) {
+               /* 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_timeInfoUTC_constr_3 CC_NOTUSED = {
+       { 8, 1 }        /* (0..549755813887) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_timeInfoUTC_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       39, -1,  0,  549755813887 }    /* (0..549755813887) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dayLightSavingTime_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       2       /* (SIZE(2..2)) */};
+static asn_per_constraints_t asn_PER_memb_dayLightSavingTime_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  2,  2 }        /* (SIZE(2..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_leapSeconds_constr_5 CC_NOTUSED = {
+       { 2, 0 }        /* (-127..128) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_leapSeconds_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -127,  128 }    /* (-127..128) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_localTimeOffset_constr_6 CC_NOTUSED = {
+       { 1, 0 }        /* (-63..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_localTimeOffset_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7, -63,  64 }      /* (-63..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_timeInfo_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SIB9__timeInfo, timeInfoUTC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_INTEGER,
+               0,
+               { &asn_OER_memb_timeInfoUTC_constr_3, &asn_PER_memb_timeInfoUTC_constr_3,  memb_timeInfoUTC_constraint_2 },
+               0, 0, /* No default value */
+               "timeInfoUTC"
+               },
+       { ATF_POINTER, 3, offsetof(struct SIB9__timeInfo, dayLightSavingTime),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_dayLightSavingTime_constr_4, &asn_PER_memb_dayLightSavingTime_constr_4,  memb_dayLightSavingTime_constraint_2 },
+               0, 0, /* No default value */
+               "dayLightSavingTime"
+               },
+       { ATF_POINTER, 2, offsetof(struct SIB9__timeInfo, leapSeconds),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_leapSeconds_constr_5, &asn_PER_memb_leapSeconds_constr_5,  memb_leapSeconds_constraint_2 },
+               0, 0, /* No default value */
+               "leapSeconds"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB9__timeInfo, localTimeOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_localTimeOffset_constr_6, &asn_PER_memb_localTimeOffset_constr_6,  memb_localTimeOffset_constraint_2 },
+               0, 0, /* No default value */
+               "localTimeOffset"
+               },
+};
+static const int asn_MAP_timeInfo_oms_2[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_timeInfo_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_timeInfo_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeInfoUTC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dayLightSavingTime */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* leapSeconds */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* localTimeOffset */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_timeInfo_specs_2 = {
+       sizeof(struct SIB9__timeInfo),
+       offsetof(struct SIB9__timeInfo, _asn_ctx),
+       asn_MAP_timeInfo_tag2el_2,
+       4,      /* Count of tags in the map */
+       asn_MAP_timeInfo_oms_2, /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_timeInfo_2 = {
+       "timeInfo",
+       "timeInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_timeInfo_tags_2,
+       sizeof(asn_DEF_timeInfo_tags_2)
+               /sizeof(asn_DEF_timeInfo_tags_2[0]) - 1, /* 1 */
+       asn_DEF_timeInfo_tags_2,        /* Same as above */
+       sizeof(asn_DEF_timeInfo_tags_2)
+               /sizeof(asn_DEF_timeInfo_tags_2[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_timeInfo_2,
+       4,      /* Elements count */
+       &asn_SPC_timeInfo_specs_2       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SIB9_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SIB9, timeInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_timeInfo_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct SIB9, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+};
+static const int asn_MAP_SIB9_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SIB9_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SIB9_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* timeInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* lateNonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SIB9_specs_1 = {
+       sizeof(struct SIB9),
+       offsetof(struct SIB9, _asn_ctx),
+       asn_MAP_SIB9_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SIB9_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SIB9 = {
+       "SIB9",
+       "SIB9",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SIB9_tags_1,
+       sizeof(asn_DEF_SIB9_tags_1)
+               /sizeof(asn_DEF_SIB9_tags_1[0]), /* 1 */
+       asn_DEF_SIB9_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SIB9_tags_1)
+               /sizeof(asn_DEF_SIB9_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SIB9_1,
+       2,      /* Elements count */
+       &asn_SPC_SIB9_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SIB9.h b/src/codec_utils/RRC/SIB9.h
new file mode 100644 (file)
index 0000000..f0c0c09
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SIB9_H_
+#define        _SIB9_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <INTEGER.h>
+#include <BIT_STRING.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SIB9 */
+typedef struct SIB9 {
+       struct SIB9__timeInfo {
+               INTEGER_t        timeInfoUTC;
+               BIT_STRING_t    *dayLightSavingTime;    /* OPTIONAL */
+               long    *leapSeconds;   /* OPTIONAL */
+               long    *localTimeOffset;       /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *timeInfo;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SIB9_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SIB9;
+extern asn_SEQUENCE_specifics_t asn_SPC_SIB9_specs_1;
+extern asn_TYPE_member_t asn_MBR_SIB9_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SIB9_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SINR-Range.c b/src/codec_utils/RRC/SINR-Range.c
new file mode 100644 (file)
index 0000000..1a777fe
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SINR-Range.h"
+
+int
+SINR_Range_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 <= 127)) {
+               /* 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_SINR_Range_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SINR_Range_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SINR_Range_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SINR_Range = {
+       "SINR-Range",
+       "SINR-Range",
+       &asn_OP_NativeInteger,
+       asn_DEF_SINR_Range_tags_1,
+       sizeof(asn_DEF_SINR_Range_tags_1)
+               /sizeof(asn_DEF_SINR_Range_tags_1[0]), /* 1 */
+       asn_DEF_SINR_Range_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SINR_Range_tags_1)
+               /sizeof(asn_DEF_SINR_Range_tags_1[0]), /* 1 */
+       { &asn_OER_type_SINR_Range_constr_1, &asn_PER_type_SINR_Range_constr_1, SINR_Range_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SINR-Range.h b/src/codec_utils/RRC/SINR-Range.h
new file mode 100644 (file)
index 0000000..2bf878a
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SINR_Range_H_
+#define        _SINR_Range_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SINR-Range */
+typedef long    SINR_Range_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SINR_Range_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SINR_Range;
+asn_struct_free_f SINR_Range_free;
+asn_struct_print_f SINR_Range_print;
+asn_constr_check_f SINR_Range_constraint;
+ber_type_decoder_f SINR_Range_decode_ber;
+der_type_encoder_f SINR_Range_encode_der;
+xer_type_decoder_f SINR_Range_decode_xer;
+xer_type_encoder_f SINR_Range_encode_xer;
+oer_type_decoder_f SINR_Range_decode_oer;
+oer_type_encoder_f SINR_Range_encode_oer;
+per_type_decoder_f SINR_Range_decode_uper;
+per_type_encoder_f SINR_Range_encode_uper;
+per_type_decoder_f SINR_Range_decode_aper;
+per_type_encoder_f SINR_Range_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SINR_Range_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SINR-RangeEUTRA.c b/src/codec_utils/RRC/SINR-RangeEUTRA.c
new file mode 100644 (file)
index 0000000..e4d4982
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SINR-RangeEUTRA.h"
+
+int
+SINR_RangeEUTRA_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 <= 127)) {
+               /* 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_SINR_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SINR_RangeEUTRA_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SINR_RangeEUTRA_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SINR_RangeEUTRA = {
+       "SINR-RangeEUTRA",
+       "SINR-RangeEUTRA",
+       &asn_OP_NativeInteger,
+       asn_DEF_SINR_RangeEUTRA_tags_1,
+       sizeof(asn_DEF_SINR_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_SINR_RangeEUTRA_tags_1[0]), /* 1 */
+       asn_DEF_SINR_RangeEUTRA_tags_1, /* Same as above */
+       sizeof(asn_DEF_SINR_RangeEUTRA_tags_1)
+               /sizeof(asn_DEF_SINR_RangeEUTRA_tags_1[0]), /* 1 */
+       { &asn_OER_type_SINR_RangeEUTRA_constr_1, &asn_PER_type_SINR_RangeEUTRA_constr_1, SINR_RangeEUTRA_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SINR-RangeEUTRA.h b/src/codec_utils/RRC/SINR-RangeEUTRA.h
new file mode 100644 (file)
index 0000000..65b1ea8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SINR_RangeEUTRA_H_
+#define        _SINR_RangeEUTRA_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SINR-RangeEUTRA */
+typedef long    SINR_RangeEUTRA_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SINR_RangeEUTRA_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SINR_RangeEUTRA;
+asn_struct_free_f SINR_RangeEUTRA_free;
+asn_struct_print_f SINR_RangeEUTRA_print;
+asn_constr_check_f SINR_RangeEUTRA_constraint;
+ber_type_decoder_f SINR_RangeEUTRA_decode_ber;
+der_type_encoder_f SINR_RangeEUTRA_encode_der;
+xer_type_decoder_f SINR_RangeEUTRA_decode_xer;
+xer_type_encoder_f SINR_RangeEUTRA_encode_xer;
+oer_type_decoder_f SINR_RangeEUTRA_decode_oer;
+oer_type_encoder_f SINR_RangeEUTRA_encode_oer;
+per_type_decoder_f SINR_RangeEUTRA_decode_uper;
+per_type_encoder_f SINR_RangeEUTRA_encode_uper;
+per_type_decoder_f SINR_RangeEUTRA_decode_aper;
+per_type_encoder_f SINR_RangeEUTRA_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SINR_RangeEUTRA_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SN-FieldLengthAM.c b/src/codec_utils/RRC/SN-FieldLengthAM.c
new file mode 100644 (file)
index 0000000..b5a75cf
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SN-FieldLengthAM.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SN_FieldLengthAM_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SN_FieldLengthAM_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_SN_FieldLengthAM_value2enum_1[] = {
+       { 0,    6,      "size12" },
+       { 1,    6,      "size18" }
+};
+static const unsigned int asn_MAP_SN_FieldLengthAM_enum2value_1[] = {
+       0,      /* size12(0) */
+       1       /* size18(1) */
+};
+const asn_INTEGER_specifics_t asn_SPC_SN_FieldLengthAM_specs_1 = {
+       asn_MAP_SN_FieldLengthAM_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_SN_FieldLengthAM_enum2value_1,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_SN_FieldLengthAM_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SN_FieldLengthAM = {
+       "SN-FieldLengthAM",
+       "SN-FieldLengthAM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_SN_FieldLengthAM_tags_1,
+       sizeof(asn_DEF_SN_FieldLengthAM_tags_1)
+               /sizeof(asn_DEF_SN_FieldLengthAM_tags_1[0]), /* 1 */
+       asn_DEF_SN_FieldLengthAM_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SN_FieldLengthAM_tags_1)
+               /sizeof(asn_DEF_SN_FieldLengthAM_tags_1[0]), /* 1 */
+       { &asn_OER_type_SN_FieldLengthAM_constr_1, &asn_PER_type_SN_FieldLengthAM_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_SN_FieldLengthAM_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SN-FieldLengthAM.h b/src/codec_utils/RRC/SN-FieldLengthAM.h
new file mode 100644 (file)
index 0000000..7dedc5b
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SN_FieldLengthAM_H_
+#define        _SN_FieldLengthAM_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SN_FieldLengthAM {
+       SN_FieldLengthAM_size12 = 0,
+       SN_FieldLengthAM_size18 = 1
+} e_SN_FieldLengthAM;
+
+/* SN-FieldLengthAM */
+typedef long    SN_FieldLengthAM_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SN_FieldLengthAM_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SN_FieldLengthAM;
+extern const asn_INTEGER_specifics_t asn_SPC_SN_FieldLengthAM_specs_1;
+asn_struct_free_f SN_FieldLengthAM_free;
+asn_struct_print_f SN_FieldLengthAM_print;
+asn_constr_check_f SN_FieldLengthAM_constraint;
+ber_type_decoder_f SN_FieldLengthAM_decode_ber;
+der_type_encoder_f SN_FieldLengthAM_encode_der;
+xer_type_decoder_f SN_FieldLengthAM_decode_xer;
+xer_type_encoder_f SN_FieldLengthAM_encode_xer;
+oer_type_decoder_f SN_FieldLengthAM_decode_oer;
+oer_type_encoder_f SN_FieldLengthAM_encode_oer;
+per_type_decoder_f SN_FieldLengthAM_decode_uper;
+per_type_encoder_f SN_FieldLengthAM_encode_uper;
+per_type_decoder_f SN_FieldLengthAM_decode_aper;
+per_type_encoder_f SN_FieldLengthAM_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SN_FieldLengthAM_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SN-FieldLengthUM.c b/src/codec_utils/RRC/SN-FieldLengthUM.c
new file mode 100644 (file)
index 0000000..074082b
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SN-FieldLengthUM.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SN_FieldLengthUM_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SN_FieldLengthUM_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_SN_FieldLengthUM_value2enum_1[] = {
+       { 0,    5,      "size6" },
+       { 1,    6,      "size12" }
+};
+static const unsigned int asn_MAP_SN_FieldLengthUM_enum2value_1[] = {
+       1,      /* size12(1) */
+       0       /* size6(0) */
+};
+const asn_INTEGER_specifics_t asn_SPC_SN_FieldLengthUM_specs_1 = {
+       asn_MAP_SN_FieldLengthUM_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_SN_FieldLengthUM_enum2value_1,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_SN_FieldLengthUM_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SN_FieldLengthUM = {
+       "SN-FieldLengthUM",
+       "SN-FieldLengthUM",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_SN_FieldLengthUM_tags_1,
+       sizeof(asn_DEF_SN_FieldLengthUM_tags_1)
+               /sizeof(asn_DEF_SN_FieldLengthUM_tags_1[0]), /* 1 */
+       asn_DEF_SN_FieldLengthUM_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SN_FieldLengthUM_tags_1)
+               /sizeof(asn_DEF_SN_FieldLengthUM_tags_1[0]), /* 1 */
+       { &asn_OER_type_SN_FieldLengthUM_constr_1, &asn_PER_type_SN_FieldLengthUM_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_SN_FieldLengthUM_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SN-FieldLengthUM.h b/src/codec_utils/RRC/SN-FieldLengthUM.h
new file mode 100644 (file)
index 0000000..eefe351
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SN_FieldLengthUM_H_
+#define        _SN_FieldLengthUM_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SN_FieldLengthUM {
+       SN_FieldLengthUM_size6  = 0,
+       SN_FieldLengthUM_size12 = 1
+} e_SN_FieldLengthUM;
+
+/* SN-FieldLengthUM */
+typedef long    SN_FieldLengthUM_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SN_FieldLengthUM_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SN_FieldLengthUM;
+extern const asn_INTEGER_specifics_t asn_SPC_SN_FieldLengthUM_specs_1;
+asn_struct_free_f SN_FieldLengthUM_free;
+asn_struct_print_f SN_FieldLengthUM_print;
+asn_constr_check_f SN_FieldLengthUM_constraint;
+ber_type_decoder_f SN_FieldLengthUM_decode_ber;
+der_type_encoder_f SN_FieldLengthUM_encode_der;
+xer_type_decoder_f SN_FieldLengthUM_decode_xer;
+xer_type_encoder_f SN_FieldLengthUM_encode_xer;
+oer_type_decoder_f SN_FieldLengthUM_decode_oer;
+oer_type_encoder_f SN_FieldLengthUM_encode_oer;
+per_type_decoder_f SN_FieldLengthUM_decode_uper;
+per_type_encoder_f SN_FieldLengthUM_encode_uper;
+per_type_decoder_f SN_FieldLengthUM_decode_aper;
+per_type_encoder_f SN_FieldLengthUM_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SN_FieldLengthUM_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SPS-Config.c b/src/codec_utils/RRC/SPS-Config.c
new file mode 100644 (file)
index 0000000..373b342
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SPS-Config.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.
+ */
+static int
+memb_nrofHARQ_Processes_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 <= 8)) {
+               /* 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_periodicity_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicity_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_mcs_Table_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_mcs_Table_constr_21 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nrofHARQ_Processes_constr_19 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofHARQ_Processes_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_periodicity_value2enum_2[] = {
+       { 0,    4,      "ms10" },
+       { 1,    4,      "ms20" },
+       { 2,    4,      "ms32" },
+       { 3,    4,      "ms40" },
+       { 4,    4,      "ms64" },
+       { 5,    4,      "ms80" },
+       { 6,    5,      "ms128" },
+       { 7,    5,      "ms160" },
+       { 8,    5,      "ms320" },
+       { 9,    5,      "ms640" },
+       { 10,   6,      "spare6" },
+       { 11,   6,      "spare5" },
+       { 12,   6,      "spare4" },
+       { 13,   6,      "spare3" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_periodicity_enum2value_2[] = {
+       0,      /* ms10(0) */
+       6,      /* ms128(6) */
+       7,      /* ms160(7) */
+       1,      /* ms20(1) */
+       2,      /* ms32(2) */
+       8,      /* ms320(8) */
+       3,      /* ms40(3) */
+       4,      /* ms64(4) */
+       9,      /* ms640(9) */
+       5,      /* ms80(5) */
+       15,     /* spare1(15) */
+       14,     /* spare2(14) */
+       13,     /* spare3(13) */
+       12,     /* spare4(12) */
+       11,     /* spare5(11) */
+       10      /* spare6(10) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_periodicity_specs_2 = {
+       asn_MAP_periodicity_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_periodicity_enum2value_2,       /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_periodicity_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_periodicity_2 = {
+       "periodicity",
+       "periodicity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_periodicity_tags_2,
+       sizeof(asn_DEF_periodicity_tags_2)
+               /sizeof(asn_DEF_periodicity_tags_2[0]) - 1, /* 1 */
+       asn_DEF_periodicity_tags_2,     /* Same as above */
+       sizeof(asn_DEF_periodicity_tags_2)
+               /sizeof(asn_DEF_periodicity_tags_2[0]), /* 2 */
+       { &asn_OER_type_periodicity_constr_2, &asn_PER_type_periodicity_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_periodicity_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_mcs_Table_value2enum_21[] = {
+       { 0,    10,     "qam64LowSE" }
+};
+static const unsigned int asn_MAP_mcs_Table_enum2value_21[] = {
+       0       /* qam64LowSE(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_mcs_Table_specs_21 = {
+       asn_MAP_mcs_Table_value2enum_21,        /* "tag" => N; sorted by tag */
+       asn_MAP_mcs_Table_enum2value_21,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_mcs_Table_tags_21[] = {
+       (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_mcs_Table_21 = {
+       "mcs-Table",
+       "mcs-Table",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_mcs_Table_tags_21,
+       sizeof(asn_DEF_mcs_Table_tags_21)
+               /sizeof(asn_DEF_mcs_Table_tags_21[0]) - 1, /* 1 */
+       asn_DEF_mcs_Table_tags_21,      /* Same as above */
+       sizeof(asn_DEF_mcs_Table_tags_21)
+               /sizeof(asn_DEF_mcs_Table_tags_21[0]), /* 2 */
+       { &asn_OER_type_mcs_Table_constr_21, &asn_PER_type_mcs_Table_constr_21, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_mcs_Table_specs_21     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SPS_Config_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SPS_Config, periodicity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_periodicity_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SPS_Config, nrofHARQ_Processes),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofHARQ_Processes_constr_19, &asn_PER_memb_nrofHARQ_Processes_constr_19,  memb_nrofHARQ_Processes_constraint_1 },
+               0, 0, /* No default value */
+               "nrofHARQ-Processes"
+               },
+       { ATF_POINTER, 2, offsetof(struct SPS_Config, n1PUCCH_AN),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n1PUCCH-AN"
+               },
+       { ATF_POINTER, 1, offsetof(struct SPS_Config, mcs_Table),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_mcs_Table_21,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mcs-Table"
+               },
+};
+static const int asn_MAP_SPS_Config_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SPS_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SPS_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodicity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofHARQ-Processes */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* n1PUCCH-AN */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* mcs-Table */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SPS_Config_specs_1 = {
+       sizeof(struct SPS_Config),
+       offsetof(struct SPS_Config, _asn_ctx),
+       asn_MAP_SPS_Config_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SPS_Config_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SPS_Config = {
+       "SPS-Config",
+       "SPS-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SPS_Config_tags_1,
+       sizeof(asn_DEF_SPS_Config_tags_1)
+               /sizeof(asn_DEF_SPS_Config_tags_1[0]), /* 1 */
+       asn_DEF_SPS_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SPS_Config_tags_1)
+               /sizeof(asn_DEF_SPS_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SPS_Config_1,
+       4,      /* Elements count */
+       &asn_SPC_SPS_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SPS-Config.h b/src/codec_utils/RRC/SPS-Config.h
new file mode 100644 (file)
index 0000000..8c84a1c
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SPS_Config_H_
+#define        _SPS_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include "PUCCH-ResourceId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SPS_Config__periodicity {
+       SPS_Config__periodicity_ms10    = 0,
+       SPS_Config__periodicity_ms20    = 1,
+       SPS_Config__periodicity_ms32    = 2,
+       SPS_Config__periodicity_ms40    = 3,
+       SPS_Config__periodicity_ms64    = 4,
+       SPS_Config__periodicity_ms80    = 5,
+       SPS_Config__periodicity_ms128   = 6,
+       SPS_Config__periodicity_ms160   = 7,
+       SPS_Config__periodicity_ms320   = 8,
+       SPS_Config__periodicity_ms640   = 9,
+       SPS_Config__periodicity_spare6  = 10,
+       SPS_Config__periodicity_spare5  = 11,
+       SPS_Config__periodicity_spare4  = 12,
+       SPS_Config__periodicity_spare3  = 13,
+       SPS_Config__periodicity_spare2  = 14,
+       SPS_Config__periodicity_spare1  = 15
+} e_SPS_Config__periodicity;
+typedef enum SPS_Config__mcs_Table {
+       SPS_Config__mcs_Table_qam64LowSE        = 0
+} e_SPS_Config__mcs_Table;
+
+/* SPS-Config */
+typedef struct SPS_Config {
+       long     periodicity;
+       long     nrofHARQ_Processes;
+       PUCCH_ResourceId_t      *n1PUCCH_AN;    /* OPTIONAL */
+       long    *mcs_Table;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SPS_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_periodicity_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_mcs_Table_21;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SPS_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_SPS_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_SPS_Config_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SPS_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRB-Identity.c b/src/codec_utils/RRC/SRB-Identity.c
new file mode 100644 (file)
index 0000000..787f27c
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRB-Identity.h"
+
+int
+SRB_Identity_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SRB_Identity_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SRB_Identity_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (1..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SRB_Identity_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SRB_Identity = {
+       "SRB-Identity",
+       "SRB-Identity",
+       &asn_OP_NativeInteger,
+       asn_DEF_SRB_Identity_tags_1,
+       sizeof(asn_DEF_SRB_Identity_tags_1)
+               /sizeof(asn_DEF_SRB_Identity_tags_1[0]), /* 1 */
+       asn_DEF_SRB_Identity_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRB_Identity_tags_1)
+               /sizeof(asn_DEF_SRB_Identity_tags_1[0]), /* 1 */
+       { &asn_OER_type_SRB_Identity_constr_1, &asn_PER_type_SRB_Identity_constr_1, SRB_Identity_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SRB-Identity.h b/src/codec_utils/RRC/SRB-Identity.h
new file mode 100644 (file)
index 0000000..9bfb6fb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRB_Identity_H_
+#define        _SRB_Identity_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRB-Identity */
+typedef long    SRB_Identity_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SRB_Identity_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SRB_Identity;
+asn_struct_free_f SRB_Identity_free;
+asn_struct_print_f SRB_Identity_print;
+asn_constr_check_f SRB_Identity_constraint;
+ber_type_decoder_f SRB_Identity_decode_ber;
+der_type_encoder_f SRB_Identity_encode_der;
+xer_type_decoder_f SRB_Identity_decode_xer;
+xer_type_encoder_f SRB_Identity_encode_xer;
+oer_type_decoder_f SRB_Identity_decode_oer;
+oer_type_encoder_f SRB_Identity_encode_oer;
+per_type_decoder_f SRB_Identity_decode_uper;
+per_type_encoder_f SRB_Identity_encode_uper;
+per_type_decoder_f SRB_Identity_decode_aper;
+per_type_encoder_f SRB_Identity_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRB_Identity_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRB-ToAddMod.c b/src/codec_utils/RRC/SRB-ToAddMod.c
new file mode 100644 (file)
index 0000000..219035c
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRB-ToAddMod.h"
+
+#include "PDCP-Config.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.
+ */
+static asn_oer_constraints_t asn_OER_type_reestablishPDCP_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_reestablishPDCP_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_discardOnPDCP_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_discardOnPDCP_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_reestablishPDCP_value2enum_3[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_reestablishPDCP_enum2value_3[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_reestablishPDCP_specs_3 = {
+       asn_MAP_reestablishPDCP_value2enum_3,   /* "tag" => N; sorted by tag */
+       asn_MAP_reestablishPDCP_enum2value_3,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_reestablishPDCP_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_reestablishPDCP_3 = {
+       "reestablishPDCP",
+       "reestablishPDCP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_reestablishPDCP_tags_3,
+       sizeof(asn_DEF_reestablishPDCP_tags_3)
+               /sizeof(asn_DEF_reestablishPDCP_tags_3[0]) - 1, /* 1 */
+       asn_DEF_reestablishPDCP_tags_3, /* Same as above */
+       sizeof(asn_DEF_reestablishPDCP_tags_3)
+               /sizeof(asn_DEF_reestablishPDCP_tags_3[0]), /* 2 */
+       { &asn_OER_type_reestablishPDCP_constr_3, &asn_PER_type_reestablishPDCP_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_reestablishPDCP_specs_3        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_discardOnPDCP_value2enum_5[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_discardOnPDCP_enum2value_5[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_discardOnPDCP_specs_5 = {
+       asn_MAP_discardOnPDCP_value2enum_5,     /* "tag" => N; sorted by tag */
+       asn_MAP_discardOnPDCP_enum2value_5,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_discardOnPDCP_tags_5[] = {
+       (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_discardOnPDCP_5 = {
+       "discardOnPDCP",
+       "discardOnPDCP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_discardOnPDCP_tags_5,
+       sizeof(asn_DEF_discardOnPDCP_tags_5)
+               /sizeof(asn_DEF_discardOnPDCP_tags_5[0]) - 1, /* 1 */
+       asn_DEF_discardOnPDCP_tags_5,   /* Same as above */
+       sizeof(asn_DEF_discardOnPDCP_tags_5)
+               /sizeof(asn_DEF_discardOnPDCP_tags_5[0]), /* 2 */
+       { &asn_OER_type_discardOnPDCP_constr_5, &asn_PER_type_discardOnPDCP_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_discardOnPDCP_specs_5  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRB_ToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRB_ToAddMod, srb_Identity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRB_Identity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srb-Identity"
+               },
+       { ATF_POINTER, 3, offsetof(struct SRB_ToAddMod, reestablishPDCP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_reestablishPDCP_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reestablishPDCP"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRB_ToAddMod, discardOnPDCP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_discardOnPDCP_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "discardOnPDCP"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRB_ToAddMod, pdcp_Config),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCP_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-Config"
+               },
+};
+static const int asn_MAP_SRB_ToAddMod_oms_1[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SRB_ToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRB_ToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srb-Identity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reestablishPDCP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* discardOnPDCP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pdcp-Config */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRB_ToAddMod_specs_1 = {
+       sizeof(struct SRB_ToAddMod),
+       offsetof(struct SRB_ToAddMod, _asn_ctx),
+       asn_MAP_SRB_ToAddMod_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SRB_ToAddMod_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRB_ToAddMod = {
+       "SRB-ToAddMod",
+       "SRB-ToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRB_ToAddMod_tags_1,
+       sizeof(asn_DEF_SRB_ToAddMod_tags_1)
+               /sizeof(asn_DEF_SRB_ToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_SRB_ToAddMod_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRB_ToAddMod_tags_1)
+               /sizeof(asn_DEF_SRB_ToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRB_ToAddMod_1,
+       4,      /* Elements count */
+       &asn_SPC_SRB_ToAddMod_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRB-ToAddMod.h b/src/codec_utils/RRC/SRB-ToAddMod.h
new file mode 100644 (file)
index 0000000..f3ada87
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRB_ToAddMod_H_
+#define        _SRB_ToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SRB-Identity.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRB_ToAddMod__reestablishPDCP {
+       SRB_ToAddMod__reestablishPDCP_true      = 0
+} e_SRB_ToAddMod__reestablishPDCP;
+typedef enum SRB_ToAddMod__discardOnPDCP {
+       SRB_ToAddMod__discardOnPDCP_true        = 0
+} e_SRB_ToAddMod__discardOnPDCP;
+
+/* Forward declarations */
+struct PDCP_Config;
+
+/* SRB-ToAddMod */
+typedef struct SRB_ToAddMod {
+       SRB_Identity_t   srb_Identity;
+       long    *reestablishPDCP;       /* OPTIONAL */
+       long    *discardOnPDCP; /* OPTIONAL */
+       struct PDCP_Config      *pdcp_Config;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRB_ToAddMod_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_reestablishPDCP_3;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_discardOnPDCP_5;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRB_ToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRB_ToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRB_ToAddMod_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRB_ToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRB-ToAddModList.c b/src/codec_utils/RRC/SRB-ToAddModList.c
new file mode 100644 (file)
index 0000000..234d2e2
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRB-ToAddModList.h"
+
+#include "SRB-ToAddMod.h"
+static asn_oer_constraints_t asn_OER_type_SRB_ToAddModList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+asn_per_constraints_t asn_PER_type_SRB_ToAddModList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SRB_ToAddModList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRB_ToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SRB_ToAddModList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_SRB_ToAddModList_specs_1 = {
+       sizeof(struct SRB_ToAddModList),
+       offsetof(struct SRB_ToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_SRB_ToAddModList = {
+       "SRB-ToAddModList",
+       "SRB-ToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_SRB_ToAddModList_tags_1,
+       sizeof(asn_DEF_SRB_ToAddModList_tags_1)
+               /sizeof(asn_DEF_SRB_ToAddModList_tags_1[0]), /* 1 */
+       asn_DEF_SRB_ToAddModList_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SRB_ToAddModList_tags_1)
+               /sizeof(asn_DEF_SRB_ToAddModList_tags_1[0]), /* 1 */
+       { &asn_OER_type_SRB_ToAddModList_constr_1, &asn_PER_type_SRB_ToAddModList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_SRB_ToAddModList_1,
+       1,      /* Single element */
+       &asn_SPC_SRB_ToAddModList_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRB-ToAddModList.h b/src/codec_utils/RRC/SRB-ToAddModList.h
new file mode 100644 (file)
index 0000000..9f4f0ac
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRB_ToAddModList_H_
+#define        _SRB_ToAddModList_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 SRB_ToAddMod;
+
+/* SRB-ToAddModList */
+typedef struct SRB_ToAddModList {
+       A_SEQUENCE_OF(struct SRB_ToAddMod) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRB_ToAddModList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRB_ToAddModList;
+extern asn_SET_OF_specifics_t asn_SPC_SRB_ToAddModList_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRB_ToAddModList_1[1];
+extern asn_per_constraints_t asn_PER_type_SRB_ToAddModList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRB_ToAddModList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRI-PUSCH-PowerControl.c b/src/codec_utils/RRC/SRI-PUSCH-PowerControl.c
new file mode 100644 (file)
index 0000000..8abc4e0
--- /dev/null
@@ -0,0 +1,129 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRI-PUSCH-PowerControl.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_sri_PUSCH_ClosedLoopIndex_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sri_PUSCH_ClosedLoopIndex_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sri_PUSCH_ClosedLoopIndex_value2enum_5[] = {
+       { 0,    2,      "i0" },
+       { 1,    2,      "i1" }
+};
+static const unsigned int asn_MAP_sri_PUSCH_ClosedLoopIndex_enum2value_5[] = {
+       0,      /* i0(0) */
+       1       /* i1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sri_PUSCH_ClosedLoopIndex_specs_5 = {
+       asn_MAP_sri_PUSCH_ClosedLoopIndex_value2enum_5, /* "tag" => N; sorted by tag */
+       asn_MAP_sri_PUSCH_ClosedLoopIndex_enum2value_5, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5[] = {
+       (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_sri_PUSCH_ClosedLoopIndex_5 = {
+       "sri-PUSCH-ClosedLoopIndex",
+       "sri-PUSCH-ClosedLoopIndex",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5,
+       sizeof(asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5)
+               /sizeof(asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5[0]) - 1, /* 1 */
+       asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5,       /* Same as above */
+       sizeof(asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5)
+               /sizeof(asn_DEF_sri_PUSCH_ClosedLoopIndex_tags_5[0]), /* 2 */
+       { &asn_OER_type_sri_PUSCH_ClosedLoopIndex_constr_5, &asn_PER_type_sri_PUSCH_ClosedLoopIndex_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sri_PUSCH_ClosedLoopIndex_specs_5      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRI_PUSCH_PowerControl_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRI_PUSCH_PowerControl, sri_PUSCH_PowerControlId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRI_PUSCH_PowerControlId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sri-PUSCH-PowerControlId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRI_PUSCH_PowerControl, sri_PUSCH_PathlossReferenceRS_Id),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_PathlossReferenceRS_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sri-PUSCH-PathlossReferenceRS-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRI_PUSCH_PowerControl, sri_P0_PUSCH_AlphaSetId),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_P0_PUSCH_AlphaSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sri-P0-PUSCH-AlphaSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRI_PUSCH_PowerControl, sri_PUSCH_ClosedLoopIndex),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sri_PUSCH_ClosedLoopIndex_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sri-PUSCH-ClosedLoopIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SRI_PUSCH_PowerControl_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRI_PUSCH_PowerControl_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sri-PUSCH-PowerControlId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sri-PUSCH-PathlossReferenceRS-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sri-P0-PUSCH-AlphaSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* sri-PUSCH-ClosedLoopIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRI_PUSCH_PowerControl_specs_1 = {
+       sizeof(struct SRI_PUSCH_PowerControl),
+       offsetof(struct SRI_PUSCH_PowerControl, _asn_ctx),
+       asn_MAP_SRI_PUSCH_PowerControl_tag2el_1,
+       4,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRI_PUSCH_PowerControl = {
+       "SRI-PUSCH-PowerControl",
+       "SRI-PUSCH-PowerControl",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRI_PUSCH_PowerControl_tags_1,
+       sizeof(asn_DEF_SRI_PUSCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_SRI_PUSCH_PowerControl_tags_1[0]), /* 1 */
+       asn_DEF_SRI_PUSCH_PowerControl_tags_1,  /* Same as above */
+       sizeof(asn_DEF_SRI_PUSCH_PowerControl_tags_1)
+               /sizeof(asn_DEF_SRI_PUSCH_PowerControl_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRI_PUSCH_PowerControl_1,
+       4,      /* Elements count */
+       &asn_SPC_SRI_PUSCH_PowerControl_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRI-PUSCH-PowerControl.h b/src/codec_utils/RRC/SRI-PUSCH-PowerControl.h
new file mode 100644 (file)
index 0000000..713f860
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRI_PUSCH_PowerControl_H_
+#define        _SRI_PUSCH_PowerControl_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SRI-PUSCH-PowerControlId.h"
+#include "PUSCH-PathlossReferenceRS-Id.h"
+#include "P0-PUSCH-AlphaSetId.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRI_PUSCH_PowerControl__sri_PUSCH_ClosedLoopIndex {
+       SRI_PUSCH_PowerControl__sri_PUSCH_ClosedLoopIndex_i0    = 0,
+       SRI_PUSCH_PowerControl__sri_PUSCH_ClosedLoopIndex_i1    = 1
+} e_SRI_PUSCH_PowerControl__sri_PUSCH_ClosedLoopIndex;
+
+/* SRI-PUSCH-PowerControl */
+typedef struct SRI_PUSCH_PowerControl {
+       SRI_PUSCH_PowerControlId_t       sri_PUSCH_PowerControlId;
+       PUSCH_PathlossReferenceRS_Id_t   sri_PUSCH_PathlossReferenceRS_Id;
+       P0_PUSCH_AlphaSetId_t    sri_P0_PUSCH_AlphaSetId;
+       long     sri_PUSCH_ClosedLoopIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRI_PUSCH_PowerControl_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_sri_PUSCH_ClosedLoopIndex_5;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRI_PUSCH_PowerControl;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRI_PUSCH_PowerControl_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRI_PUSCH_PowerControl_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRI_PUSCH_PowerControl_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRI-PUSCH-PowerControlId.c b/src/codec_utils/RRC/SRI-PUSCH-PowerControlId.c
new file mode 100644 (file)
index 0000000..9cc8439
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRI-PUSCH-PowerControlId.h"
+
+int
+SRI_PUSCH_PowerControlId_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 <= 15)) {
+               /* 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_SRI_PUSCH_PowerControlId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SRI_PUSCH_PowerControlId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SRI_PUSCH_PowerControlId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SRI_PUSCH_PowerControlId = {
+       "SRI-PUSCH-PowerControlId",
+       "SRI-PUSCH-PowerControlId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SRI_PUSCH_PowerControlId_tags_1,
+       sizeof(asn_DEF_SRI_PUSCH_PowerControlId_tags_1)
+               /sizeof(asn_DEF_SRI_PUSCH_PowerControlId_tags_1[0]), /* 1 */
+       asn_DEF_SRI_PUSCH_PowerControlId_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SRI_PUSCH_PowerControlId_tags_1)
+               /sizeof(asn_DEF_SRI_PUSCH_PowerControlId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SRI_PUSCH_PowerControlId_constr_1, &asn_PER_type_SRI_PUSCH_PowerControlId_constr_1, SRI_PUSCH_PowerControlId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SRI-PUSCH-PowerControlId.h b/src/codec_utils/RRC/SRI-PUSCH-PowerControlId.h
new file mode 100644 (file)
index 0000000..01ea216
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRI_PUSCH_PowerControlId_H_
+#define        _SRI_PUSCH_PowerControlId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRI-PUSCH-PowerControlId */
+typedef long    SRI_PUSCH_PowerControlId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SRI_PUSCH_PowerControlId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SRI_PUSCH_PowerControlId;
+asn_struct_free_f SRI_PUSCH_PowerControlId_free;
+asn_struct_print_f SRI_PUSCH_PowerControlId_print;
+asn_constr_check_f SRI_PUSCH_PowerControlId_constraint;
+ber_type_decoder_f SRI_PUSCH_PowerControlId_decode_ber;
+der_type_encoder_f SRI_PUSCH_PowerControlId_encode_der;
+xer_type_decoder_f SRI_PUSCH_PowerControlId_decode_xer;
+xer_type_encoder_f SRI_PUSCH_PowerControlId_encode_xer;
+oer_type_decoder_f SRI_PUSCH_PowerControlId_decode_oer;
+oer_type_encoder_f SRI_PUSCH_PowerControlId_encode_oer;
+per_type_decoder_f SRI_PUSCH_PowerControlId_decode_uper;
+per_type_encoder_f SRI_PUSCH_PowerControlId_encode_uper;
+per_type_decoder_f SRI_PUSCH_PowerControlId_decode_aper;
+per_type_encoder_f SRI_PUSCH_PowerControlId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRI_PUSCH_PowerControlId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-CC-SetIndex.c b/src/codec_utils/RRC/SRS-CC-SetIndex.c
new file mode 100644 (file)
index 0000000..38f2acb
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-CC-SetIndex.h"
+
+static int
+memb_cc_SetIndex_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 >= 0 && value <= 3)) {
+               /* 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_cc_IndexInOneCC_Set_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 >= 0 && value <= 7)) {
+               /* 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_cc_SetIndex_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cc_SetIndex_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cc_IndexInOneCC_Set_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cc_IndexInOneCC_Set_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SRS_CC_SetIndex_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SRS_CC_SetIndex, cc_SetIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cc_SetIndex_constr_2, &asn_PER_memb_cc_SetIndex_constr_2,  memb_cc_SetIndex_constraint_1 },
+               0, 0, /* No default value */
+               "cc-SetIndex"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_CC_SetIndex, cc_IndexInOneCC_Set),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cc_IndexInOneCC_Set_constr_3, &asn_PER_memb_cc_IndexInOneCC_Set_constr_3,  memb_cc_IndexInOneCC_Set_constraint_1 },
+               0, 0, /* No default value */
+               "cc-IndexInOneCC-Set"
+               },
+};
+static const int asn_MAP_SRS_CC_SetIndex_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SRS_CC_SetIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_CC_SetIndex_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cc-SetIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cc-IndexInOneCC-Set */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_CC_SetIndex_specs_1 = {
+       sizeof(struct SRS_CC_SetIndex),
+       offsetof(struct SRS_CC_SetIndex, _asn_ctx),
+       asn_MAP_SRS_CC_SetIndex_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SRS_CC_SetIndex_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_CC_SetIndex = {
+       "SRS-CC-SetIndex",
+       "SRS-CC-SetIndex",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_CC_SetIndex_tags_1,
+       sizeof(asn_DEF_SRS_CC_SetIndex_tags_1)
+               /sizeof(asn_DEF_SRS_CC_SetIndex_tags_1[0]), /* 1 */
+       asn_DEF_SRS_CC_SetIndex_tags_1, /* Same as above */
+       sizeof(asn_DEF_SRS_CC_SetIndex_tags_1)
+               /sizeof(asn_DEF_SRS_CC_SetIndex_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_CC_SetIndex_1,
+       2,      /* Elements count */
+       &asn_SPC_SRS_CC_SetIndex_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-CC-SetIndex.h b/src/codec_utils/RRC/SRS-CC-SetIndex.h
new file mode 100644 (file)
index 0000000..53865ca
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_CC_SetIndex_H_
+#define        _SRS_CC_SetIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRS-CC-SetIndex */
+typedef struct SRS_CC_SetIndex {
+       long    *cc_SetIndex;   /* OPTIONAL */
+       long    *cc_IndexInOneCC_Set;   /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_CC_SetIndex_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_CC_SetIndex;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_CC_SetIndex_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_CC_SetIndex_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_CC_SetIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-CarrierSwitching.c b/src/codec_utils/RRC/SRS-CarrierSwitching.c
new file mode 100644 (file)
index 0000000..798379a
--- /dev/null
@@ -0,0 +1,380 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-CarrierSwitching.h"
+
+#include "SRS-TPC-PDCCH-Config.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_typeA_constraint_6(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 <= 32)) {
+               /* 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_srs_SwitchFromServCellIndex_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 >= 0 && value <= 31)) {
+               /* 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_monitoringCells_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 <= 32)) {
+               /* 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_srs_SwitchFromCarrier_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srs_SwitchFromCarrier_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_typeA_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_typeA_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_typeA_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_typeA_constr_7 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_srs_TPC_PDCCH_Group_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srs_TPC_PDCCH_Group_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_monitoringCells_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_monitoringCells_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_SwitchFromServCellIndex_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_srs_SwitchFromServCellIndex_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_monitoringCells_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_monitoringCells_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_srs_SwitchFromCarrier_value2enum_3[] = {
+       { 0,    3,      "sUL" },
+       { 1,    3,      "nUL" }
+};
+static const unsigned int asn_MAP_srs_SwitchFromCarrier_enum2value_3[] = {
+       1,      /* nUL(1) */
+       0       /* sUL(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_srs_SwitchFromCarrier_specs_3 = {
+       asn_MAP_srs_SwitchFromCarrier_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_srs_SwitchFromCarrier_enum2value_3,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_srs_SwitchFromCarrier_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_srs_SwitchFromCarrier_3 = {
+       "srs-SwitchFromCarrier",
+       "srs-SwitchFromCarrier",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_srs_SwitchFromCarrier_tags_3,
+       sizeof(asn_DEF_srs_SwitchFromCarrier_tags_3)
+               /sizeof(asn_DEF_srs_SwitchFromCarrier_tags_3[0]) - 1, /* 1 */
+       asn_DEF_srs_SwitchFromCarrier_tags_3,   /* Same as above */
+       sizeof(asn_DEF_srs_SwitchFromCarrier_tags_3)
+               /sizeof(asn_DEF_srs_SwitchFromCarrier_tags_3[0]), /* 2 */
+       { &asn_OER_type_srs_SwitchFromCarrier_constr_3, &asn_PER_type_srs_SwitchFromCarrier_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_srs_SwitchFromCarrier_specs_3  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_typeA_7[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRS_TPC_PDCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_typeA_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_typeA_specs_7 = {
+       sizeof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group__typeA),
+       offsetof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group__typeA, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_typeA_7 = {
+       "typeA",
+       "typeA",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_typeA_tags_7,
+       sizeof(asn_DEF_typeA_tags_7)
+               /sizeof(asn_DEF_typeA_tags_7[0]) - 1, /* 1 */
+       asn_DEF_typeA_tags_7,   /* Same as above */
+       sizeof(asn_DEF_typeA_tags_7)
+               /sizeof(asn_DEF_typeA_tags_7[0]), /* 2 */
+       { &asn_OER_type_typeA_constr_7, &asn_PER_type_typeA_constr_7, SEQUENCE_OF_constraint },
+       asn_MBR_typeA_7,
+       1,      /* Single element */
+       &asn_SPC_typeA_specs_7  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_srs_TPC_PDCCH_Group_6[] = {
+       { ATF_POINTER, 0, offsetof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group, choice.typeA),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_typeA_7,
+               0,
+               { &asn_OER_memb_typeA_constr_7, &asn_PER_memb_typeA_constr_7,  memb_typeA_constraint_6 },
+               0, 0, /* No default value */
+               "typeA"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group, choice.typeB),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_TPC_PDCCH_Config,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "typeB"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_srs_TPC_PDCCH_Group_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* typeA */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* typeB */
+};
+static asn_CHOICE_specifics_t asn_SPC_srs_TPC_PDCCH_Group_specs_6 = {
+       sizeof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group),
+       offsetof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group, _asn_ctx),
+       offsetof(struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group, present),
+       sizeof(((struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group *)0)->present),
+       asn_MAP_srs_TPC_PDCCH_Group_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_TPC_PDCCH_Group_6 = {
+       "srs-TPC-PDCCH-Group",
+       "srs-TPC-PDCCH-Group",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_srs_TPC_PDCCH_Group_constr_6, &asn_PER_type_srs_TPC_PDCCH_Group_constr_6, CHOICE_constraint },
+       asn_MBR_srs_TPC_PDCCH_Group_6,
+       2,      /* Elements count */
+       &asn_SPC_srs_TPC_PDCCH_Group_specs_6    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_monitoringCells_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_monitoringCells_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_monitoringCells_specs_10 = {
+       sizeof(struct SRS_CarrierSwitching__monitoringCells),
+       offsetof(struct SRS_CarrierSwitching__monitoringCells, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_monitoringCells_10 = {
+       "monitoringCells",
+       "monitoringCells",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_monitoringCells_tags_10,
+       sizeof(asn_DEF_monitoringCells_tags_10)
+               /sizeof(asn_DEF_monitoringCells_tags_10[0]) - 1, /* 1 */
+       asn_DEF_monitoringCells_tags_10,        /* Same as above */
+       sizeof(asn_DEF_monitoringCells_tags_10)
+               /sizeof(asn_DEF_monitoringCells_tags_10[0]), /* 2 */
+       { &asn_OER_type_monitoringCells_constr_10, &asn_PER_type_monitoringCells_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_monitoringCells_10,
+       1,      /* Single element */
+       &asn_SPC_monitoringCells_specs_10       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_CarrierSwitching_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_CarrierSwitching, srs_SwitchFromServCellIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_srs_SwitchFromServCellIndex_constr_2, &asn_PER_memb_srs_SwitchFromServCellIndex_constr_2,  memb_srs_SwitchFromServCellIndex_constraint_1 },
+               0, 0, /* No default value */
+               "srs-SwitchFromServCellIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_CarrierSwitching, srs_SwitchFromCarrier),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_srs_SwitchFromCarrier_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-SwitchFromCarrier"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRS_CarrierSwitching, srs_TPC_PDCCH_Group),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_srs_TPC_PDCCH_Group_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-TPC-PDCCH-Group"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_CarrierSwitching, monitoringCells),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_monitoringCells_10,
+               0,
+               { &asn_OER_memb_monitoringCells_constr_10, &asn_PER_memb_monitoringCells_constr_10,  memb_monitoringCells_constraint_1 },
+               0, 0, /* No default value */
+               "monitoringCells"
+               },
+};
+static const int asn_MAP_SRS_CarrierSwitching_oms_1[] = { 0, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SRS_CarrierSwitching_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_CarrierSwitching_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srs-SwitchFromServCellIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srs-SwitchFromCarrier */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* srs-TPC-PDCCH-Group */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* monitoringCells */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_CarrierSwitching_specs_1 = {
+       sizeof(struct SRS_CarrierSwitching),
+       offsetof(struct SRS_CarrierSwitching, _asn_ctx),
+       asn_MAP_SRS_CarrierSwitching_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SRS_CarrierSwitching_oms_1,     /* Optional members */
+       3, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_CarrierSwitching = {
+       "SRS-CarrierSwitching",
+       "SRS-CarrierSwitching",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_CarrierSwitching_tags_1,
+       sizeof(asn_DEF_SRS_CarrierSwitching_tags_1)
+               /sizeof(asn_DEF_SRS_CarrierSwitching_tags_1[0]), /* 1 */
+       asn_DEF_SRS_CarrierSwitching_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRS_CarrierSwitching_tags_1)
+               /sizeof(asn_DEF_SRS_CarrierSwitching_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_CarrierSwitching_1,
+       4,      /* Elements count */
+       &asn_SPC_SRS_CarrierSwitching_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-CarrierSwitching.h b/src/codec_utils/RRC/SRS-CarrierSwitching.h
new file mode 100644 (file)
index 0000000..5a12da9
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_CarrierSwitching_H_
+#define        _SRS_CarrierSwitching_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+#include "ServCellIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_CarrierSwitching__srs_SwitchFromCarrier {
+       SRS_CarrierSwitching__srs_SwitchFromCarrier_sUL = 0,
+       SRS_CarrierSwitching__srs_SwitchFromCarrier_nUL = 1
+} e_SRS_CarrierSwitching__srs_SwitchFromCarrier;
+typedef enum SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR {
+       SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_NOTHING,   /* No components present */
+       SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeA,
+       SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR_typeB
+} SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR;
+
+/* Forward declarations */
+struct SRS_TPC_PDCCH_Config;
+
+/* SRS-CarrierSwitching */
+typedef struct SRS_CarrierSwitching {
+       long    *srs_SwitchFromServCellIndex;   /* OPTIONAL */
+       long     srs_SwitchFromCarrier;
+       struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group {
+               SRS_CarrierSwitching__srs_TPC_PDCCH_Group_PR present;
+               union SRS_CarrierSwitching__srs_TPC_PDCCH_Group_u {
+                       struct SRS_CarrierSwitching__srs_TPC_PDCCH_Group__typeA {
+                               A_SEQUENCE_OF(struct SRS_TPC_PDCCH_Config) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *typeA;
+                       struct SRS_TPC_PDCCH_Config     *typeB;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_TPC_PDCCH_Group;
+       struct SRS_CarrierSwitching__monitoringCells {
+               A_SEQUENCE_OF(ServCellIndex_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *monitoringCells;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_CarrierSwitching_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_srs_SwitchFromCarrier_3;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_CarrierSwitching;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_CarrierSwitching_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_CarrierSwitching_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_CarrierSwitching_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-Config.c b/src/codec_utils/RRC/SRS-Config.c
new file mode 100644 (file)
index 0000000..e1007e5
--- /dev/null
@@ -0,0 +1,457 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-Config.h"
+
+#include "SRS-ResourceSet.h"
+#include "SRS-Resource.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_srs_ResourceSetToReleaseList_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 <= 16)) {
+               /* 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_srs_ResourceSetToAddModList_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 <= 16)) {
+               /* 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_srs_ResourceToReleaseList_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 <= 64)) {
+               /* 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_srs_ResourceToAddModList_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 <= 64)) {
+               /* 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_srs_ResourceSetToReleaseList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_srs_ResourceSetToReleaseList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_srs_ResourceSetToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_srs_ResourceSetToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_srs_ResourceToReleaseList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_srs_ResourceToReleaseList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_srs_ResourceToAddModList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_srs_ResourceToAddModList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_tpc_Accumulation_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_tpc_Accumulation_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_ResourceSetToReleaseList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceSetToReleaseList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_ResourceSetToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceSetToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_ResourceToReleaseList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceToReleaseList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_ResourceToAddModList_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceToAddModList_constr_8 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srs_ResourceSetToReleaseList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SRS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_ResourceSetToReleaseList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_ResourceSetToReleaseList_specs_2 = {
+       sizeof(struct SRS_Config__srs_ResourceSetToReleaseList),
+       offsetof(struct SRS_Config__srs_ResourceSetToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_ResourceSetToReleaseList_2 = {
+       "srs-ResourceSetToReleaseList",
+       "srs-ResourceSetToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_ResourceSetToReleaseList_tags_2,
+       sizeof(asn_DEF_srs_ResourceSetToReleaseList_tags_2)
+               /sizeof(asn_DEF_srs_ResourceSetToReleaseList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_srs_ResourceSetToReleaseList_tags_2,    /* Same as above */
+       sizeof(asn_DEF_srs_ResourceSetToReleaseList_tags_2)
+               /sizeof(asn_DEF_srs_ResourceSetToReleaseList_tags_2[0]), /* 2 */
+       { &asn_OER_type_srs_ResourceSetToReleaseList_constr_2, &asn_PER_type_srs_ResourceSetToReleaseList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_srs_ResourceSetToReleaseList_2,
+       1,      /* Single element */
+       &asn_SPC_srs_ResourceSetToReleaseList_specs_2   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_srs_ResourceSetToAddModList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRS_ResourceSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_ResourceSetToAddModList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_ResourceSetToAddModList_specs_4 = {
+       sizeof(struct SRS_Config__srs_ResourceSetToAddModList),
+       offsetof(struct SRS_Config__srs_ResourceSetToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_ResourceSetToAddModList_4 = {
+       "srs-ResourceSetToAddModList",
+       "srs-ResourceSetToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_ResourceSetToAddModList_tags_4,
+       sizeof(asn_DEF_srs_ResourceSetToAddModList_tags_4)
+               /sizeof(asn_DEF_srs_ResourceSetToAddModList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_srs_ResourceSetToAddModList_tags_4,     /* Same as above */
+       sizeof(asn_DEF_srs_ResourceSetToAddModList_tags_4)
+               /sizeof(asn_DEF_srs_ResourceSetToAddModList_tags_4[0]), /* 2 */
+       { &asn_OER_type_srs_ResourceSetToAddModList_constr_4, &asn_PER_type_srs_ResourceSetToAddModList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_srs_ResourceSetToAddModList_4,
+       1,      /* Single element */
+       &asn_SPC_srs_ResourceSetToAddModList_specs_4    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_srs_ResourceToReleaseList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SRS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_ResourceToReleaseList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_ResourceToReleaseList_specs_6 = {
+       sizeof(struct SRS_Config__srs_ResourceToReleaseList),
+       offsetof(struct SRS_Config__srs_ResourceToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_ResourceToReleaseList_6 = {
+       "srs-ResourceToReleaseList",
+       "srs-ResourceToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_ResourceToReleaseList_tags_6,
+       sizeof(asn_DEF_srs_ResourceToReleaseList_tags_6)
+               /sizeof(asn_DEF_srs_ResourceToReleaseList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_srs_ResourceToReleaseList_tags_6,       /* Same as above */
+       sizeof(asn_DEF_srs_ResourceToReleaseList_tags_6)
+               /sizeof(asn_DEF_srs_ResourceToReleaseList_tags_6[0]), /* 2 */
+       { &asn_OER_type_srs_ResourceToReleaseList_constr_6, &asn_PER_type_srs_ResourceToReleaseList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_srs_ResourceToReleaseList_6,
+       1,      /* Single element */
+       &asn_SPC_srs_ResourceToReleaseList_specs_6      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_srs_ResourceToAddModList_8[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRS_Resource,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_ResourceToAddModList_tags_8[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_ResourceToAddModList_specs_8 = {
+       sizeof(struct SRS_Config__srs_ResourceToAddModList),
+       offsetof(struct SRS_Config__srs_ResourceToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_ResourceToAddModList_8 = {
+       "srs-ResourceToAddModList",
+       "srs-ResourceToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_ResourceToAddModList_tags_8,
+       sizeof(asn_DEF_srs_ResourceToAddModList_tags_8)
+               /sizeof(asn_DEF_srs_ResourceToAddModList_tags_8[0]) - 1, /* 1 */
+       asn_DEF_srs_ResourceToAddModList_tags_8,        /* Same as above */
+       sizeof(asn_DEF_srs_ResourceToAddModList_tags_8)
+               /sizeof(asn_DEF_srs_ResourceToAddModList_tags_8[0]), /* 2 */
+       { &asn_OER_type_srs_ResourceToAddModList_constr_8, &asn_PER_type_srs_ResourceToAddModList_constr_8, SEQUENCE_OF_constraint },
+       asn_MBR_srs_ResourceToAddModList_8,
+       1,      /* Single element */
+       &asn_SPC_srs_ResourceToAddModList_specs_8       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_tpc_Accumulation_value2enum_10[] = {
+       { 0,    8,      "disabled" }
+};
+static const unsigned int asn_MAP_tpc_Accumulation_enum2value_10[] = {
+       0       /* disabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_tpc_Accumulation_specs_10 = {
+       asn_MAP_tpc_Accumulation_value2enum_10, /* "tag" => N; sorted by tag */
+       asn_MAP_tpc_Accumulation_enum2value_10, /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_tpc_Accumulation_tags_10[] = {
+       (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_tpc_Accumulation_10 = {
+       "tpc-Accumulation",
+       "tpc-Accumulation",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_tpc_Accumulation_tags_10,
+       sizeof(asn_DEF_tpc_Accumulation_tags_10)
+               /sizeof(asn_DEF_tpc_Accumulation_tags_10[0]) - 1, /* 1 */
+       asn_DEF_tpc_Accumulation_tags_10,       /* Same as above */
+       sizeof(asn_DEF_tpc_Accumulation_tags_10)
+               /sizeof(asn_DEF_tpc_Accumulation_tags_10[0]), /* 2 */
+       { &asn_OER_type_tpc_Accumulation_constr_10, &asn_PER_type_tpc_Accumulation_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_tpc_Accumulation_specs_10      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_Config_1[] = {
+       { ATF_POINTER, 5, offsetof(struct SRS_Config, srs_ResourceSetToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_srs_ResourceSetToReleaseList_2,
+               0,
+               { &asn_OER_memb_srs_ResourceSetToReleaseList_constr_2, &asn_PER_memb_srs_ResourceSetToReleaseList_constr_2,  memb_srs_ResourceSetToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "srs-ResourceSetToReleaseList"
+               },
+       { ATF_POINTER, 4, offsetof(struct SRS_Config, srs_ResourceSetToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_srs_ResourceSetToAddModList_4,
+               0,
+               { &asn_OER_memb_srs_ResourceSetToAddModList_constr_4, &asn_PER_memb_srs_ResourceSetToAddModList_constr_4,  memb_srs_ResourceSetToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "srs-ResourceSetToAddModList"
+               },
+       { ATF_POINTER, 3, offsetof(struct SRS_Config, srs_ResourceToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_srs_ResourceToReleaseList_6,
+               0,
+               { &asn_OER_memb_srs_ResourceToReleaseList_constr_6, &asn_PER_memb_srs_ResourceToReleaseList_constr_6,  memb_srs_ResourceToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "srs-ResourceToReleaseList"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRS_Config, srs_ResourceToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_srs_ResourceToAddModList_8,
+               0,
+               { &asn_OER_memb_srs_ResourceToAddModList_constr_8, &asn_PER_memb_srs_ResourceToAddModList_constr_8,  memb_srs_ResourceToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "srs-ResourceToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_Config, tpc_Accumulation),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_tpc_Accumulation_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tpc-Accumulation"
+               },
+};
+static const int asn_MAP_SRS_Config_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_SRS_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srs-ResourceSetToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srs-ResourceSetToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* srs-ResourceToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* srs-ResourceToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* tpc-Accumulation */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_Config_specs_1 = {
+       sizeof(struct SRS_Config),
+       offsetof(struct SRS_Config, _asn_ctx),
+       asn_MAP_SRS_Config_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_SRS_Config_oms_1,       /* Optional members */
+       5, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_Config = {
+       "SRS-Config",
+       "SRS-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_Config_tags_1,
+       sizeof(asn_DEF_SRS_Config_tags_1)
+               /sizeof(asn_DEF_SRS_Config_tags_1[0]), /* 1 */
+       asn_DEF_SRS_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SRS_Config_tags_1)
+               /sizeof(asn_DEF_SRS_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_Config_1,
+       5,      /* Elements count */
+       &asn_SPC_SRS_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-Config.h b/src/codec_utils/RRC/SRS-Config.h
new file mode 100644 (file)
index 0000000..dac6cdc
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_Config_H_
+#define        _SRS_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "SRS-ResourceSetId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "SRS-ResourceId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_Config__tpc_Accumulation {
+       SRS_Config__tpc_Accumulation_disabled   = 0
+} e_SRS_Config__tpc_Accumulation;
+
+/* Forward declarations */
+struct SRS_ResourceSet;
+struct SRS_Resource;
+
+/* SRS-Config */
+typedef struct SRS_Config {
+       struct SRS_Config__srs_ResourceSetToReleaseList {
+               A_SEQUENCE_OF(SRS_ResourceSetId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_ResourceSetToReleaseList;
+       struct SRS_Config__srs_ResourceSetToAddModList {
+               A_SEQUENCE_OF(struct SRS_ResourceSet) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_ResourceSetToAddModList;
+       struct SRS_Config__srs_ResourceToReleaseList {
+               A_SEQUENCE_OF(SRS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_ResourceToReleaseList;
+       struct SRS_Config__srs_ResourceToAddModList {
+               A_SEQUENCE_OF(struct SRS_Resource) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_ResourceToAddModList;
+       long    *tpc_Accumulation;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_Config_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_tpc_Accumulation_10;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_Config_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-PeriodicityAndOffset.c b/src/codec_utils/RRC/SRS-PeriodicityAndOffset.c
new file mode 100644 (file)
index 0000000..f78e635
--- /dev/null
@@ -0,0 +1,743 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-PeriodicityAndOffset.h"
+
+static int
+memb_sl2_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 >= 0 && value <= 1)) {
+               /* 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_sl4_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 >= 0 && value <= 3)) {
+               /* 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_sl5_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 >= 0 && value <= 4)) {
+               /* 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_sl8_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 >= 0 && value <= 7)) {
+               /* 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_sl10_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 >= 0 && value <= 9)) {
+               /* 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_sl16_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 >= 0 && 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_sl20_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 >= 0 && value <= 19)) {
+               /* 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_sl32_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 >= 0 && value <= 31)) {
+               /* 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_sl40_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 >= 0 && value <= 39)) {
+               /* 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_sl64_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 >= 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;
+       }
+}
+
+static int
+memb_sl80_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 >= 0 && value <= 79)) {
+               /* 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_sl160_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 >= 0 && value <= 159)) {
+               /* 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_sl320_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 >= 0 && value <= 319)) {
+               /* 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_sl640_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 >= 0 && value <= 639)) {
+               /* 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_sl1280_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 >= 0 && value <= 1279)) {
+               /* 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_sl2560_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 >= 0 && value <= 2559)) {
+               /* 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_sl2_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl2_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_sl4_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl4_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl5_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl5_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl8_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl8_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl10_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl10_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl16_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl16_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl20_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl20_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl32_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl32_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl40_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl40_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl64_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl64_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl80_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl80_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl160_constr_14 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl160_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl320_constr_15 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl320_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl640_constr_16 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl640_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl1280_constr_17 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1279) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl1280_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1279 }   /* (0..1279) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl2560_constr_18 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl2560_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2559 }   /* (0..2559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_SRS_PeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SRS_PeriodicityAndOffset_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  16 }       /* (0..16) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SRS_PeriodicityAndOffset_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sl1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl2_constr_3, &asn_PER_memb_sl2_constr_3,  memb_sl2_constraint_1 },
+               0, 0, /* No default value */
+               "sl2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl4_constr_4, &asn_PER_memb_sl4_constr_4,  memb_sl4_constraint_1 },
+               0, 0, /* No default value */
+               "sl4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl5),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl5_constr_5, &asn_PER_memb_sl5_constr_5,  memb_sl5_constraint_1 },
+               0, 0, /* No default value */
+               "sl5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl8),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl8_constr_6, &asn_PER_memb_sl8_constr_6,  memb_sl8_constraint_1 },
+               0, 0, /* No default value */
+               "sl8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl10),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl10_constr_7, &asn_PER_memb_sl10_constr_7,  memb_sl10_constraint_1 },
+               0, 0, /* No default value */
+               "sl10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl16),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl16_constr_8, &asn_PER_memb_sl16_constr_8,  memb_sl16_constraint_1 },
+               0, 0, /* No default value */
+               "sl16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl20),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl20_constr_9, &asn_PER_memb_sl20_constr_9,  memb_sl20_constraint_1 },
+               0, 0, /* No default value */
+               "sl20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl32),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl32_constr_10, &asn_PER_memb_sl32_constr_10,  memb_sl32_constraint_1 },
+               0, 0, /* No default value */
+               "sl32"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl40),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl40_constr_11, &asn_PER_memb_sl40_constr_11,  memb_sl40_constraint_1 },
+               0, 0, /* No default value */
+               "sl40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl64),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl64_constr_12, &asn_PER_memb_sl64_constr_12,  memb_sl64_constraint_1 },
+               0, 0, /* No default value */
+               "sl64"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl80),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl80_constr_13, &asn_PER_memb_sl80_constr_13,  memb_sl80_constraint_1 },
+               0, 0, /* No default value */
+               "sl80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl160),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl160_constr_14, &asn_PER_memb_sl160_constr_14,  memb_sl160_constraint_1 },
+               0, 0, /* No default value */
+               "sl160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl320),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl320_constr_15, &asn_PER_memb_sl320_constr_15,  memb_sl320_constraint_1 },
+               0, 0, /* No default value */
+               "sl320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl640),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl640_constr_16, &asn_PER_memb_sl640_constr_16,  memb_sl640_constraint_1 },
+               0, 0, /* No default value */
+               "sl640"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl1280),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl1280_constr_17, &asn_PER_memb_sl1280_constr_17,  memb_sl1280_constraint_1 },
+               0, 0, /* No default value */
+               "sl1280"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_PeriodicityAndOffset, choice.sl2560),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl2560_constr_18, &asn_PER_memb_sl2560_constr_18,  memb_sl2560_constraint_1 },
+               0, 0, /* No default value */
+               "sl2560"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_PeriodicityAndOffset_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sl1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sl2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sl4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sl5 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sl8 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sl10 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sl16 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sl20 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sl32 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* sl40 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sl64 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* sl80 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sl160 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* sl320 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* sl640 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* sl1280 */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 } /* sl2560 */
+};
+asn_CHOICE_specifics_t asn_SPC_SRS_PeriodicityAndOffset_specs_1 = {
+       sizeof(struct SRS_PeriodicityAndOffset),
+       offsetof(struct SRS_PeriodicityAndOffset, _asn_ctx),
+       offsetof(struct SRS_PeriodicityAndOffset, present),
+       sizeof(((struct SRS_PeriodicityAndOffset *)0)->present),
+       asn_MAP_SRS_PeriodicityAndOffset_tag2el_1,
+       17,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_PeriodicityAndOffset = {
+       "SRS-PeriodicityAndOffset",
+       "SRS-PeriodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_SRS_PeriodicityAndOffset_constr_1, &asn_PER_type_SRS_PeriodicityAndOffset_constr_1, CHOICE_constraint },
+       asn_MBR_SRS_PeriodicityAndOffset_1,
+       17,     /* Elements count */
+       &asn_SPC_SRS_PeriodicityAndOffset_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-PeriodicityAndOffset.h b/src/codec_utils/RRC/SRS-PeriodicityAndOffset.h
new file mode 100644 (file)
index 0000000..4382445
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_PeriodicityAndOffset_H_
+#define        _SRS_PeriodicityAndOffset_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_PeriodicityAndOffset_PR {
+       SRS_PeriodicityAndOffset_PR_NOTHING,    /* No components present */
+       SRS_PeriodicityAndOffset_PR_sl1,
+       SRS_PeriodicityAndOffset_PR_sl2,
+       SRS_PeriodicityAndOffset_PR_sl4,
+       SRS_PeriodicityAndOffset_PR_sl5,
+       SRS_PeriodicityAndOffset_PR_sl8,
+       SRS_PeriodicityAndOffset_PR_sl10,
+       SRS_PeriodicityAndOffset_PR_sl16,
+       SRS_PeriodicityAndOffset_PR_sl20,
+       SRS_PeriodicityAndOffset_PR_sl32,
+       SRS_PeriodicityAndOffset_PR_sl40,
+       SRS_PeriodicityAndOffset_PR_sl64,
+       SRS_PeriodicityAndOffset_PR_sl80,
+       SRS_PeriodicityAndOffset_PR_sl160,
+       SRS_PeriodicityAndOffset_PR_sl320,
+       SRS_PeriodicityAndOffset_PR_sl640,
+       SRS_PeriodicityAndOffset_PR_sl1280,
+       SRS_PeriodicityAndOffset_PR_sl2560
+} SRS_PeriodicityAndOffset_PR;
+
+/* SRS-PeriodicityAndOffset */
+typedef struct SRS_PeriodicityAndOffset {
+       SRS_PeriodicityAndOffset_PR present;
+       union SRS_PeriodicityAndOffset_u {
+               NULL_t   sl1;
+               long     sl2;
+               long     sl4;
+               long     sl5;
+               long     sl8;
+               long     sl10;
+               long     sl16;
+               long     sl20;
+               long     sl32;
+               long     sl40;
+               long     sl64;
+               long     sl80;
+               long     sl160;
+               long     sl320;
+               long     sl640;
+               long     sl1280;
+               long     sl2560;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_PeriodicityAndOffset_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_PeriodicityAndOffset;
+extern asn_CHOICE_specifics_t asn_SPC_SRS_PeriodicityAndOffset_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_PeriodicityAndOffset_1[17];
+extern asn_per_constraints_t asn_PER_type_SRS_PeriodicityAndOffset_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_PeriodicityAndOffset_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-Resource.c b/src/codec_utils/RRC/SRS-Resource.c
new file mode 100644 (file)
index 0000000..14a3c32
--- /dev/null
@@ -0,0 +1,1249 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-Resource.h"
+
+#include "SRS-SpatialRelationInfo.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.
+ */
+static int
+memb_combOffset_n2_constraint_11(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 <= 1)) {
+               /* 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_cyclicShift_n2_constraint_11(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 <= 7)) {
+               /* 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_combOffset_n4_constraint_14(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 <= 3)) {
+               /* 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_cyclicShift_n4_constraint_14(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 <= 11)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_startPosition_constraint_17(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 <= 5)) {
+               /* 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_c_SRS_constraint_29(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;
+       }
+}
+
+static int
+memb_b_SRS_constraint_29(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 <= 3)) {
+               /* 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_b_hop_constraint_29(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 <= 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_freqDomainPosition_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 >= 0 && value <= 67)) {
+               /* 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_freqDomainShift_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 >= 0 && value <= 268)) {
+               /* 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_sequenceId_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 >= 0 && value <= 1023)) {
+               /* 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_nrofSRS_Ports_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofSRS_Ports_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ptrs_PortIndex_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ptrs_PortIndex_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_combOffset_n2_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_combOffset_n2_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_cyclicShift_n2_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cyclicShift_n2_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_combOffset_n4_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_combOffset_n4_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_cyclicShift_n4_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (0..11) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_cyclicShift_n4_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_transmissionComb_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_transmissionComb_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_nrofSymbols_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_nrofSymbols_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_repetitionFactor_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_repetitionFactor_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startPosition_constr_18 CC_NOTUSED = {
+       { 1, 1 }        /* (0..5) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startPosition_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_c_SRS_constr_30 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_c_SRS_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_b_SRS_constr_31 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_b_SRS_constr_31 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_b_hop_constr_32 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_b_hop_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_groupOrSequenceHopping_constr_33 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_groupOrSequenceHopping_constr_33 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceType_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceType_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_freqDomainPosition_constr_27 CC_NOTUSED = {
+       { 1, 1 }        /* (0..67) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_freqDomainPosition_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  67 }       /* (0..67) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_freqDomainShift_constr_28 CC_NOTUSED = {
+       { 2, 1 }        /* (0..268) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_freqDomainShift_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  268 }      /* (0..268) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sequenceId_constr_46 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sequenceId_constr_46 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_nrofSRS_Ports_value2enum_3[] = {
+       { 0,    5,      "port1" },
+       { 1,    6,      "ports2" },
+       { 2,    6,      "ports4" }
+};
+static const unsigned int asn_MAP_nrofSRS_Ports_enum2value_3[] = {
+       0,      /* port1(0) */
+       1,      /* ports2(1) */
+       2       /* ports4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofSRS_Ports_specs_3 = {
+       asn_MAP_nrofSRS_Ports_value2enum_3,     /* "tag" => N; sorted by tag */
+       asn_MAP_nrofSRS_Ports_enum2value_3,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofSRS_Ports_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_nrofSRS_Ports_3 = {
+       "nrofSRS-Ports",
+       "nrofSRS-Ports",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofSRS_Ports_tags_3,
+       sizeof(asn_DEF_nrofSRS_Ports_tags_3)
+               /sizeof(asn_DEF_nrofSRS_Ports_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nrofSRS_Ports_tags_3,   /* Same as above */
+       sizeof(asn_DEF_nrofSRS_Ports_tags_3)
+               /sizeof(asn_DEF_nrofSRS_Ports_tags_3[0]), /* 2 */
+       { &asn_OER_type_nrofSRS_Ports_constr_3, &asn_PER_type_nrofSRS_Ports_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofSRS_Ports_specs_3  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ptrs_PortIndex_value2enum_7[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" }
+};
+static const unsigned int asn_MAP_ptrs_PortIndex_enum2value_7[] = {
+       0,      /* n0(0) */
+       1       /* n1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ptrs_PortIndex_specs_7 = {
+       asn_MAP_ptrs_PortIndex_value2enum_7,    /* "tag" => N; sorted by tag */
+       asn_MAP_ptrs_PortIndex_enum2value_7,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ptrs_PortIndex_tags_7[] = {
+       (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_ptrs_PortIndex_7 = {
+       "ptrs-PortIndex",
+       "ptrs-PortIndex",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ptrs_PortIndex_tags_7,
+       sizeof(asn_DEF_ptrs_PortIndex_tags_7)
+               /sizeof(asn_DEF_ptrs_PortIndex_tags_7[0]) - 1, /* 1 */
+       asn_DEF_ptrs_PortIndex_tags_7,  /* Same as above */
+       sizeof(asn_DEF_ptrs_PortIndex_tags_7)
+               /sizeof(asn_DEF_ptrs_PortIndex_tags_7[0]), /* 2 */
+       { &asn_OER_type_ptrs_PortIndex_constr_7, &asn_PER_type_ptrs_PortIndex_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ptrs_PortIndex_specs_7 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_n2_11[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__transmissionComb__n2, combOffset_n2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_combOffset_n2_constr_12, &asn_PER_memb_combOffset_n2_constr_12,  memb_combOffset_n2_constraint_11 },
+               0, 0, /* No default value */
+               "combOffset-n2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__transmissionComb__n2, cyclicShift_n2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cyclicShift_n2_constr_13, &asn_PER_memb_cyclicShift_n2_constr_13,  memb_cyclicShift_n2_constraint_11 },
+               0, 0, /* No default value */
+               "cyclicShift-n2"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_n2_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_n2_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* combOffset-n2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cyclicShift-n2 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_n2_specs_11 = {
+       sizeof(struct SRS_Resource__transmissionComb__n2),
+       offsetof(struct SRS_Resource__transmissionComb__n2, _asn_ctx),
+       asn_MAP_n2_tag2el_11,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_n2_11 = {
+       "n2",
+       "n2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_n2_tags_11,
+       sizeof(asn_DEF_n2_tags_11)
+               /sizeof(asn_DEF_n2_tags_11[0]) - 1, /* 1 */
+       asn_DEF_n2_tags_11,     /* Same as above */
+       sizeof(asn_DEF_n2_tags_11)
+               /sizeof(asn_DEF_n2_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_n2_11,
+       2,      /* Elements count */
+       &asn_SPC_n2_specs_11    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_n4_14[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__transmissionComb__n4, combOffset_n4),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_combOffset_n4_constr_15, &asn_PER_memb_combOffset_n4_constr_15,  memb_combOffset_n4_constraint_14 },
+               0, 0, /* No default value */
+               "combOffset-n4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__transmissionComb__n4, cyclicShift_n4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_cyclicShift_n4_constr_16, &asn_PER_memb_cyclicShift_n4_constr_16,  memb_cyclicShift_n4_constraint_14 },
+               0, 0, /* No default value */
+               "cyclicShift-n4"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_n4_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_n4_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* combOffset-n4 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cyclicShift-n4 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_n4_specs_14 = {
+       sizeof(struct SRS_Resource__transmissionComb__n4),
+       offsetof(struct SRS_Resource__transmissionComb__n4, _asn_ctx),
+       asn_MAP_n4_tag2el_14,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_n4_14 = {
+       "n4",
+       "n4",
+       &asn_OP_SEQUENCE,
+       asn_DEF_n4_tags_14,
+       sizeof(asn_DEF_n4_tags_14)
+               /sizeof(asn_DEF_n4_tags_14[0]) - 1, /* 1 */
+       asn_DEF_n4_tags_14,     /* Same as above */
+       sizeof(asn_DEF_n4_tags_14)
+               /sizeof(asn_DEF_n4_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_n4_14,
+       2,      /* Elements count */
+       &asn_SPC_n4_specs_14    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_transmissionComb_10[] = {
+       { ATF_POINTER, 0, offsetof(struct SRS_Resource__transmissionComb, choice.n2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_n2_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n2"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_Resource__transmissionComb, choice.n4),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_n4_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n4"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_transmissionComb_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* n2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* n4 */
+};
+static asn_CHOICE_specifics_t asn_SPC_transmissionComb_specs_10 = {
+       sizeof(struct SRS_Resource__transmissionComb),
+       offsetof(struct SRS_Resource__transmissionComb, _asn_ctx),
+       offsetof(struct SRS_Resource__transmissionComb, present),
+       sizeof(((struct SRS_Resource__transmissionComb *)0)->present),
+       asn_MAP_transmissionComb_tag2el_10,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_transmissionComb_10 = {
+       "transmissionComb",
+       "transmissionComb",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_transmissionComb_constr_10, &asn_PER_type_transmissionComb_constr_10, CHOICE_constraint },
+       asn_MBR_transmissionComb_10,
+       2,      /* Elements count */
+       &asn_SPC_transmissionComb_specs_10      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_nrofSymbols_value2enum_19[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_nrofSymbols_enum2value_19[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_nrofSymbols_specs_19 = {
+       asn_MAP_nrofSymbols_value2enum_19,      /* "tag" => N; sorted by tag */
+       asn_MAP_nrofSymbols_enum2value_19,      /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_nrofSymbols_tags_19[] = {
+       (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_nrofSymbols_19 = {
+       "nrofSymbols",
+       "nrofSymbols",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_nrofSymbols_tags_19,
+       sizeof(asn_DEF_nrofSymbols_tags_19)
+               /sizeof(asn_DEF_nrofSymbols_tags_19[0]) - 1, /* 1 */
+       asn_DEF_nrofSymbols_tags_19,    /* Same as above */
+       sizeof(asn_DEF_nrofSymbols_tags_19)
+               /sizeof(asn_DEF_nrofSymbols_tags_19[0]), /* 2 */
+       { &asn_OER_type_nrofSymbols_constr_19, &asn_PER_type_nrofSymbols_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_nrofSymbols_specs_19   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_repetitionFactor_value2enum_23[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_repetitionFactor_enum2value_23[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_repetitionFactor_specs_23 = {
+       asn_MAP_repetitionFactor_value2enum_23, /* "tag" => N; sorted by tag */
+       asn_MAP_repetitionFactor_enum2value_23, /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_repetitionFactor_tags_23[] = {
+       (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_repetitionFactor_23 = {
+       "repetitionFactor",
+       "repetitionFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_repetitionFactor_tags_23,
+       sizeof(asn_DEF_repetitionFactor_tags_23)
+               /sizeof(asn_DEF_repetitionFactor_tags_23[0]) - 1, /* 1 */
+       asn_DEF_repetitionFactor_tags_23,       /* Same as above */
+       sizeof(asn_DEF_repetitionFactor_tags_23)
+               /sizeof(asn_DEF_repetitionFactor_tags_23[0]), /* 2 */
+       { &asn_OER_type_repetitionFactor_constr_23, &asn_PER_type_repetitionFactor_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_repetitionFactor_specs_23      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceMapping_17[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__resourceMapping, startPosition),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startPosition_constr_18, &asn_PER_memb_startPosition_constr_18,  memb_startPosition_constraint_17 },
+               0, 0, /* No default value */
+               "startPosition"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__resourceMapping, nrofSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofSymbols_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__resourceMapping, repetitionFactor),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_repetitionFactor_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "repetitionFactor"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_resourceMapping_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_resourceMapping_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startPosition */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* repetitionFactor */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_resourceMapping_specs_17 = {
+       sizeof(struct SRS_Resource__resourceMapping),
+       offsetof(struct SRS_Resource__resourceMapping, _asn_ctx),
+       asn_MAP_resourceMapping_tag2el_17,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceMapping_17 = {
+       "resourceMapping",
+       "resourceMapping",
+       &asn_OP_SEQUENCE,
+       asn_DEF_resourceMapping_tags_17,
+       sizeof(asn_DEF_resourceMapping_tags_17)
+               /sizeof(asn_DEF_resourceMapping_tags_17[0]) - 1, /* 1 */
+       asn_DEF_resourceMapping_tags_17,        /* Same as above */
+       sizeof(asn_DEF_resourceMapping_tags_17)
+               /sizeof(asn_DEF_resourceMapping_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_resourceMapping_17,
+       3,      /* Elements count */
+       &asn_SPC_resourceMapping_specs_17       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_freqHopping_29[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__freqHopping, c_SRS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_c_SRS_constr_30, &asn_PER_memb_c_SRS_constr_30,  memb_c_SRS_constraint_29 },
+               0, 0, /* No default value */
+               "c-SRS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__freqHopping, b_SRS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_b_SRS_constr_31, &asn_PER_memb_b_SRS_constr_31,  memb_b_SRS_constraint_29 },
+               0, 0, /* No default value */
+               "b-SRS"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__freqHopping, b_hop),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_b_hop_constr_32, &asn_PER_memb_b_hop_constr_32,  memb_b_hop_constraint_29 },
+               0, 0, /* No default value */
+               "b-hop"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_freqHopping_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_freqHopping_tag2el_29[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c-SRS */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* b-SRS */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* b-hop */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_freqHopping_specs_29 = {
+       sizeof(struct SRS_Resource__freqHopping),
+       offsetof(struct SRS_Resource__freqHopping, _asn_ctx),
+       asn_MAP_freqHopping_tag2el_29,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_freqHopping_29 = {
+       "freqHopping",
+       "freqHopping",
+       &asn_OP_SEQUENCE,
+       asn_DEF_freqHopping_tags_29,
+       sizeof(asn_DEF_freqHopping_tags_29)
+               /sizeof(asn_DEF_freqHopping_tags_29[0]) - 1, /* 1 */
+       asn_DEF_freqHopping_tags_29,    /* Same as above */
+       sizeof(asn_DEF_freqHopping_tags_29)
+               /sizeof(asn_DEF_freqHopping_tags_29[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_freqHopping_29,
+       3,      /* Elements count */
+       &asn_SPC_freqHopping_specs_29   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_groupOrSequenceHopping_value2enum_33[] = {
+       { 0,    7,      "neither" },
+       { 1,    12,     "groupHopping" },
+       { 2,    15,     "sequenceHopping" }
+};
+static const unsigned int asn_MAP_groupOrSequenceHopping_enum2value_33[] = {
+       1,      /* groupHopping(1) */
+       0,      /* neither(0) */
+       2       /* sequenceHopping(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_groupOrSequenceHopping_specs_33 = {
+       asn_MAP_groupOrSequenceHopping_value2enum_33,   /* "tag" => N; sorted by tag */
+       asn_MAP_groupOrSequenceHopping_enum2value_33,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_groupOrSequenceHopping_tags_33[] = {
+       (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_groupOrSequenceHopping_33 = {
+       "groupOrSequenceHopping",
+       "groupOrSequenceHopping",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_groupOrSequenceHopping_tags_33,
+       sizeof(asn_DEF_groupOrSequenceHopping_tags_33)
+               /sizeof(asn_DEF_groupOrSequenceHopping_tags_33[0]) - 1, /* 1 */
+       asn_DEF_groupOrSequenceHopping_tags_33, /* Same as above */
+       sizeof(asn_DEF_groupOrSequenceHopping_tags_33)
+               /sizeof(asn_DEF_groupOrSequenceHopping_tags_33[0]), /* 2 */
+       { &asn_OER_type_groupOrSequenceHopping_constr_33, &asn_PER_type_groupOrSequenceHopping_constr_33, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_groupOrSequenceHopping_specs_33        /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_aperiodic_tags_38[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_aperiodic_specs_38 = {
+       sizeof(struct SRS_Resource__resourceType__aperiodic),
+       offsetof(struct SRS_Resource__resourceType__aperiodic, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodic_38 = {
+       "aperiodic",
+       "aperiodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_aperiodic_tags_38,
+       sizeof(asn_DEF_aperiodic_tags_38)
+               /sizeof(asn_DEF_aperiodic_tags_38[0]) - 1, /* 1 */
+       asn_DEF_aperiodic_tags_38,      /* Same as above */
+       sizeof(asn_DEF_aperiodic_tags_38)
+               /sizeof(asn_DEF_aperiodic_tags_38[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_aperiodic_specs_38     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semi_persistent_40[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__resourceType__semi_persistent, periodicityAndOffset_sp),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SRS_PeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset-sp"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_semi_persistent_tags_40[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_semi_persistent_tag2el_40[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* periodicityAndOffset-sp */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_semi_persistent_specs_40 = {
+       sizeof(struct SRS_Resource__resourceType__semi_persistent),
+       offsetof(struct SRS_Resource__resourceType__semi_persistent, _asn_ctx),
+       asn_MAP_semi_persistent_tag2el_40,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semi_persistent_40 = {
+       "semi-persistent",
+       "semi-persistent",
+       &asn_OP_SEQUENCE,
+       asn_DEF_semi_persistent_tags_40,
+       sizeof(asn_DEF_semi_persistent_tags_40)
+               /sizeof(asn_DEF_semi_persistent_tags_40[0]) - 1, /* 1 */
+       asn_DEF_semi_persistent_tags_40,        /* Same as above */
+       sizeof(asn_DEF_semi_persistent_tags_40)
+               /sizeof(asn_DEF_semi_persistent_tags_40[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_semi_persistent_40,
+       1,      /* Elements count */
+       &asn_SPC_semi_persistent_specs_40       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_periodic_43[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource__resourceType__periodic, periodicityAndOffset_p),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SRS_PeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset-p"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_periodic_tags_43[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodic_tag2el_43[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* periodicityAndOffset-p */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_periodic_specs_43 = {
+       sizeof(struct SRS_Resource__resourceType__periodic),
+       offsetof(struct SRS_Resource__resourceType__periodic, _asn_ctx),
+       asn_MAP_periodic_tag2el_43,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodic_43 = {
+       "periodic",
+       "periodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_periodic_tags_43,
+       sizeof(asn_DEF_periodic_tags_43)
+               /sizeof(asn_DEF_periodic_tags_43[0]) - 1, /* 1 */
+       asn_DEF_periodic_tags_43,       /* Same as above */
+       sizeof(asn_DEF_periodic_tags_43)
+               /sizeof(asn_DEF_periodic_tags_43[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_periodic_43,
+       1,      /* Elements count */
+       &asn_SPC_periodic_specs_43      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceType_37[] = {
+       { ATF_POINTER, 0, offsetof(struct SRS_Resource__resourceType, choice.aperiodic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_aperiodic_38,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodic"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_Resource__resourceType, choice.semi_persistent),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_semi_persistent_40,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semi-persistent"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_Resource__resourceType, choice.periodic),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_periodic_43,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodic"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_resourceType_tag2el_37[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aperiodic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semi-persistent */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* periodic */
+};
+static asn_CHOICE_specifics_t asn_SPC_resourceType_specs_37 = {
+       sizeof(struct SRS_Resource__resourceType),
+       offsetof(struct SRS_Resource__resourceType, _asn_ctx),
+       offsetof(struct SRS_Resource__resourceType, present),
+       sizeof(((struct SRS_Resource__resourceType *)0)->present),
+       asn_MAP_resourceType_tag2el_37,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceType_37 = {
+       "resourceType",
+       "resourceType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_resourceType_constr_37, &asn_PER_type_resourceType_constr_37, CHOICE_constraint },
+       asn_MBR_resourceType_37,
+       3,      /* Elements count */
+       &asn_SPC_resourceType_specs_37  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, srs_ResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-ResourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, nrofSRS_Ports),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_nrofSRS_Ports_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofSRS-Ports"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_Resource, ptrs_PortIndex),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ptrs_PortIndex_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ptrs-PortIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, transmissionComb),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_transmissionComb_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "transmissionComb"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, resourceMapping),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_resourceMapping_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceMapping"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, freqDomainPosition),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_freqDomainPosition_constr_27, &asn_PER_memb_freqDomainPosition_constr_27,  memb_freqDomainPosition_constraint_1 },
+               0, 0, /* No default value */
+               "freqDomainPosition"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, freqDomainShift),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_freqDomainShift_constr_28, &asn_PER_memb_freqDomainShift_constr_28,  memb_freqDomainShift_constraint_1 },
+               0, 0, /* No default value */
+               "freqDomainShift"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, freqHopping),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               0,
+               &asn_DEF_freqHopping_29,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "freqHopping"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, groupOrSequenceHopping),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_groupOrSequenceHopping_33,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "groupOrSequenceHopping"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, resourceType),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_resourceType_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resource, sequenceId),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sequenceId_constr_46, &asn_PER_memb_sequenceId_constr_46,  memb_sequenceId_constraint_1 },
+               0, 0, /* No default value */
+               "sequenceId"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_Resource, spatialRelationInfo),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_SpatialRelationInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spatialRelationInfo"
+               },
+};
+static const int asn_MAP_SRS_Resource_oms_1[] = { 2, 11 };
+static const ber_tlv_tag_t asn_DEF_SRS_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srs-ResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofSRS-Ports */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ptrs-PortIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* transmissionComb */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* resourceMapping */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* freqDomainPosition */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* freqDomainShift */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* freqHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* groupOrSequenceHopping */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* resourceType */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sequenceId */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* spatialRelationInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_Resource_specs_1 = {
+       sizeof(struct SRS_Resource),
+       offsetof(struct SRS_Resource, _asn_ctx),
+       asn_MAP_SRS_Resource_tag2el_1,
+       12,     /* Count of tags in the map */
+       asn_MAP_SRS_Resource_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       12,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_Resource = {
+       "SRS-Resource",
+       "SRS-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_Resource_tags_1,
+       sizeof(asn_DEF_SRS_Resource_tags_1)
+               /sizeof(asn_DEF_SRS_Resource_tags_1[0]), /* 1 */
+       asn_DEF_SRS_Resource_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRS_Resource_tags_1)
+               /sizeof(asn_DEF_SRS_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_Resource_1,
+       12,     /* Elements count */
+       &asn_SPC_SRS_Resource_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-Resource.h b/src/codec_utils/RRC/SRS-Resource.h
new file mode 100644 (file)
index 0000000..d2aae6b
--- /dev/null
@@ -0,0 +1,175 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_Resource_H_
+#define        _SRS_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SRS-ResourceId.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+#include "SRS-PeriodicityAndOffset.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_Resource__nrofSRS_Ports {
+       SRS_Resource__nrofSRS_Ports_port1       = 0,
+       SRS_Resource__nrofSRS_Ports_ports2      = 1,
+       SRS_Resource__nrofSRS_Ports_ports4      = 2
+} e_SRS_Resource__nrofSRS_Ports;
+typedef enum SRS_Resource__ptrs_PortIndex {
+       SRS_Resource__ptrs_PortIndex_n0 = 0,
+       SRS_Resource__ptrs_PortIndex_n1 = 1
+} e_SRS_Resource__ptrs_PortIndex;
+typedef enum SRS_Resource__transmissionComb_PR {
+       SRS_Resource__transmissionComb_PR_NOTHING,      /* No components present */
+       SRS_Resource__transmissionComb_PR_n2,
+       SRS_Resource__transmissionComb_PR_n4
+} SRS_Resource__transmissionComb_PR;
+typedef enum SRS_Resource__resourceMapping__nrofSymbols {
+       SRS_Resource__resourceMapping__nrofSymbols_n1   = 0,
+       SRS_Resource__resourceMapping__nrofSymbols_n2   = 1,
+       SRS_Resource__resourceMapping__nrofSymbols_n4   = 2
+} e_SRS_Resource__resourceMapping__nrofSymbols;
+typedef enum SRS_Resource__resourceMapping__repetitionFactor {
+       SRS_Resource__resourceMapping__repetitionFactor_n1      = 0,
+       SRS_Resource__resourceMapping__repetitionFactor_n2      = 1,
+       SRS_Resource__resourceMapping__repetitionFactor_n4      = 2
+} e_SRS_Resource__resourceMapping__repetitionFactor;
+typedef enum SRS_Resource__groupOrSequenceHopping {
+       SRS_Resource__groupOrSequenceHopping_neither    = 0,
+       SRS_Resource__groupOrSequenceHopping_groupHopping       = 1,
+       SRS_Resource__groupOrSequenceHopping_sequenceHopping    = 2
+} e_SRS_Resource__groupOrSequenceHopping;
+typedef enum SRS_Resource__resourceType_PR {
+       SRS_Resource__resourceType_PR_NOTHING,  /* No components present */
+       SRS_Resource__resourceType_PR_aperiodic,
+       SRS_Resource__resourceType_PR_semi_persistent,
+       SRS_Resource__resourceType_PR_periodic
+} SRS_Resource__resourceType_PR;
+
+/* Forward declarations */
+struct SRS_SpatialRelationInfo;
+
+/* SRS-Resource */
+typedef struct SRS_Resource {
+       SRS_ResourceId_t         srs_ResourceId;
+       long     nrofSRS_Ports;
+       long    *ptrs_PortIndex;        /* OPTIONAL */
+       struct SRS_Resource__transmissionComb {
+               SRS_Resource__transmissionComb_PR present;
+               union SRS_Resource__transmissionComb_u {
+                       struct SRS_Resource__transmissionComb__n2 {
+                               long     combOffset_n2;
+                               long     cyclicShift_n2;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *n2;
+                       struct SRS_Resource__transmissionComb__n4 {
+                               long     combOffset_n4;
+                               long     cyclicShift_n4;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *n4;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } transmissionComb;
+       struct SRS_Resource__resourceMapping {
+               long     startPosition;
+               long     nrofSymbols;
+               long     repetitionFactor;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resourceMapping;
+       long     freqDomainPosition;
+       long     freqDomainShift;
+       struct SRS_Resource__freqHopping {
+               long     c_SRS;
+               long     b_SRS;
+               long     b_hop;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } freqHopping;
+       long     groupOrSequenceHopping;
+       struct SRS_Resource__resourceType {
+               SRS_Resource__resourceType_PR present;
+               union SRS_Resource__resourceType_u {
+                       struct SRS_Resource__resourceType__aperiodic {
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *aperiodic;
+                       struct SRS_Resource__resourceType__semi_persistent {
+                               SRS_PeriodicityAndOffset_t       periodicityAndOffset_sp;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *semi_persistent;
+                       struct SRS_Resource__resourceType__periodic {
+                               SRS_PeriodicityAndOffset_t       periodicityAndOffset_p;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *periodic;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resourceType;
+       long     sequenceId;
+       struct SRS_SpatialRelationInfo  *spatialRelationInfo;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_Resource_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofSRS_Ports_3;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ptrs_PortIndex_7;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_nrofSymbols_19;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_repetitionFactor_23;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_groupOrSequenceHopping_33;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_Resource_1[12];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-ResourceId.c b/src/codec_utils/RRC/SRS-ResourceId.c
new file mode 100644 (file)
index 0000000..9723284
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-ResourceId.h"
+
+int
+SRS_ResourceId_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_SRS_ResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SRS_ResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_SRS_ResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_ResourceId = {
+       "SRS-ResourceId",
+       "SRS-ResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SRS_ResourceId_tags_1,
+       sizeof(asn_DEF_SRS_ResourceId_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceId_tags_1[0]), /* 1 */
+       asn_DEF_SRS_ResourceId_tags_1,  /* Same as above */
+       sizeof(asn_DEF_SRS_ResourceId_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SRS_ResourceId_constr_1, &asn_PER_type_SRS_ResourceId_constr_1, SRS_ResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SRS-ResourceId.h b/src/codec_utils/RRC/SRS-ResourceId.h
new file mode 100644 (file)
index 0000000..db4e5a4
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_ResourceId_H_
+#define        _SRS_ResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRS-ResourceId */
+typedef long    SRS_ResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SRS_ResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SRS_ResourceId;
+asn_struct_free_f SRS_ResourceId_free;
+asn_struct_print_f SRS_ResourceId_print;
+asn_constr_check_f SRS_ResourceId_constraint;
+ber_type_decoder_f SRS_ResourceId_decode_ber;
+der_type_encoder_f SRS_ResourceId_encode_der;
+xer_type_decoder_f SRS_ResourceId_decode_xer;
+xer_type_encoder_f SRS_ResourceId_encode_xer;
+oer_type_decoder_f SRS_ResourceId_decode_oer;
+oer_type_encoder_f SRS_ResourceId_encode_oer;
+per_type_decoder_f SRS_ResourceId_decode_uper;
+per_type_encoder_f SRS_ResourceId_encode_uper;
+per_type_decoder_f SRS_ResourceId_decode_aper;
+per_type_encoder_f SRS_ResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_ResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-ResourceSet.c b/src/codec_utils/RRC/SRS-ResourceSet.c
new file mode 100644 (file)
index 0000000..d4e6798
--- /dev/null
@@ -0,0 +1,848 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-ResourceSet.h"
+
+static int
+memb_NativeInteger_constraint_12(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 <= 3)) {
+               /* 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_aperiodicSRS_ResourceTriggerList_v1530_constraint_11(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 <= 2)) {
+               /* 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_aperiodicSRS_ResourceTrigger_constraint_6(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 <= 3)) {
+               /* 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_slotOffset_constraint_6(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 <= 32)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_srs_ResourceIdList_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 <= 16)) {
+               /* 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_p0_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 >= -202 && value <= 24)) {
+               /* 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_srs_ResourceIdList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_srs_ResourceIdList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_Member_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (1..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (1..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aperiodicSRS_ResourceTriggerList_v1530_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_type_aperiodicSRS_ResourceTriggerList_v1530_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aperiodicSRS_ResourceTriggerList_v1530_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..2)) */};
+static asn_per_constraints_t asn_PER_memb_aperiodicSRS_ResourceTriggerList_v1530_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       1,  1,  1,  2 }        /* (SIZE(1..2)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_aperiodicSRS_ResourceTrigger_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (1..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_aperiodicSRS_ResourceTrigger_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (1..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotOffset_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (1..32) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_slotOffset_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (1..32) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_resourceType_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_resourceType_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_usage_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_usage_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pathlossReferenceRS_constr_27 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pathlossReferenceRS_constr_27 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_PowerControlAdjustmentStates_constr_30 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_srs_PowerControlAdjustmentStates_constr_30 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_srs_ResourceIdList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_srs_ResourceIdList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_p0_constr_26 CC_NOTUSED = {
+       { 2, 0 }        /* (-202..24) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_p0_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srs_ResourceIdList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SRS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_ResourceIdList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_ResourceIdList_specs_3 = {
+       sizeof(struct SRS_ResourceSet__srs_ResourceIdList),
+       offsetof(struct SRS_ResourceSet__srs_ResourceIdList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_ResourceIdList_3 = {
+       "srs-ResourceIdList",
+       "srs-ResourceIdList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_ResourceIdList_tags_3,
+       sizeof(asn_DEF_srs_ResourceIdList_tags_3)
+               /sizeof(asn_DEF_srs_ResourceIdList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_srs_ResourceIdList_tags_3,      /* Same as above */
+       sizeof(asn_DEF_srs_ResourceIdList_tags_3)
+               /sizeof(asn_DEF_srs_ResourceIdList_tags_3[0]), /* 2 */
+       { &asn_OER_type_srs_ResourceIdList_constr_3, &asn_PER_type_srs_ResourceIdList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_srs_ResourceIdList_3,
+       1,      /* Single element */
+       &asn_SPC_srs_ResourceIdList_specs_3     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodicSRS_ResourceTriggerList_v1530_12[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_13, &asn_PER_memb_Member_constr_13,  memb_NativeInteger_constraint_12 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_aperiodicSRS_ResourceTriggerList_v1530_specs_12 = {
+       sizeof(struct SRS_ResourceSet__resourceType__aperiodic__ext1__aperiodicSRS_ResourceTriggerList_v1530),
+       offsetof(struct SRS_ResourceSet__resourceType__aperiodic__ext1__aperiodicSRS_ResourceTriggerList_v1530, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_12 = {
+       "aperiodicSRS-ResourceTriggerList-v1530",
+       "aperiodicSRS-ResourceTriggerList-v1530",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12,
+       sizeof(asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12)
+               /sizeof(asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12[0]) - 1, /* 1 */
+       asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12, /* Same as above */
+       sizeof(asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12)
+               /sizeof(asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_tags_12[0]), /* 2 */
+       { &asn_OER_type_aperiodicSRS_ResourceTriggerList_v1530_constr_12, &asn_PER_type_aperiodicSRS_ResourceTriggerList_v1530_constr_12, SEQUENCE_OF_constraint },
+       asn_MBR_aperiodicSRS_ResourceTriggerList_v1530_12,
+       1,      /* Single element */
+       &asn_SPC_aperiodicSRS_ResourceTriggerList_v1530_specs_12        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_11[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet__resourceType__aperiodic__ext1, aperiodicSRS_ResourceTriggerList_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_aperiodicSRS_ResourceTriggerList_v1530_12,
+               0,
+               { &asn_OER_memb_aperiodicSRS_ResourceTriggerList_v1530_constr_12, &asn_PER_memb_aperiodicSRS_ResourceTriggerList_v1530_constr_12,  memb_aperiodicSRS_ResourceTriggerList_v1530_constraint_11 },
+               0, 0, /* No default value */
+               "aperiodicSRS-ResourceTriggerList-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_11[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_11[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* aperiodicSRS-ResourceTriggerList-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_11 = {
+       sizeof(struct SRS_ResourceSet__resourceType__aperiodic__ext1),
+       offsetof(struct SRS_ResourceSet__resourceType__aperiodic__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_11,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_11,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_11 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_11,
+       sizeof(asn_DEF_ext1_tags_11)
+               /sizeof(asn_DEF_ext1_tags_11[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_11,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_11)
+               /sizeof(asn_DEF_ext1_tags_11[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_11,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_11  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_aperiodic_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet__resourceType__aperiodic, aperiodicSRS_ResourceTrigger),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_aperiodicSRS_ResourceTrigger_constr_7, &asn_PER_memb_aperiodicSRS_ResourceTrigger_constr_7,  memb_aperiodicSRS_ResourceTrigger_constraint_6 },
+               0, 0, /* No default value */
+               "aperiodicSRS-ResourceTrigger"
+               },
+       { ATF_POINTER, 3, offsetof(struct SRS_ResourceSet__resourceType__aperiodic, csi_RS),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRS_ResourceSet__resourceType__aperiodic, slotOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_slotOffset_constr_9, &asn_PER_memb_slotOffset_constr_9,  memb_slotOffset_constraint_6 },
+               0, 0, /* No default value */
+               "slotOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet__resourceType__aperiodic, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_ext1_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_aperiodic_oms_6[] = { 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_aperiodic_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_aperiodic_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aperiodicSRS-ResourceTrigger */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RS */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* slotOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_aperiodic_specs_6 = {
+       sizeof(struct SRS_ResourceSet__resourceType__aperiodic),
+       offsetof(struct SRS_ResourceSet__resourceType__aperiodic, _asn_ctx),
+       asn_MAP_aperiodic_tag2el_6,
+       4,      /* Count of tags in the map */
+       asn_MAP_aperiodic_oms_6,        /* Optional members */
+       2, 1,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_aperiodic_6 = {
+       "aperiodic",
+       "aperiodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_aperiodic_tags_6,
+       sizeof(asn_DEF_aperiodic_tags_6)
+               /sizeof(asn_DEF_aperiodic_tags_6[0]) - 1, /* 1 */
+       asn_DEF_aperiodic_tags_6,       /* Same as above */
+       sizeof(asn_DEF_aperiodic_tags_6)
+               /sizeof(asn_DEF_aperiodic_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_aperiodic_6,
+       4,      /* Elements count */
+       &asn_SPC_aperiodic_specs_6      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_semi_persistent_14[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet__resourceType__semi_persistent, associatedCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "associatedCSI-RS"
+               },
+};
+static const int asn_MAP_semi_persistent_oms_14[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_semi_persistent_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_semi_persistent_tag2el_14[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* associatedCSI-RS */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_semi_persistent_specs_14 = {
+       sizeof(struct SRS_ResourceSet__resourceType__semi_persistent),
+       offsetof(struct SRS_ResourceSet__resourceType__semi_persistent, _asn_ctx),
+       asn_MAP_semi_persistent_tag2el_14,
+       1,      /* Count of tags in the map */
+       asn_MAP_semi_persistent_oms_14, /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_semi_persistent_14 = {
+       "semi-persistent",
+       "semi-persistent",
+       &asn_OP_SEQUENCE,
+       asn_DEF_semi_persistent_tags_14,
+       sizeof(asn_DEF_semi_persistent_tags_14)
+               /sizeof(asn_DEF_semi_persistent_tags_14[0]) - 1, /* 1 */
+       asn_DEF_semi_persistent_tags_14,        /* Same as above */
+       sizeof(asn_DEF_semi_persistent_tags_14)
+               /sizeof(asn_DEF_semi_persistent_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_semi_persistent_14,
+       1,      /* Elements count */
+       &asn_SPC_semi_persistent_specs_14       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_periodic_17[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet__resourceType__periodic, associatedCSI_RS),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "associatedCSI-RS"
+               },
+};
+static const int asn_MAP_periodic_oms_17[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_periodic_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodic_tag2el_17[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* associatedCSI-RS */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_periodic_specs_17 = {
+       sizeof(struct SRS_ResourceSet__resourceType__periodic),
+       offsetof(struct SRS_ResourceSet__resourceType__periodic, _asn_ctx),
+       asn_MAP_periodic_tag2el_17,
+       1,      /* Count of tags in the map */
+       asn_MAP_periodic_oms_17,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodic_17 = {
+       "periodic",
+       "periodic",
+       &asn_OP_SEQUENCE,
+       asn_DEF_periodic_tags_17,
+       sizeof(asn_DEF_periodic_tags_17)
+               /sizeof(asn_DEF_periodic_tags_17[0]) - 1, /* 1 */
+       asn_DEF_periodic_tags_17,       /* Same as above */
+       sizeof(asn_DEF_periodic_tags_17)
+               /sizeof(asn_DEF_periodic_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_periodic_17,
+       1,      /* Elements count */
+       &asn_SPC_periodic_specs_17      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_resourceType_5[] = {
+       { ATF_POINTER, 0, offsetof(struct SRS_ResourceSet__resourceType, choice.aperiodic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_aperiodic_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aperiodic"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_ResourceSet__resourceType, choice.semi_persistent),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_semi_persistent_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semi-persistent"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_ResourceSet__resourceType, choice.periodic),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_periodic_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodic"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_resourceType_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aperiodic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* semi-persistent */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* periodic */
+};
+static asn_CHOICE_specifics_t asn_SPC_resourceType_specs_5 = {
+       sizeof(struct SRS_ResourceSet__resourceType),
+       offsetof(struct SRS_ResourceSet__resourceType, _asn_ctx),
+       offsetof(struct SRS_ResourceSet__resourceType, present),
+       sizeof(((struct SRS_ResourceSet__resourceType *)0)->present),
+       asn_MAP_resourceType_tag2el_5,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_resourceType_5 = {
+       "resourceType",
+       "resourceType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_resourceType_constr_5, &asn_PER_type_resourceType_constr_5, CHOICE_constraint },
+       asn_MBR_resourceType_5,
+       3,      /* Elements count */
+       &asn_SPC_resourceType_specs_5   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_usage_value2enum_20[] = {
+       { 0,    14,     "beamManagement" },
+       { 1,    8,      "codebook" },
+       { 2,    11,     "nonCodebook" },
+       { 3,    16,     "antennaSwitching" }
+};
+static const unsigned int asn_MAP_usage_enum2value_20[] = {
+       3,      /* antennaSwitching(3) */
+       0,      /* beamManagement(0) */
+       1,      /* codebook(1) */
+       2       /* nonCodebook(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_usage_specs_20 = {
+       asn_MAP_usage_value2enum_20,    /* "tag" => N; sorted by tag */
+       asn_MAP_usage_enum2value_20,    /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_usage_tags_20[] = {
+       (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_usage_20 = {
+       "usage",
+       "usage",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_usage_tags_20,
+       sizeof(asn_DEF_usage_tags_20)
+               /sizeof(asn_DEF_usage_tags_20[0]) - 1, /* 1 */
+       asn_DEF_usage_tags_20,  /* Same as above */
+       sizeof(asn_DEF_usage_tags_20)
+               /sizeof(asn_DEF_usage_tags_20[0]), /* 2 */
+       { &asn_OER_type_usage_constr_20, &asn_PER_type_usage_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_usage_specs_20 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pathlossReferenceRS_27[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet__pathlossReferenceRS, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet__pathlossReferenceRS, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pathlossReferenceRS_tag2el_27[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RS-Index */
+};
+static asn_CHOICE_specifics_t asn_SPC_pathlossReferenceRS_specs_27 = {
+       sizeof(struct SRS_ResourceSet__pathlossReferenceRS),
+       offsetof(struct SRS_ResourceSet__pathlossReferenceRS, _asn_ctx),
+       offsetof(struct SRS_ResourceSet__pathlossReferenceRS, present),
+       sizeof(((struct SRS_ResourceSet__pathlossReferenceRS *)0)->present),
+       asn_MAP_pathlossReferenceRS_tag2el_27,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pathlossReferenceRS_27 = {
+       "pathlossReferenceRS",
+       "pathlossReferenceRS",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pathlossReferenceRS_constr_27, &asn_PER_type_pathlossReferenceRS_constr_27, CHOICE_constraint },
+       asn_MBR_pathlossReferenceRS_27,
+       2,      /* Elements count */
+       &asn_SPC_pathlossReferenceRS_specs_27   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_srs_PowerControlAdjustmentStates_value2enum_30[] = {
+       { 0,    10,     "sameAsFci2" },
+       { 1,    18,     "separateClosedLoop" }
+};
+static const unsigned int asn_MAP_srs_PowerControlAdjustmentStates_enum2value_30[] = {
+       0,      /* sameAsFci2(0) */
+       1       /* separateClosedLoop(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_srs_PowerControlAdjustmentStates_specs_30 = {
+       asn_MAP_srs_PowerControlAdjustmentStates_value2enum_30, /* "tag" => N; sorted by tag */
+       asn_MAP_srs_PowerControlAdjustmentStates_enum2value_30, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_srs_PowerControlAdjustmentStates_tags_30[] = {
+       (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_srs_PowerControlAdjustmentStates_30 = {
+       "srs-PowerControlAdjustmentStates",
+       "srs-PowerControlAdjustmentStates",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_srs_PowerControlAdjustmentStates_tags_30,
+       sizeof(asn_DEF_srs_PowerControlAdjustmentStates_tags_30)
+               /sizeof(asn_DEF_srs_PowerControlAdjustmentStates_tags_30[0]) - 1, /* 1 */
+       asn_DEF_srs_PowerControlAdjustmentStates_tags_30,       /* Same as above */
+       sizeof(asn_DEF_srs_PowerControlAdjustmentStates_tags_30)
+               /sizeof(asn_DEF_srs_PowerControlAdjustmentStates_tags_30[0]), /* 2 */
+       { &asn_OER_type_srs_PowerControlAdjustmentStates_constr_30, &asn_PER_type_srs_PowerControlAdjustmentStates_constr_30, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_srs_PowerControlAdjustmentStates_specs_30      /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet, srs_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-ResourceSetId"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet, srs_ResourceIdList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_srs_ResourceIdList_3,
+               0,
+               { &asn_OER_memb_srs_ResourceIdList_constr_3, &asn_PER_memb_srs_ResourceIdList_constr_3,  memb_srs_ResourceIdList_constraint_1 },
+               0, 0, /* No default value */
+               "srs-ResourceIdList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet, resourceType),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_resourceType_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_ResourceSet, usage),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_usage_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "usage"
+               },
+       { ATF_POINTER, 4, offsetof(struct SRS_ResourceSet, alpha),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Alpha,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "alpha"
+               },
+       { ATF_POINTER, 3, offsetof(struct SRS_ResourceSet, p0),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_p0_constr_26, &asn_PER_memb_p0_constr_26,  memb_p0_constraint_1 },
+               0, 0, /* No default value */
+               "p0"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRS_ResourceSet, pathlossReferenceRS),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pathlossReferenceRS_27,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pathlossReferenceRS"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_ResourceSet, srs_PowerControlAdjustmentStates),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_srs_PowerControlAdjustmentStates_30,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs-PowerControlAdjustmentStates"
+               },
+};
+static const int asn_MAP_SRS_ResourceSet_oms_1[] = { 1, 4, 5, 6, 7 };
+static const ber_tlv_tag_t asn_DEF_SRS_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* srs-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* srs-ResourceIdList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* resourceType */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* usage */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* alpha */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* p0 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* pathlossReferenceRS */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* srs-PowerControlAdjustmentStates */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_ResourceSet_specs_1 = {
+       sizeof(struct SRS_ResourceSet),
+       offsetof(struct SRS_ResourceSet, _asn_ctx),
+       asn_MAP_SRS_ResourceSet_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_SRS_ResourceSet_oms_1,  /* Optional members */
+       5, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_ResourceSet = {
+       "SRS-ResourceSet",
+       "SRS-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_ResourceSet_tags_1,
+       sizeof(asn_DEF_SRS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_SRS_ResourceSet_tags_1, /* Same as above */
+       sizeof(asn_DEF_SRS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_ResourceSet_1,
+       8,      /* Elements count */
+       &asn_SPC_SRS_ResourceSet_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-ResourceSet.h b/src/codec_utils/RRC/SRS-ResourceSet.h
new file mode 100644 (file)
index 0000000..378086f
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_ResourceSet_H_
+#define        _SRS_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SRS-ResourceSetId.h"
+#include <NativeEnumerated.h>
+#include "Alpha.h"
+#include <NativeInteger.h>
+#include "SRS-ResourceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "NZP-CSI-RS-ResourceId.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+#include "SSB-Index.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_ResourceSet__resourceType_PR {
+       SRS_ResourceSet__resourceType_PR_NOTHING,       /* No components present */
+       SRS_ResourceSet__resourceType_PR_aperiodic,
+       SRS_ResourceSet__resourceType_PR_semi_persistent,
+       SRS_ResourceSet__resourceType_PR_periodic
+} SRS_ResourceSet__resourceType_PR;
+typedef enum SRS_ResourceSet__usage {
+       SRS_ResourceSet__usage_beamManagement   = 0,
+       SRS_ResourceSet__usage_codebook = 1,
+       SRS_ResourceSet__usage_nonCodebook      = 2,
+       SRS_ResourceSet__usage_antennaSwitching = 3
+} e_SRS_ResourceSet__usage;
+typedef enum SRS_ResourceSet__pathlossReferenceRS_PR {
+       SRS_ResourceSet__pathlossReferenceRS_PR_NOTHING,        /* No components present */
+       SRS_ResourceSet__pathlossReferenceRS_PR_ssb_Index,
+       SRS_ResourceSet__pathlossReferenceRS_PR_csi_RS_Index
+} SRS_ResourceSet__pathlossReferenceRS_PR;
+typedef enum SRS_ResourceSet__srs_PowerControlAdjustmentStates {
+       SRS_ResourceSet__srs_PowerControlAdjustmentStates_sameAsFci2    = 0,
+       SRS_ResourceSet__srs_PowerControlAdjustmentStates_separateClosedLoop    = 1
+} e_SRS_ResourceSet__srs_PowerControlAdjustmentStates;
+
+/* SRS-ResourceSet */
+typedef struct SRS_ResourceSet {
+       SRS_ResourceSetId_t      srs_ResourceSetId;
+       struct SRS_ResourceSet__srs_ResourceIdList {
+               A_SEQUENCE_OF(SRS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_ResourceIdList;
+       struct SRS_ResourceSet__resourceType {
+               SRS_ResourceSet__resourceType_PR present;
+               union SRS_ResourceSet__resourceType_u {
+                       struct SRS_ResourceSet__resourceType__aperiodic {
+                               long     aperiodicSRS_ResourceTrigger;
+                               NZP_CSI_RS_ResourceId_t *csi_RS;        /* OPTIONAL */
+                               long    *slotOffset;    /* OPTIONAL */
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               struct SRS_ResourceSet__resourceType__aperiodic__ext1 {
+                                       struct SRS_ResourceSet__resourceType__aperiodic__ext1__aperiodicSRS_ResourceTriggerList_v1530 {
+                                               A_SEQUENCE_OF(long) list;
+                                               
+                                               /* Context for parsing across buffer boundaries */
+                                               asn_struct_ctx_t _asn_ctx;
+                                       } *aperiodicSRS_ResourceTriggerList_v1530;
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *ext1;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *aperiodic;
+                       struct SRS_ResourceSet__resourceType__semi_persistent {
+                               NZP_CSI_RS_ResourceId_t *associatedCSI_RS;      /* OPTIONAL */
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *semi_persistent;
+                       struct SRS_ResourceSet__resourceType__periodic {
+                               NZP_CSI_RS_ResourceId_t *associatedCSI_RS;      /* OPTIONAL */
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *periodic;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } resourceType;
+       long     usage;
+       Alpha_t *alpha; /* OPTIONAL */
+       long    *p0;    /* OPTIONAL */
+       struct SRS_ResourceSet__pathlossReferenceRS {
+               SRS_ResourceSet__pathlossReferenceRS_PR present;
+               union SRS_ResourceSet__pathlossReferenceRS_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pathlossReferenceRS;
+       long    *srs_PowerControlAdjustmentStates;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_ResourceSet_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_usage_20;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_srs_PowerControlAdjustmentStates_30;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_ResourceSet_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-ResourceSetId.c b/src/codec_utils/RRC/SRS-ResourceSetId.c
new file mode 100644 (file)
index 0000000..16d3d7f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-ResourceSetId.h"
+
+int
+SRS_ResourceSetId_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 <= 15)) {
+               /* 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_SRS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SRS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SRS_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_ResourceSetId = {
+       "SRS-ResourceSetId",
+       "SRS-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SRS_ResourceSetId_tags_1,
+       sizeof(asn_DEF_SRS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_SRS_ResourceSetId_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SRS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_SRS_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SRS_ResourceSetId_constr_1, &asn_PER_type_SRS_ResourceSetId_constr_1, SRS_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SRS-ResourceSetId.h b/src/codec_utils/RRC/SRS-ResourceSetId.h
new file mode 100644 (file)
index 0000000..7207f3e
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_ResourceSetId_H_
+#define        _SRS_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRS-ResourceSetId */
+typedef long    SRS_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SRS_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SRS_ResourceSetId;
+asn_struct_free_f SRS_ResourceSetId_free;
+asn_struct_print_f SRS_ResourceSetId_print;
+asn_constr_check_f SRS_ResourceSetId_constraint;
+ber_type_decoder_f SRS_ResourceSetId_decode_ber;
+der_type_encoder_f SRS_ResourceSetId_encode_der;
+xer_type_decoder_f SRS_ResourceSetId_decode_xer;
+xer_type_encoder_f SRS_ResourceSetId_encode_xer;
+oer_type_decoder_f SRS_ResourceSetId_decode_oer;
+oer_type_encoder_f SRS_ResourceSetId_encode_oer;
+per_type_decoder_f SRS_ResourceSetId_decode_uper;
+per_type_encoder_f SRS_ResourceSetId_encode_uper;
+per_type_decoder_f SRS_ResourceSetId_decode_aper;
+per_type_encoder_f SRS_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-Resources.c b/src/codec_utils/RRC/SRS-Resources.c
new file mode 100644 (file)
index 0000000..e5c48e7
--- /dev/null
@@ -0,0 +1,425 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-Resources.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.
+ */
+static int
+memb_maxNumberAperiodicSRS_PerBWP_PerSlot_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 <= 6)) {
+               /* 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_maxNumberPeriodicSRS_PerBWP_PerSlot_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 <= 6)) {
+               /* 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_maxNumberSP_SRS_PerBWP_PerSlot_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 <= 6)) {
+               /* 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_maxNumberAperiodicSRS_PerBWP_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberAperiodicSRS_PerBWP_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberPeriodicSRS_PerBWP_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberPeriodicSRS_PerBWP_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberSemiPersitentSRS_PerBWP_constr_16 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberSemiPersitentSRS_PerBWP_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_maxNumberSRS_Ports_PerResource_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberSRS_Ports_PerResource_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberAperiodicSRS_PerBWP_PerSlot_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (1..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberAperiodicSRS_PerBWP_PerSlot_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  6 }        /* (1..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberPeriodicSRS_PerBWP_PerSlot_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (1..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberPeriodicSRS_PerBWP_PerSlot_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  6 }        /* (1..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberSP_SRS_PerBWP_PerSlot_constr_22 CC_NOTUSED = {
+       { 1, 1 }        /* (1..6) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberSP_SRS_PerBWP_PerSlot_constr_22 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  6 }        /* (1..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberAperiodicSRS_PerBWP_value2enum_2[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" },
+       { 4,    3,      "n16" }
+};
+static const unsigned int asn_MAP_maxNumberAperiodicSRS_PerBWP_enum2value_2[] = {
+       0,      /* n1(0) */
+       4,      /* n16(4) */
+       1,      /* n2(1) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberAperiodicSRS_PerBWP_specs_2 = {
+       asn_MAP_maxNumberAperiodicSRS_PerBWP_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberAperiodicSRS_PerBWP_enum2value_2,      /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberAperiodicSRS_PerBWP_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_maxNumberAperiodicSRS_PerBWP_2 = {
+       "maxNumberAperiodicSRS-PerBWP",
+       "maxNumberAperiodicSRS-PerBWP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2,
+       sizeof(asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2)
+               /sizeof(asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2,    /* Same as above */
+       sizeof(asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2)
+               /sizeof(asn_DEF_maxNumberAperiodicSRS_PerBWP_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberAperiodicSRS_PerBWP_constr_2, &asn_PER_type_maxNumberAperiodicSRS_PerBWP_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberAperiodicSRS_PerBWP_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberPeriodicSRS_PerBWP_value2enum_9[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" },
+       { 4,    3,      "n16" }
+};
+static const unsigned int asn_MAP_maxNumberPeriodicSRS_PerBWP_enum2value_9[] = {
+       0,      /* n1(0) */
+       4,      /* n16(4) */
+       1,      /* n2(1) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberPeriodicSRS_PerBWP_specs_9 = {
+       asn_MAP_maxNumberPeriodicSRS_PerBWP_value2enum_9,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberPeriodicSRS_PerBWP_enum2value_9,       /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9[] = {
+       (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_maxNumberPeriodicSRS_PerBWP_9 = {
+       "maxNumberPeriodicSRS-PerBWP",
+       "maxNumberPeriodicSRS-PerBWP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9,
+       sizeof(asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9)
+               /sizeof(asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9[0]) - 1, /* 1 */
+       asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9,     /* Same as above */
+       sizeof(asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9)
+               /sizeof(asn_DEF_maxNumberPeriodicSRS_PerBWP_tags_9[0]), /* 2 */
+       { &asn_OER_type_maxNumberPeriodicSRS_PerBWP_constr_9, &asn_PER_type_maxNumberPeriodicSRS_PerBWP_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberPeriodicSRS_PerBWP_specs_9    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberSemiPersitentSRS_PerBWP_value2enum_16[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" },
+       { 3,    2,      "n8" },
+       { 4,    3,      "n16" }
+};
+static const unsigned int asn_MAP_maxNumberSemiPersitentSRS_PerBWP_enum2value_16[] = {
+       0,      /* n1(0) */
+       4,      /* n16(4) */
+       1,      /* n2(1) */
+       2,      /* n4(2) */
+       3       /* n8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberSemiPersitentSRS_PerBWP_specs_16 = {
+       asn_MAP_maxNumberSemiPersitentSRS_PerBWP_value2enum_16, /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberSemiPersitentSRS_PerBWP_enum2value_16, /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16[] = {
+       (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_maxNumberSemiPersitentSRS_PerBWP_16 = {
+       "maxNumberSemiPersitentSRS-PerBWP",
+       "maxNumberSemiPersitentSRS-PerBWP",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16,
+       sizeof(asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16)
+               /sizeof(asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16[0]) - 1, /* 1 */
+       asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16,       /* Same as above */
+       sizeof(asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16)
+               /sizeof(asn_DEF_maxNumberSemiPersitentSRS_PerBWP_tags_16[0]), /* 2 */
+       { &asn_OER_type_maxNumberSemiPersitentSRS_PerBWP_constr_16, &asn_PER_type_maxNumberSemiPersitentSRS_PerBWP_constr_16, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberSemiPersitentSRS_PerBWP_specs_16      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberSRS_Ports_PerResource_value2enum_23[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n4" }
+};
+static const unsigned int asn_MAP_maxNumberSRS_Ports_PerResource_enum2value_23[] = {
+       0,      /* n1(0) */
+       1,      /* n2(1) */
+       2       /* n4(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberSRS_Ports_PerResource_specs_23 = {
+       asn_MAP_maxNumberSRS_Ports_PerResource_value2enum_23,   /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberSRS_Ports_PerResource_enum2value_23,   /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberSRS_Ports_PerResource_tags_23[] = {
+       (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_maxNumberSRS_Ports_PerResource_23 = {
+       "maxNumberSRS-Ports-PerResource",
+       "maxNumberSRS-Ports-PerResource",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberSRS_Ports_PerResource_tags_23,
+       sizeof(asn_DEF_maxNumberSRS_Ports_PerResource_tags_23)
+               /sizeof(asn_DEF_maxNumberSRS_Ports_PerResource_tags_23[0]) - 1, /* 1 */
+       asn_DEF_maxNumberSRS_Ports_PerResource_tags_23, /* Same as above */
+       sizeof(asn_DEF_maxNumberSRS_Ports_PerResource_tags_23)
+               /sizeof(asn_DEF_maxNumberSRS_Ports_PerResource_tags_23[0]), /* 2 */
+       { &asn_OER_type_maxNumberSRS_Ports_PerResource_constr_23, &asn_PER_type_maxNumberSRS_Ports_PerResource_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberSRS_Ports_PerResource_specs_23        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_Resources_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberAperiodicSRS_PerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberAperiodicSRS_PerBWP_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberAperiodicSRS-PerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberAperiodicSRS_PerBWP_PerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberAperiodicSRS_PerBWP_PerSlot_constr_8, &asn_PER_memb_maxNumberAperiodicSRS_PerBWP_PerSlot_constr_8,  memb_maxNumberAperiodicSRS_PerBWP_PerSlot_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberAperiodicSRS-PerBWP-PerSlot"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberPeriodicSRS_PerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberPeriodicSRS_PerBWP_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberPeriodicSRS-PerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberPeriodicSRS_PerBWP_PerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberPeriodicSRS_PerBWP_PerSlot_constr_15, &asn_PER_memb_maxNumberPeriodicSRS_PerBWP_PerSlot_constr_15,  memb_maxNumberPeriodicSRS_PerBWP_PerSlot_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberPeriodicSRS-PerBWP-PerSlot"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberSemiPersitentSRS_PerBWP),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberSemiPersitentSRS_PerBWP_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberSemiPersitentSRS-PerBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberSP_SRS_PerBWP_PerSlot),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberSP_SRS_PerBWP_PerSlot_constr_22, &asn_PER_memb_maxNumberSP_SRS_PerBWP_PerSlot_constr_22,  memb_maxNumberSP_SRS_PerBWP_PerSlot_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberSP-SRS-PerBWP-PerSlot"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_Resources, maxNumberSRS_Ports_PerResource),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberSRS_Ports_PerResource_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberSRS-Ports-PerResource"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SRS_Resources_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_Resources_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberAperiodicSRS-PerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberAperiodicSRS-PerBWP-PerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* maxNumberPeriodicSRS-PerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* maxNumberPeriodicSRS-PerBWP-PerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* maxNumberSemiPersitentSRS-PerBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* maxNumberSP-SRS-PerBWP-PerSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* maxNumberSRS-Ports-PerResource */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_Resources_specs_1 = {
+       sizeof(struct SRS_Resources),
+       offsetof(struct SRS_Resources, _asn_ctx),
+       asn_MAP_SRS_Resources_tag2el_1,
+       7,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_Resources = {
+       "SRS-Resources",
+       "SRS-Resources",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_Resources_tags_1,
+       sizeof(asn_DEF_SRS_Resources_tags_1)
+               /sizeof(asn_DEF_SRS_Resources_tags_1[0]), /* 1 */
+       asn_DEF_SRS_Resources_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SRS_Resources_tags_1)
+               /sizeof(asn_DEF_SRS_Resources_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_Resources_1,
+       7,      /* Elements count */
+       &asn_SPC_SRS_Resources_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-Resources.h b/src/codec_utils/RRC/SRS-Resources.h
new file mode 100644 (file)
index 0000000..e176158
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_Resources_H_
+#define        _SRS_Resources_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_Resources__maxNumberAperiodicSRS_PerBWP {
+       SRS_Resources__maxNumberAperiodicSRS_PerBWP_n1  = 0,
+       SRS_Resources__maxNumberAperiodicSRS_PerBWP_n2  = 1,
+       SRS_Resources__maxNumberAperiodicSRS_PerBWP_n4  = 2,
+       SRS_Resources__maxNumberAperiodicSRS_PerBWP_n8  = 3,
+       SRS_Resources__maxNumberAperiodicSRS_PerBWP_n16 = 4
+} e_SRS_Resources__maxNumberAperiodicSRS_PerBWP;
+typedef enum SRS_Resources__maxNumberPeriodicSRS_PerBWP {
+       SRS_Resources__maxNumberPeriodicSRS_PerBWP_n1   = 0,
+       SRS_Resources__maxNumberPeriodicSRS_PerBWP_n2   = 1,
+       SRS_Resources__maxNumberPeriodicSRS_PerBWP_n4   = 2,
+       SRS_Resources__maxNumberPeriodicSRS_PerBWP_n8   = 3,
+       SRS_Resources__maxNumberPeriodicSRS_PerBWP_n16  = 4
+} e_SRS_Resources__maxNumberPeriodicSRS_PerBWP;
+typedef enum SRS_Resources__maxNumberSemiPersitentSRS_PerBWP {
+       SRS_Resources__maxNumberSemiPersitentSRS_PerBWP_n1      = 0,
+       SRS_Resources__maxNumberSemiPersitentSRS_PerBWP_n2      = 1,
+       SRS_Resources__maxNumberSemiPersitentSRS_PerBWP_n4      = 2,
+       SRS_Resources__maxNumberSemiPersitentSRS_PerBWP_n8      = 3,
+       SRS_Resources__maxNumberSemiPersitentSRS_PerBWP_n16     = 4
+} e_SRS_Resources__maxNumberSemiPersitentSRS_PerBWP;
+typedef enum SRS_Resources__maxNumberSRS_Ports_PerResource {
+       SRS_Resources__maxNumberSRS_Ports_PerResource_n1        = 0,
+       SRS_Resources__maxNumberSRS_Ports_PerResource_n2        = 1,
+       SRS_Resources__maxNumberSRS_Ports_PerResource_n4        = 2
+} e_SRS_Resources__maxNumberSRS_Ports_PerResource;
+
+/* SRS-Resources */
+typedef struct SRS_Resources {
+       long     maxNumberAperiodicSRS_PerBWP;
+       long     maxNumberAperiodicSRS_PerBWP_PerSlot;
+       long     maxNumberPeriodicSRS_PerBWP;
+       long     maxNumberPeriodicSRS_PerBWP_PerSlot;
+       long     maxNumberSemiPersitentSRS_PerBWP;
+       long     maxNumberSP_SRS_PerBWP_PerSlot;
+       long     maxNumberSRS_Ports_PerResource;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_Resources_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberAperiodicSRS_PerBWP_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberPeriodicSRS_PerBWP_9; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberSemiPersitentSRS_PerBWP_16;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberSRS_Ports_PerResource_23;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_Resources;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_Resources_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_Resources_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_Resources_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-SpatialRelationInfo.c b/src/codec_utils/RRC/SRS-SpatialRelationInfo.c
new file mode 100644 (file)
index 0000000..5d31226
--- /dev/null
@@ -0,0 +1,182 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-SpatialRelationInfo.h"
+
+static asn_oer_constraints_t asn_OER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_referenceSignal_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_srs_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_SpatialRelationInfo__referenceSignal__srs, resourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_SpatialRelationInfo__referenceSignal__srs, uplinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkBWP"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_srs_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkBWP */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_srs_specs_6 = {
+       sizeof(struct SRS_SpatialRelationInfo__referenceSignal__srs),
+       offsetof(struct SRS_SpatialRelationInfo__referenceSignal__srs, _asn_ctx),
+       asn_MAP_srs_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_6 = {
+       "srs",
+       "srs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_srs_tags_6,
+       sizeof(asn_DEF_srs_tags_6)
+               /sizeof(asn_DEF_srs_tags_6[0]) - 1, /* 1 */
+       asn_DEF_srs_tags_6,     /* Same as above */
+       sizeof(asn_DEF_srs_tags_6)
+               /sizeof(asn_DEF_srs_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_srs_6,
+       2,      /* Elements count */
+       &asn_SPC_srs_specs_6    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_referenceSignal_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_SpatialRelationInfo__referenceSignal, choice.ssb_Index),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SSB_Index,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-Index"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_SpatialRelationInfo__referenceSignal, choice.csi_RS_Index),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RS-Index"
+               },
+       { ATF_POINTER, 0, offsetof(struct SRS_SpatialRelationInfo__referenceSignal, choice.srs),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_srs_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "srs"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_referenceSignal_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* csi-RS-Index */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* srs */
+};
+static asn_CHOICE_specifics_t asn_SPC_referenceSignal_specs_3 = {
+       sizeof(struct SRS_SpatialRelationInfo__referenceSignal),
+       offsetof(struct SRS_SpatialRelationInfo__referenceSignal, _asn_ctx),
+       offsetof(struct SRS_SpatialRelationInfo__referenceSignal, present),
+       sizeof(((struct SRS_SpatialRelationInfo__referenceSignal *)0)->present),
+       asn_MAP_referenceSignal_tag2el_3,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_referenceSignal_3 = {
+       "referenceSignal",
+       "referenceSignal",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_referenceSignal_constr_3, &asn_PER_type_referenceSignal_constr_3, CHOICE_constraint },
+       asn_MBR_referenceSignal_3,
+       3,      /* Elements count */
+       &asn_SPC_referenceSignal_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_SpatialRelationInfo_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_SpatialRelationInfo, servingCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_SpatialRelationInfo, referenceSignal),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_referenceSignal_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSignal"
+               },
+};
+static const int asn_MAP_SRS_SpatialRelationInfo_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_SRS_SpatialRelationInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_SpatialRelationInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* referenceSignal */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_SpatialRelationInfo_specs_1 = {
+       sizeof(struct SRS_SpatialRelationInfo),
+       offsetof(struct SRS_SpatialRelationInfo, _asn_ctx),
+       asn_MAP_SRS_SpatialRelationInfo_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SRS_SpatialRelationInfo_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_SpatialRelationInfo = {
+       "SRS-SpatialRelationInfo",
+       "SRS-SpatialRelationInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_SpatialRelationInfo_tags_1,
+       sizeof(asn_DEF_SRS_SpatialRelationInfo_tags_1)
+               /sizeof(asn_DEF_SRS_SpatialRelationInfo_tags_1[0]), /* 1 */
+       asn_DEF_SRS_SpatialRelationInfo_tags_1, /* Same as above */
+       sizeof(asn_DEF_SRS_SpatialRelationInfo_tags_1)
+               /sizeof(asn_DEF_SRS_SpatialRelationInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_SpatialRelationInfo_1,
+       2,      /* Elements count */
+       &asn_SPC_SRS_SpatialRelationInfo_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-SpatialRelationInfo.h b/src/codec_utils/RRC/SRS-SpatialRelationInfo.h
new file mode 100644 (file)
index 0000000..21840c7
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_SpatialRelationInfo_H_
+#define        _SRS_SpatialRelationInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include "SSB-Index.h"
+#include "NZP-CSI-RS-ResourceId.h"
+#include "SRS-ResourceId.h"
+#include "BWP-Id.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_SpatialRelationInfo__referenceSignal_PR {
+       SRS_SpatialRelationInfo__referenceSignal_PR_NOTHING,    /* No components present */
+       SRS_SpatialRelationInfo__referenceSignal_PR_ssb_Index,
+       SRS_SpatialRelationInfo__referenceSignal_PR_csi_RS_Index,
+       SRS_SpatialRelationInfo__referenceSignal_PR_srs
+} SRS_SpatialRelationInfo__referenceSignal_PR;
+
+/* SRS-SpatialRelationInfo */
+typedef struct SRS_SpatialRelationInfo {
+       ServCellIndex_t *servingCellId; /* OPTIONAL */
+       struct SRS_SpatialRelationInfo__referenceSignal {
+               SRS_SpatialRelationInfo__referenceSignal_PR present;
+               union SRS_SpatialRelationInfo__referenceSignal_u {
+                       SSB_Index_t      ssb_Index;
+                       NZP_CSI_RS_ResourceId_t  csi_RS_Index;
+                       struct SRS_SpatialRelationInfo__referenceSignal__srs {
+                               SRS_ResourceId_t         resourceId;
+                               BWP_Id_t         uplinkBWP;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *srs;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } referenceSignal;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_SpatialRelationInfo_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_SpatialRelationInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_SpatialRelationInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_SpatialRelationInfo_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_SpatialRelationInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-TPC-CommandConfig.c b/src/codec_utils/RRC/SRS-TPC-CommandConfig.c
new file mode 100644 (file)
index 0000000..ba4f5cc
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-TPC-CommandConfig.h"
+
+static int
+memb_startingBitOfFormat2_3SUL_v1530_constraint_5(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 <= 31)) {
+               /* 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_startingBitOfFormat2_3_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 <= 31)) {
+               /* 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_fieldTypeFormat2_3_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 >= 0 && value <= 1)) {
+               /* 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_startingBitOfFormat2_3SUL_v1530_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (1..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingBitOfFormat2_3SUL_v1530_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (1..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_startingBitOfFormat2_3_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..31) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_startingBitOfFormat2_3_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  1,  31 }       /* (1..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_fieldTypeFormat2_3_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_fieldTypeFormat2_3_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ext1_5[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_TPC_CommandConfig__ext1, startingBitOfFormat2_3SUL_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingBitOfFormat2_3SUL_v1530_constr_6, &asn_PER_memb_startingBitOfFormat2_3SUL_v1530_constr_6,  memb_startingBitOfFormat2_3SUL_v1530_constraint_5 },
+               0, 0, /* No default value */
+               "startingBitOfFormat2-3SUL-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_5[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_5[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* startingBitOfFormat2-3SUL-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_5 = {
+       sizeof(struct SRS_TPC_CommandConfig__ext1),
+       offsetof(struct SRS_TPC_CommandConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_5,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_5,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_5 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_5,
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_5,    /* Same as above */
+       sizeof(asn_DEF_ext1_tags_5)
+               /sizeof(asn_DEF_ext1_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_5,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_5   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_TPC_CommandConfig_1[] = {
+       { ATF_POINTER, 3, offsetof(struct SRS_TPC_CommandConfig, startingBitOfFormat2_3),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_startingBitOfFormat2_3_constr_2, &asn_PER_memb_startingBitOfFormat2_3_constr_2,  memb_startingBitOfFormat2_3_constraint_1 },
+               0, 0, /* No default value */
+               "startingBitOfFormat2-3"
+               },
+       { ATF_POINTER, 2, offsetof(struct SRS_TPC_CommandConfig, fieldTypeFormat2_3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_fieldTypeFormat2_3_constr_3, &asn_PER_memb_fieldTypeFormat2_3_constr_3,  memb_fieldTypeFormat2_3_constraint_1 },
+               0, 0, /* No default value */
+               "fieldTypeFormat2-3"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_TPC_CommandConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_ext1_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_SRS_TPC_CommandConfig_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SRS_TPC_CommandConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_TPC_CommandConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* startingBitOfFormat2-3 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* fieldTypeFormat2-3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_TPC_CommandConfig_specs_1 = {
+       sizeof(struct SRS_TPC_CommandConfig),
+       offsetof(struct SRS_TPC_CommandConfig, _asn_ctx),
+       asn_MAP_SRS_TPC_CommandConfig_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SRS_TPC_CommandConfig_oms_1,    /* Optional members */
+       2, 1,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_TPC_CommandConfig = {
+       "SRS-TPC-CommandConfig",
+       "SRS-TPC-CommandConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_TPC_CommandConfig_tags_1,
+       sizeof(asn_DEF_SRS_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_SRS_TPC_CommandConfig_tags_1[0]), /* 1 */
+       asn_DEF_SRS_TPC_CommandConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SRS_TPC_CommandConfig_tags_1)
+               /sizeof(asn_DEF_SRS_TPC_CommandConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_TPC_CommandConfig_1,
+       3,      /* Elements count */
+       &asn_SPC_SRS_TPC_CommandConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-TPC-CommandConfig.h b/src/codec_utils/RRC/SRS-TPC-CommandConfig.h
new file mode 100644 (file)
index 0000000..9ab517e
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_TPC_CommandConfig_H_
+#define        _SRS_TPC_CommandConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SRS-TPC-CommandConfig */
+typedef struct SRS_TPC_CommandConfig {
+       long    *startingBitOfFormat2_3;        /* OPTIONAL */
+       long    *fieldTypeFormat2_3;    /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct SRS_TPC_CommandConfig__ext1 {
+               long    *startingBitOfFormat2_3SUL_v1530;       /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_TPC_CommandConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_TPC_CommandConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_TPC_CommandConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_TPC_CommandConfig_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_TPC_CommandConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-TPC-PDCCH-Config.c b/src/codec_utils/RRC/SRS-TPC-PDCCH-Config.c
new file mode 100644 (file)
index 0000000..d19a245
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-TPC-PDCCH-Config.h"
+
+#include "SRS-CC-SetIndex.h"
+static int
+memb_srs_CC_SetIndexlist_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 <= 4)) {
+               /* 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_srs_CC_SetIndexlist_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_srs_CC_SetIndexlist_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_srs_CC_SetIndexlist_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_srs_CC_SetIndexlist_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_srs_CC_SetIndexlist_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SRS_CC_SetIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_srs_CC_SetIndexlist_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_srs_CC_SetIndexlist_specs_2 = {
+       sizeof(struct SRS_TPC_PDCCH_Config__srs_CC_SetIndexlist),
+       offsetof(struct SRS_TPC_PDCCH_Config__srs_CC_SetIndexlist, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_srs_CC_SetIndexlist_2 = {
+       "srs-CC-SetIndexlist",
+       "srs-CC-SetIndexlist",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_srs_CC_SetIndexlist_tags_2,
+       sizeof(asn_DEF_srs_CC_SetIndexlist_tags_2)
+               /sizeof(asn_DEF_srs_CC_SetIndexlist_tags_2[0]) - 1, /* 1 */
+       asn_DEF_srs_CC_SetIndexlist_tags_2,     /* Same as above */
+       sizeof(asn_DEF_srs_CC_SetIndexlist_tags_2)
+               /sizeof(asn_DEF_srs_CC_SetIndexlist_tags_2[0]), /* 2 */
+       { &asn_OER_type_srs_CC_SetIndexlist_constr_2, &asn_PER_type_srs_CC_SetIndexlist_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_srs_CC_SetIndexlist_2,
+       1,      /* Single element */
+       &asn_SPC_srs_CC_SetIndexlist_specs_2    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_TPC_PDCCH_Config_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SRS_TPC_PDCCH_Config, srs_CC_SetIndexlist),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_srs_CC_SetIndexlist_2,
+               0,
+               { &asn_OER_memb_srs_CC_SetIndexlist_constr_2, &asn_PER_memb_srs_CC_SetIndexlist_constr_2,  memb_srs_CC_SetIndexlist_constraint_1 },
+               0, 0, /* No default value */
+               "srs-CC-SetIndexlist"
+               },
+};
+static const int asn_MAP_SRS_TPC_PDCCH_Config_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_SRS_TPC_PDCCH_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_TPC_PDCCH_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* srs-CC-SetIndexlist */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_TPC_PDCCH_Config_specs_1 = {
+       sizeof(struct SRS_TPC_PDCCH_Config),
+       offsetof(struct SRS_TPC_PDCCH_Config, _asn_ctx),
+       asn_MAP_SRS_TPC_PDCCH_Config_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_SRS_TPC_PDCCH_Config_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_TPC_PDCCH_Config = {
+       "SRS-TPC-PDCCH-Config",
+       "SRS-TPC-PDCCH-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_TPC_PDCCH_Config_tags_1,
+       sizeof(asn_DEF_SRS_TPC_PDCCH_Config_tags_1)
+               /sizeof(asn_DEF_SRS_TPC_PDCCH_Config_tags_1[0]), /* 1 */
+       asn_DEF_SRS_TPC_PDCCH_Config_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRS_TPC_PDCCH_Config_tags_1)
+               /sizeof(asn_DEF_SRS_TPC_PDCCH_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_TPC_PDCCH_Config_1,
+       1,      /* Elements count */
+       &asn_SPC_SRS_TPC_PDCCH_Config_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-TPC-PDCCH-Config.h b/src/codec_utils/RRC/SRS-TPC-PDCCH-Config.h
new file mode 100644 (file)
index 0000000..9066f2d
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_TPC_PDCCH_Config_H_
+#define        _SRS_TPC_PDCCH_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SRS_CC_SetIndex;
+
+/* SRS-TPC-PDCCH-Config */
+typedef struct SRS_TPC_PDCCH_Config {
+       struct SRS_TPC_PDCCH_Config__srs_CC_SetIndexlist {
+               A_SEQUENCE_OF(struct SRS_CC_SetIndex) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *srs_CC_SetIndexlist;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_TPC_PDCCH_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_TPC_PDCCH_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_TPC_PDCCH_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_TPC_PDCCH_Config_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_TPC_PDCCH_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SRS-TxSwitch.c b/src/codec_utils/RRC/SRS-TxSwitch.c
new file mode 100644 (file)
index 0000000..70d6438
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SRS-TxSwitch.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.
+ */
+static asn_oer_constraints_t asn_OER_type_supportedSRS_TxPortSwitch_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedSRS_TxPortSwitch_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_txSwitchImpactToRx_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_txSwitchImpactToRx_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_supportedSRS_TxPortSwitch_value2enum_2[] = {
+       { 0,    4,      "t1r2" },
+       { 1,    4,      "t1r4" },
+       { 2,    4,      "t2r4" },
+       { 3,    9,      "t1r4-t2r4" },
+       { 4,    8,      "tr-equal" }
+};
+static const unsigned int asn_MAP_supportedSRS_TxPortSwitch_enum2value_2[] = {
+       0,      /* t1r2(0) */
+       1,      /* t1r4(1) */
+       3,      /* t1r4-t2r4(3) */
+       2,      /* t2r4(2) */
+       4       /* tr-equal(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedSRS_TxPortSwitch_specs_2 = {
+       asn_MAP_supportedSRS_TxPortSwitch_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_supportedSRS_TxPortSwitch_enum2value_2, /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedSRS_TxPortSwitch_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_supportedSRS_TxPortSwitch_2 = {
+       "supportedSRS-TxPortSwitch",
+       "supportedSRS-TxPortSwitch",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedSRS_TxPortSwitch_tags_2,
+       sizeof(asn_DEF_supportedSRS_TxPortSwitch_tags_2)
+               /sizeof(asn_DEF_supportedSRS_TxPortSwitch_tags_2[0]) - 1, /* 1 */
+       asn_DEF_supportedSRS_TxPortSwitch_tags_2,       /* Same as above */
+       sizeof(asn_DEF_supportedSRS_TxPortSwitch_tags_2)
+               /sizeof(asn_DEF_supportedSRS_TxPortSwitch_tags_2[0]), /* 2 */
+       { &asn_OER_type_supportedSRS_TxPortSwitch_constr_2, &asn_PER_type_supportedSRS_TxPortSwitch_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedSRS_TxPortSwitch_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_txSwitchImpactToRx_value2enum_8[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_txSwitchImpactToRx_enum2value_8[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_txSwitchImpactToRx_specs_8 = {
+       asn_MAP_txSwitchImpactToRx_value2enum_8,        /* "tag" => N; sorted by tag */
+       asn_MAP_txSwitchImpactToRx_enum2value_8,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_txSwitchImpactToRx_tags_8[] = {
+       (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_txSwitchImpactToRx_8 = {
+       "txSwitchImpactToRx",
+       "txSwitchImpactToRx",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_txSwitchImpactToRx_tags_8,
+       sizeof(asn_DEF_txSwitchImpactToRx_tags_8)
+               /sizeof(asn_DEF_txSwitchImpactToRx_tags_8[0]) - 1, /* 1 */
+       asn_DEF_txSwitchImpactToRx_tags_8,      /* Same as above */
+       sizeof(asn_DEF_txSwitchImpactToRx_tags_8)
+               /sizeof(asn_DEF_txSwitchImpactToRx_tags_8[0]), /* 2 */
+       { &asn_OER_type_txSwitchImpactToRx_constr_8, &asn_PER_type_txSwitchImpactToRx_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_txSwitchImpactToRx_specs_8     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SRS_TxSwitch_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SRS_TxSwitch, supportedSRS_TxPortSwitch),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedSRS_TxPortSwitch_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedSRS-TxPortSwitch"
+               },
+       { ATF_POINTER, 1, offsetof(struct SRS_TxSwitch, txSwitchImpactToRx),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_txSwitchImpactToRx_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "txSwitchImpactToRx"
+               },
+};
+static const int asn_MAP_SRS_TxSwitch_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_SRS_TxSwitch_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SRS_TxSwitch_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedSRS-TxPortSwitch */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* txSwitchImpactToRx */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SRS_TxSwitch_specs_1 = {
+       sizeof(struct SRS_TxSwitch),
+       offsetof(struct SRS_TxSwitch, _asn_ctx),
+       asn_MAP_SRS_TxSwitch_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SRS_TxSwitch_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SRS_TxSwitch = {
+       "SRS-TxSwitch",
+       "SRS-TxSwitch",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SRS_TxSwitch_tags_1,
+       sizeof(asn_DEF_SRS_TxSwitch_tags_1)
+               /sizeof(asn_DEF_SRS_TxSwitch_tags_1[0]), /* 1 */
+       asn_DEF_SRS_TxSwitch_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SRS_TxSwitch_tags_1)
+               /sizeof(asn_DEF_SRS_TxSwitch_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SRS_TxSwitch_1,
+       2,      /* Elements count */
+       &asn_SPC_SRS_TxSwitch_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SRS-TxSwitch.h b/src/codec_utils/RRC/SRS-TxSwitch.h
new file mode 100644 (file)
index 0000000..fedb941
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SRS_TxSwitch_H_
+#define        _SRS_TxSwitch_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SRS_TxSwitch__supportedSRS_TxPortSwitch {
+       SRS_TxSwitch__supportedSRS_TxPortSwitch_t1r2    = 0,
+       SRS_TxSwitch__supportedSRS_TxPortSwitch_t1r4    = 1,
+       SRS_TxSwitch__supportedSRS_TxPortSwitch_t2r4    = 2,
+       SRS_TxSwitch__supportedSRS_TxPortSwitch_t1r4_t2r4       = 3,
+       SRS_TxSwitch__supportedSRS_TxPortSwitch_tr_equal        = 4
+} e_SRS_TxSwitch__supportedSRS_TxPortSwitch;
+typedef enum SRS_TxSwitch__txSwitchImpactToRx {
+       SRS_TxSwitch__txSwitchImpactToRx_true   = 0
+} e_SRS_TxSwitch__txSwitchImpactToRx;
+
+/* SRS-TxSwitch */
+typedef struct SRS_TxSwitch {
+       long     supportedSRS_TxPortSwitch;
+       long    *txSwitchImpactToRx;    /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SRS_TxSwitch_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedSRS_TxPortSwitch_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_txSwitchImpactToRx_8;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SRS_TxSwitch;
+extern asn_SEQUENCE_specifics_t asn_SPC_SRS_TxSwitch_specs_1;
+extern asn_TYPE_member_t asn_MBR_SRS_TxSwitch_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SRS_TxSwitch_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SS-RSSI-Measurement.c b/src/codec_utils/RRC/SS-RSSI-Measurement.c
new file mode 100644 (file)
index 0000000..76be169
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SS-RSSI-Measurement.h"
+
+static int
+memb_measurementSlots_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 >= 1 && size <= 80)) {
+               /* 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_endSymbol_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 >= 0 && value <= 3)) {
+               /* 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_measurementSlots_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..80)) */};
+static asn_per_constraints_t asn_PER_memb_measurementSlots_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       7,  7,  1,  80 }       /* (SIZE(1..80)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_endSymbol_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_endSymbol_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SS_RSSI_Measurement_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SS_RSSI_Measurement, measurementSlots),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_measurementSlots_constr_2, &asn_PER_memb_measurementSlots_constr_2,  memb_measurementSlots_constraint_1 },
+               0, 0, /* No default value */
+               "measurementSlots"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SS_RSSI_Measurement, endSymbol),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_endSymbol_constr_3, &asn_PER_memb_endSymbol_constr_3,  memb_endSymbol_constraint_1 },
+               0, 0, /* No default value */
+               "endSymbol"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SS_RSSI_Measurement_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SS_RSSI_Measurement_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* endSymbol */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SS_RSSI_Measurement_specs_1 = {
+       sizeof(struct SS_RSSI_Measurement),
+       offsetof(struct SS_RSSI_Measurement, _asn_ctx),
+       asn_MAP_SS_RSSI_Measurement_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SS_RSSI_Measurement = {
+       "SS-RSSI-Measurement",
+       "SS-RSSI-Measurement",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SS_RSSI_Measurement_tags_1,
+       sizeof(asn_DEF_SS_RSSI_Measurement_tags_1)
+               /sizeof(asn_DEF_SS_RSSI_Measurement_tags_1[0]), /* 1 */
+       asn_DEF_SS_RSSI_Measurement_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SS_RSSI_Measurement_tags_1)
+               /sizeof(asn_DEF_SS_RSSI_Measurement_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SS_RSSI_Measurement_1,
+       2,      /* Elements count */
+       &asn_SPC_SS_RSSI_Measurement_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SS-RSSI-Measurement.h b/src/codec_utils/RRC/SS-RSSI-Measurement.h
new file mode 100644 (file)
index 0000000..9dc6ca6
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SS_RSSI_Measurement_H_
+#define        _SS_RSSI_Measurement_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SS-RSSI-Measurement */
+typedef struct SS_RSSI_Measurement {
+       BIT_STRING_t     measurementSlots;
+       long     endSymbol;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SS_RSSI_Measurement_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SS_RSSI_Measurement;
+extern asn_SEQUENCE_specifics_t asn_SPC_SS_RSSI_Measurement_specs_1;
+extern asn_TYPE_member_t asn_MBR_SS_RSSI_Measurement_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SS_RSSI_Measurement_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SSB-ConfigMobility.c b/src/codec_utils/RRC/SSB-ConfigMobility.c
new file mode 100644 (file)
index 0000000..133bb89
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SSB-ConfigMobility.h"
+
+#include "SS-RSSI-Measurement.h"
+#include "SSB-ToMeasure.h"
+static asn_oer_constraints_t asn_OER_type_ssb_ToMeasure_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_ToMeasure_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_ssb_ToMeasure_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_ConfigMobility__ssb_ToMeasure, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct SSB_ConfigMobility__ssb_ToMeasure, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_SSB_ToMeasure,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ssb_ToMeasure_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_ssb_ToMeasure_specs_2 = {
+       sizeof(struct SSB_ConfigMobility__ssb_ToMeasure),
+       offsetof(struct SSB_ConfigMobility__ssb_ToMeasure, _asn_ctx),
+       offsetof(struct SSB_ConfigMobility__ssb_ToMeasure, present),
+       sizeof(((struct SSB_ConfigMobility__ssb_ToMeasure *)0)->present),
+       asn_MAP_ssb_ToMeasure_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_ToMeasure_2 = {
+       "ssb-ToMeasure",
+       "ssb-ToMeasure",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_ssb_ToMeasure_constr_2, &asn_PER_type_ssb_ToMeasure_constr_2, CHOICE_constraint },
+       asn_MBR_ssb_ToMeasure_2,
+       2,      /* Elements count */
+       &asn_SPC_ssb_ToMeasure_specs_2  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SSB_ConfigMobility_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SSB_ConfigMobility, ssb_ToMeasure),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ssb_ToMeasure_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-ToMeasure"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_ConfigMobility, deriveSSB_IndexFromCell),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "deriveSSB-IndexFromCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct SSB_ConfigMobility, ss_RSSI_Measurement),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SS_RSSI_Measurement,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ss-RSSI-Measurement"
+               },
+};
+static const int asn_MAP_SSB_ConfigMobility_oms_1[] = { 0, 2 };
+static const ber_tlv_tag_t asn_DEF_SSB_ConfigMobility_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SSB_ConfigMobility_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-ToMeasure */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* deriveSSB-IndexFromCell */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ss-RSSI-Measurement */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SSB_ConfigMobility_specs_1 = {
+       sizeof(struct SSB_ConfigMobility),
+       offsetof(struct SSB_ConfigMobility, _asn_ctx),
+       asn_MAP_SSB_ConfigMobility_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SSB_ConfigMobility_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SSB_ConfigMobility = {
+       "SSB-ConfigMobility",
+       "SSB-ConfigMobility",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SSB_ConfigMobility_tags_1,
+       sizeof(asn_DEF_SSB_ConfigMobility_tags_1)
+               /sizeof(asn_DEF_SSB_ConfigMobility_tags_1[0]), /* 1 */
+       asn_DEF_SSB_ConfigMobility_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SSB_ConfigMobility_tags_1)
+               /sizeof(asn_DEF_SSB_ConfigMobility_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SSB_ConfigMobility_1,
+       3,      /* Elements count */
+       &asn_SPC_SSB_ConfigMobility_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SSB-ConfigMobility.h b/src/codec_utils/RRC/SSB-ConfigMobility.h
new file mode 100644 (file)
index 0000000..e1c449b
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SSB_ConfigMobility_H_
+#define        _SSB_ConfigMobility_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SSB_ConfigMobility__ssb_ToMeasure_PR {
+       SSB_ConfigMobility__ssb_ToMeasure_PR_NOTHING,   /* No components present */
+       SSB_ConfigMobility__ssb_ToMeasure_PR_release,
+       SSB_ConfigMobility__ssb_ToMeasure_PR_setup
+} SSB_ConfigMobility__ssb_ToMeasure_PR;
+
+/* Forward declarations */
+struct SS_RSSI_Measurement;
+struct SSB_ToMeasure;
+
+/* SSB-ConfigMobility */
+typedef struct SSB_ConfigMobility {
+       struct SSB_ConfigMobility__ssb_ToMeasure {
+               SSB_ConfigMobility__ssb_ToMeasure_PR present;
+               union SSB_ConfigMobility__ssb_ToMeasure_u {
+                       NULL_t   release;
+                       struct SSB_ToMeasure    *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ssb_ToMeasure;
+       BOOLEAN_t        deriveSSB_IndexFromCell;
+       struct SS_RSSI_Measurement      *ss_RSSI_Measurement;   /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SSB_ConfigMobility_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SSB_ConfigMobility;
+extern asn_SEQUENCE_specifics_t asn_SPC_SSB_ConfigMobility_specs_1;
+extern asn_TYPE_member_t asn_MBR_SSB_ConfigMobility_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SSB_ConfigMobility_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SSB-Index.c b/src/codec_utils/RRC/SSB-Index.c
new file mode 100644 (file)
index 0000000..bcae387
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SSB-Index.h"
+
+int
+SSB_Index_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_SSB_Index_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..63) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SSB_Index_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_SSB_Index_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SSB_Index = {
+       "SSB-Index",
+       "SSB-Index",
+       &asn_OP_NativeInteger,
+       asn_DEF_SSB_Index_tags_1,
+       sizeof(asn_DEF_SSB_Index_tags_1)
+               /sizeof(asn_DEF_SSB_Index_tags_1[0]), /* 1 */
+       asn_DEF_SSB_Index_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SSB_Index_tags_1)
+               /sizeof(asn_DEF_SSB_Index_tags_1[0]), /* 1 */
+       { &asn_OER_type_SSB_Index_constr_1, &asn_PER_type_SSB_Index_constr_1, SSB_Index_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SSB-Index.h b/src/codec_utils/RRC/SSB-Index.h
new file mode 100644 (file)
index 0000000..b0cafcc
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SSB_Index_H_
+#define        _SSB_Index_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SSB-Index */
+typedef long    SSB_Index_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SSB_Index_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SSB_Index;
+asn_struct_free_f SSB_Index_free;
+asn_struct_print_f SSB_Index_print;
+asn_constr_check_f SSB_Index_constraint;
+ber_type_decoder_f SSB_Index_decode_ber;
+der_type_encoder_f SSB_Index_encode_der;
+xer_type_decoder_f SSB_Index_decode_xer;
+xer_type_encoder_f SSB_Index_encode_xer;
+oer_type_decoder_f SSB_Index_decode_oer;
+oer_type_encoder_f SSB_Index_encode_oer;
+per_type_decoder_f SSB_Index_decode_uper;
+per_type_encoder_f SSB_Index_encode_uper;
+per_type_decoder_f SSB_Index_decode_aper;
+per_type_encoder_f SSB_Index_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SSB_Index_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SSB-MTC.c b/src/codec_utils/RRC/SSB-MTC.c
new file mode 100644 (file)
index 0000000..332d81f
--- /dev/null
@@ -0,0 +1,410 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SSB-MTC.h"
+
+static int
+memb_sf5_constraint_2(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 <= 4)) {
+               /* 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_sf10_constraint_2(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 <= 9)) {
+               /* 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_sf20_constraint_2(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 <= 19)) {
+               /* 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_sf40_constraint_2(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 <= 39)) {
+               /* 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_sf80_constraint_2(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 <= 79)) {
+               /* 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_sf160_constraint_2(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 <= 159)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_memb_sf5_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf5_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sf10_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf10_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sf20_constr_5 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf20_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sf40_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf40_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sf80_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf80_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sf160_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sf160_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_periodicityAndOffset_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicityAndOffset_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_duration_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_duration_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_periodicityAndOffset_2[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf5),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf5_constr_3, &asn_PER_memb_sf5_constr_3,  memb_sf5_constraint_2 },
+               0, 0, /* No default value */
+               "sf5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf10),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf10_constr_4, &asn_PER_memb_sf10_constr_4,  memb_sf10_constraint_2 },
+               0, 0, /* No default value */
+               "sf10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf20),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf20_constr_5, &asn_PER_memb_sf20_constr_5,  memb_sf20_constraint_2 },
+               0, 0, /* No default value */
+               "sf20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf40),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf40_constr_6, &asn_PER_memb_sf40_constr_6,  memb_sf40_constraint_2 },
+               0, 0, /* No default value */
+               "sf40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf80),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf80_constr_7, &asn_PER_memb_sf80_constr_7,  memb_sf80_constraint_2 },
+               0, 0, /* No default value */
+               "sf80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC__periodicityAndOffset, choice.sf160),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sf160_constr_8, &asn_PER_memb_sf160_constr_8,  memb_sf160_constraint_2 },
+               0, 0, /* No default value */
+               "sf160"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodicityAndOffset_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sf5 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sf10 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sf20 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sf40 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sf80 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* sf160 */
+};
+static asn_CHOICE_specifics_t asn_SPC_periodicityAndOffset_specs_2 = {
+       sizeof(struct SSB_MTC__periodicityAndOffset),
+       offsetof(struct SSB_MTC__periodicityAndOffset, _asn_ctx),
+       offsetof(struct SSB_MTC__periodicityAndOffset, present),
+       sizeof(((struct SSB_MTC__periodicityAndOffset *)0)->present),
+       asn_MAP_periodicityAndOffset_tag2el_2,
+       6,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodicityAndOffset_2 = {
+       "periodicityAndOffset",
+       "periodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_periodicityAndOffset_constr_2, &asn_PER_type_periodicityAndOffset_constr_2, CHOICE_constraint },
+       asn_MBR_periodicityAndOffset_2,
+       6,      /* Elements count */
+       &asn_SPC_periodicityAndOffset_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_duration_value2enum_9[] = {
+       { 0,    3,      "sf1" },
+       { 1,    3,      "sf2" },
+       { 2,    3,      "sf3" },
+       { 3,    3,      "sf4" },
+       { 4,    3,      "sf5" }
+};
+static const unsigned int asn_MAP_duration_enum2value_9[] = {
+       0,      /* sf1(0) */
+       1,      /* sf2(1) */
+       2,      /* sf3(2) */
+       3,      /* sf4(3) */
+       4       /* sf5(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_duration_specs_9 = {
+       asn_MAP_duration_value2enum_9,  /* "tag" => N; sorted by tag */
+       asn_MAP_duration_enum2value_9,  /* N => "tag"; sorted by N */
+       5,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_duration_tags_9[] = {
+       (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_duration_9 = {
+       "duration",
+       "duration",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_duration_tags_9,
+       sizeof(asn_DEF_duration_tags_9)
+               /sizeof(asn_DEF_duration_tags_9[0]) - 1, /* 1 */
+       asn_DEF_duration_tags_9,        /* Same as above */
+       sizeof(asn_DEF_duration_tags_9)
+               /sizeof(asn_DEF_duration_tags_9[0]), /* 2 */
+       { &asn_OER_type_duration_constr_9, &asn_PER_type_duration_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_duration_specs_9       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SSB_MTC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC, periodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_periodicityAndOffset_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC, duration),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_duration_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "duration"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SSB_MTC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SSB_MTC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* periodicityAndOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* duration */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SSB_MTC_specs_1 = {
+       sizeof(struct SSB_MTC),
+       offsetof(struct SSB_MTC, _asn_ctx),
+       asn_MAP_SSB_MTC_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SSB_MTC = {
+       "SSB-MTC",
+       "SSB-MTC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SSB_MTC_tags_1,
+       sizeof(asn_DEF_SSB_MTC_tags_1)
+               /sizeof(asn_DEF_SSB_MTC_tags_1[0]), /* 1 */
+       asn_DEF_SSB_MTC_tags_1, /* Same as above */
+       sizeof(asn_DEF_SSB_MTC_tags_1)
+               /sizeof(asn_DEF_SSB_MTC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SSB_MTC_1,
+       2,      /* Elements count */
+       &asn_SPC_SSB_MTC_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SSB-MTC.h b/src/codec_utils/RRC/SSB-MTC.h
new file mode 100644 (file)
index 0000000..ce6dcf5
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SSB_MTC_H_
+#define        _SSB_MTC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SSB_MTC__periodicityAndOffset_PR {
+       SSB_MTC__periodicityAndOffset_PR_NOTHING,       /* No components present */
+       SSB_MTC__periodicityAndOffset_PR_sf5,
+       SSB_MTC__periodicityAndOffset_PR_sf10,
+       SSB_MTC__periodicityAndOffset_PR_sf20,
+       SSB_MTC__periodicityAndOffset_PR_sf40,
+       SSB_MTC__periodicityAndOffset_PR_sf80,
+       SSB_MTC__periodicityAndOffset_PR_sf160
+} SSB_MTC__periodicityAndOffset_PR;
+typedef enum SSB_MTC__duration {
+       SSB_MTC__duration_sf1   = 0,
+       SSB_MTC__duration_sf2   = 1,
+       SSB_MTC__duration_sf3   = 2,
+       SSB_MTC__duration_sf4   = 3,
+       SSB_MTC__duration_sf5   = 4
+} e_SSB_MTC__duration;
+
+/* SSB-MTC */
+typedef struct SSB_MTC {
+       struct SSB_MTC__periodicityAndOffset {
+               SSB_MTC__periodicityAndOffset_PR present;
+               union SSB_MTC__periodicityAndOffset_u {
+                       long     sf5;
+                       long     sf10;
+                       long     sf20;
+                       long     sf40;
+                       long     sf80;
+                       long     sf160;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } periodicityAndOffset;
+       long     duration;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SSB_MTC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_duration_9;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SSB_MTC;
+extern asn_SEQUENCE_specifics_t asn_SPC_SSB_MTC_specs_1;
+extern asn_TYPE_member_t asn_MBR_SSB_MTC_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SSB_MTC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SSB-MTC2.c b/src/codec_utils/RRC/SSB-MTC2.c
new file mode 100644 (file)
index 0000000..58879bb
--- /dev/null
@@ -0,0 +1,202 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SSB-MTC2.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_pci_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 <= 64)) {
+               /* 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_pci_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_pci_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_periodicity_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicity_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_pci_List_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_memb_pci_List_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_pci_List_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_pci_List_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_pci_List_specs_2 = {
+       sizeof(struct SSB_MTC2__pci_List),
+       offsetof(struct SSB_MTC2__pci_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pci_List_2 = {
+       "pci-List",
+       "pci-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_pci_List_tags_2,
+       sizeof(asn_DEF_pci_List_tags_2)
+               /sizeof(asn_DEF_pci_List_tags_2[0]) - 1, /* 1 */
+       asn_DEF_pci_List_tags_2,        /* Same as above */
+       sizeof(asn_DEF_pci_List_tags_2)
+               /sizeof(asn_DEF_pci_List_tags_2[0]), /* 2 */
+       { &asn_OER_type_pci_List_constr_2, &asn_PER_type_pci_List_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_pci_List_2,
+       1,      /* Single element */
+       &asn_SPC_pci_List_specs_2       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_periodicity_value2enum_4[] = {
+       { 0,    3,      "sf5" },
+       { 1,    4,      "sf10" },
+       { 2,    4,      "sf20" },
+       { 3,    4,      "sf40" },
+       { 4,    4,      "sf80" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_periodicity_enum2value_4[] = {
+       1,      /* sf10(1) */
+       2,      /* sf20(2) */
+       3,      /* sf40(3) */
+       0,      /* sf5(0) */
+       4,      /* sf80(4) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5       /* spare3(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_periodicity_specs_4 = {
+       asn_MAP_periodicity_value2enum_4,       /* "tag" => N; sorted by tag */
+       asn_MAP_periodicity_enum2value_4,       /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_periodicity_tags_4[] = {
+       (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_periodicity_4 = {
+       "periodicity",
+       "periodicity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_periodicity_tags_4,
+       sizeof(asn_DEF_periodicity_tags_4)
+               /sizeof(asn_DEF_periodicity_tags_4[0]) - 1, /* 1 */
+       asn_DEF_periodicity_tags_4,     /* Same as above */
+       sizeof(asn_DEF_periodicity_tags_4)
+               /sizeof(asn_DEF_periodicity_tags_4[0]), /* 2 */
+       { &asn_OER_type_periodicity_constr_4, &asn_PER_type_periodicity_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_periodicity_specs_4    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SSB_MTC2_1[] = {
+       { ATF_POINTER, 1, offsetof(struct SSB_MTC2, pci_List),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_pci_List_2,
+               0,
+               { &asn_OER_memb_pci_List_constr_2, &asn_PER_memb_pci_List_constr_2,  memb_pci_List_constraint_1 },
+               0, 0, /* No default value */
+               "pci-List"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_MTC2, periodicity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_periodicity_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicity"
+               },
+};
+static const int asn_MAP_SSB_MTC2_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_SSB_MTC2_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SSB_MTC2_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pci-List */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* periodicity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SSB_MTC2_specs_1 = {
+       sizeof(struct SSB_MTC2),
+       offsetof(struct SSB_MTC2, _asn_ctx),
+       asn_MAP_SSB_MTC2_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SSB_MTC2_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SSB_MTC2 = {
+       "SSB-MTC2",
+       "SSB-MTC2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SSB_MTC2_tags_1,
+       sizeof(asn_DEF_SSB_MTC2_tags_1)
+               /sizeof(asn_DEF_SSB_MTC2_tags_1[0]), /* 1 */
+       asn_DEF_SSB_MTC2_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SSB_MTC2_tags_1)
+               /sizeof(asn_DEF_SSB_MTC2_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SSB_MTC2_1,
+       2,      /* Elements count */
+       &asn_SPC_SSB_MTC2_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SSB-MTC2.h b/src/codec_utils/RRC/SSB-MTC2.h
new file mode 100644 (file)
index 0000000..f717a31
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SSB_MTC2_H_
+#define        _SSB_MTC2_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "PhysCellId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SSB_MTC2__periodicity {
+       SSB_MTC2__periodicity_sf5       = 0,
+       SSB_MTC2__periodicity_sf10      = 1,
+       SSB_MTC2__periodicity_sf20      = 2,
+       SSB_MTC2__periodicity_sf40      = 3,
+       SSB_MTC2__periodicity_sf80      = 4,
+       SSB_MTC2__periodicity_spare3    = 5,
+       SSB_MTC2__periodicity_spare2    = 6,
+       SSB_MTC2__periodicity_spare1    = 7
+} e_SSB_MTC2__periodicity;
+
+/* SSB-MTC2 */
+typedef struct SSB_MTC2 {
+       struct SSB_MTC2__pci_List {
+               A_SEQUENCE_OF(PhysCellId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pci_List;
+       long     periodicity;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SSB_MTC2_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_periodicity_4; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SSB_MTC2;
+extern asn_SEQUENCE_specifics_t asn_SPC_SSB_MTC2_specs_1;
+extern asn_TYPE_member_t asn_MBR_SSB_MTC2_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SSB_MTC2_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SSB-ToMeasure.c b/src/codec_utils/RRC/SSB-ToMeasure.c
new file mode 100644 (file)
index 0000000..5a90b4e
--- /dev/null
@@ -0,0 +1,192 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SSB-ToMeasure.h"
+
+static int
+memb_shortBitmap_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 == 4)) {
+               /* 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_mediumBitmap_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 == 8)) {
+               /* 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_longBitmap_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 == 64)) {
+               /* 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_shortBitmap_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_shortBitmap_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mediumBitmap_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_mediumBitmap_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_longBitmap_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_longBitmap_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_SSB_ToMeasure_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SSB_ToMeasure_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_SSB_ToMeasure_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_ToMeasure, choice.shortBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_shortBitmap_constr_2, &asn_PER_memb_shortBitmap_constr_2,  memb_shortBitmap_constraint_1 },
+               0, 0, /* No default value */
+               "shortBitmap"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_ToMeasure, choice.mediumBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_mediumBitmap_constr_3, &asn_PER_memb_mediumBitmap_constr_3,  memb_mediumBitmap_constraint_1 },
+               0, 0, /* No default value */
+               "mediumBitmap"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SSB_ToMeasure, choice.longBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_longBitmap_constr_4, &asn_PER_memb_longBitmap_constr_4,  memb_longBitmap_constraint_1 },
+               0, 0, /* No default value */
+               "longBitmap"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_SSB_ToMeasure_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shortBitmap */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mediumBitmap */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longBitmap */
+};
+asn_CHOICE_specifics_t asn_SPC_SSB_ToMeasure_specs_1 = {
+       sizeof(struct SSB_ToMeasure),
+       offsetof(struct SSB_ToMeasure, _asn_ctx),
+       offsetof(struct SSB_ToMeasure, present),
+       sizeof(((struct SSB_ToMeasure *)0)->present),
+       asn_MAP_SSB_ToMeasure_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_SSB_ToMeasure = {
+       "SSB-ToMeasure",
+       "SSB-ToMeasure",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_SSB_ToMeasure_constr_1, &asn_PER_type_SSB_ToMeasure_constr_1, CHOICE_constraint },
+       asn_MBR_SSB_ToMeasure_1,
+       3,      /* Elements count */
+       &asn_SPC_SSB_ToMeasure_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SSB-ToMeasure.h b/src/codec_utils/RRC/SSB-ToMeasure.h
new file mode 100644 (file)
index 0000000..59ff39d
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SSB_ToMeasure_H_
+#define        _SSB_ToMeasure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SSB_ToMeasure_PR {
+       SSB_ToMeasure_PR_NOTHING,       /* No components present */
+       SSB_ToMeasure_PR_shortBitmap,
+       SSB_ToMeasure_PR_mediumBitmap,
+       SSB_ToMeasure_PR_longBitmap
+} SSB_ToMeasure_PR;
+
+/* SSB-ToMeasure */
+typedef struct SSB_ToMeasure {
+       SSB_ToMeasure_PR present;
+       union SSB_ToMeasure_u {
+               BIT_STRING_t     shortBitmap;
+               BIT_STRING_t     mediumBitmap;
+               BIT_STRING_t     longBitmap;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SSB_ToMeasure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SSB_ToMeasure;
+extern asn_CHOICE_specifics_t asn_SPC_SSB_ToMeasure_specs_1;
+extern asn_TYPE_member_t asn_MBR_SSB_ToMeasure_1[3];
+extern asn_per_constraints_t asn_PER_type_SSB_ToMeasure_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SSB_ToMeasure_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingInfo.c b/src/codec_utils/RRC/SchedulingInfo.c
new file mode 100644 (file)
index 0000000..fd90672
--- /dev/null
@@ -0,0 +1,178 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingInfo.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.
+ */
+static asn_oer_constraints_t asn_OER_type_si_BroadcastStatus_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_si_BroadcastStatus_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_si_Periodicity_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_si_Periodicity_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_si_BroadcastStatus_value2enum_2[] = {
+       { 0,    12,     "broadcasting" },
+       { 1,    15,     "notBroadcasting" }
+};
+static const unsigned int asn_MAP_si_BroadcastStatus_enum2value_2[] = {
+       0,      /* broadcasting(0) */
+       1       /* notBroadcasting(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_si_BroadcastStatus_specs_2 = {
+       asn_MAP_si_BroadcastStatus_value2enum_2,        /* "tag" => N; sorted by tag */
+       asn_MAP_si_BroadcastStatus_enum2value_2,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_si_BroadcastStatus_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_si_BroadcastStatus_2 = {
+       "si-BroadcastStatus",
+       "si-BroadcastStatus",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_si_BroadcastStatus_tags_2,
+       sizeof(asn_DEF_si_BroadcastStatus_tags_2)
+               /sizeof(asn_DEF_si_BroadcastStatus_tags_2[0]) - 1, /* 1 */
+       asn_DEF_si_BroadcastStatus_tags_2,      /* Same as above */
+       sizeof(asn_DEF_si_BroadcastStatus_tags_2)
+               /sizeof(asn_DEF_si_BroadcastStatus_tags_2[0]), /* 2 */
+       { &asn_OER_type_si_BroadcastStatus_constr_2, &asn_PER_type_si_BroadcastStatus_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_si_BroadcastStatus_specs_2     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_si_Periodicity_value2enum_5[] = {
+       { 0,    3,      "rf8" },
+       { 1,    4,      "rf16" },
+       { 2,    4,      "rf32" },
+       { 3,    4,      "rf64" },
+       { 4,    5,      "rf128" },
+       { 5,    5,      "rf256" },
+       { 6,    5,      "rf512" }
+};
+static const unsigned int asn_MAP_si_Periodicity_enum2value_5[] = {
+       4,      /* rf128(4) */
+       1,      /* rf16(1) */
+       5,      /* rf256(5) */
+       2,      /* rf32(2) */
+       6,      /* rf512(6) */
+       3,      /* rf64(3) */
+       0       /* rf8(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_si_Periodicity_specs_5 = {
+       asn_MAP_si_Periodicity_value2enum_5,    /* "tag" => N; sorted by tag */
+       asn_MAP_si_Periodicity_enum2value_5,    /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_si_Periodicity_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_si_Periodicity_5 = {
+       "si-Periodicity",
+       "si-Periodicity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_si_Periodicity_tags_5,
+       sizeof(asn_DEF_si_Periodicity_tags_5)
+               /sizeof(asn_DEF_si_Periodicity_tags_5[0]) - 1, /* 1 */
+       asn_DEF_si_Periodicity_tags_5,  /* Same as above */
+       sizeof(asn_DEF_si_Periodicity_tags_5)
+               /sizeof(asn_DEF_si_Periodicity_tags_5[0]), /* 2 */
+       { &asn_OER_type_si_Periodicity_constr_5, &asn_PER_type_si_Periodicity_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_si_Periodicity_specs_5 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SchedulingInfo_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, si_BroadcastStatus),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_si_BroadcastStatus_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-BroadcastStatus"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, si_Periodicity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_si_Periodicity_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "si-Periodicity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, sib_MappingInfo),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB_Mapping,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib-MappingInfo"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SchedulingInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SchedulingInfo_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* si-BroadcastStatus */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-Periodicity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sib-MappingInfo */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SchedulingInfo_specs_1 = {
+       sizeof(struct SchedulingInfo),
+       offsetof(struct SchedulingInfo, _asn_ctx),
+       asn_MAP_SchedulingInfo_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingInfo = {
+       "SchedulingInfo",
+       "SchedulingInfo",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SchedulingInfo_tags_1,
+       sizeof(asn_DEF_SchedulingInfo_tags_1)
+               /sizeof(asn_DEF_SchedulingInfo_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingInfo_tags_1,  /* Same as above */
+       sizeof(asn_DEF_SchedulingInfo_tags_1)
+               /sizeof(asn_DEF_SchedulingInfo_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SchedulingInfo_1,
+       3,      /* Elements count */
+       &asn_SPC_SchedulingInfo_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingInfo.h b/src/codec_utils/RRC/SchedulingInfo.h
new file mode 100644 (file)
index 0000000..6542290
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingInfo_H_
+#define        _SchedulingInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include "SIB-Mapping.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SchedulingInfo__si_BroadcastStatus {
+       SchedulingInfo__si_BroadcastStatus_broadcasting = 0,
+       SchedulingInfo__si_BroadcastStatus_notBroadcasting      = 1
+} e_SchedulingInfo__si_BroadcastStatus;
+typedef enum SchedulingInfo__si_Periodicity {
+       SchedulingInfo__si_Periodicity_rf8      = 0,
+       SchedulingInfo__si_Periodicity_rf16     = 1,
+       SchedulingInfo__si_Periodicity_rf32     = 2,
+       SchedulingInfo__si_Periodicity_rf64     = 3,
+       SchedulingInfo__si_Periodicity_rf128    = 4,
+       SchedulingInfo__si_Periodicity_rf256    = 5,
+       SchedulingInfo__si_Periodicity_rf512    = 6
+} e_SchedulingInfo__si_Periodicity;
+
+/* SchedulingInfo */
+typedef struct SchedulingInfo {
+       long     si_BroadcastStatus;
+       long     si_Periodicity;
+       SIB_Mapping_t    sib_MappingInfo;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SchedulingInfo_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_si_BroadcastStatus_2;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_si_Periodicity_5;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingInfo;
+extern asn_SEQUENCE_specifics_t asn_SPC_SchedulingInfo_specs_1;
+extern asn_TYPE_member_t asn_MBR_SchedulingInfo_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingRequestConfig.c b/src/codec_utils/RRC/SchedulingRequestConfig.c
new file mode 100644 (file)
index 0000000..2ae608f
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingRequestConfig.h"
+
+#include "SchedulingRequestToAddMod.h"
+static int
+memb_schedulingRequestToAddModList_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 <= 8)) {
+               /* 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_schedulingRequestToReleaseList_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 <= 8)) {
+               /* 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_schedulingRequestToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_schedulingRequestToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_schedulingRequestToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_type_schedulingRequestToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_schedulingRequestToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_schedulingRequestToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_schedulingRequestToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+static asn_per_constraints_t asn_PER_memb_schedulingRequestToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_schedulingRequestToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SchedulingRequestToAddMod,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_schedulingRequestToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_schedulingRequestToAddModList_specs_2 = {
+       sizeof(struct SchedulingRequestConfig__schedulingRequestToAddModList),
+       offsetof(struct SchedulingRequestConfig__schedulingRequestToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingRequestToAddModList_2 = {
+       "schedulingRequestToAddModList",
+       "schedulingRequestToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_schedulingRequestToAddModList_tags_2,
+       sizeof(asn_DEF_schedulingRequestToAddModList_tags_2)
+               /sizeof(asn_DEF_schedulingRequestToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_schedulingRequestToAddModList_tags_2,   /* Same as above */
+       sizeof(asn_DEF_schedulingRequestToAddModList_tags_2)
+               /sizeof(asn_DEF_schedulingRequestToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_schedulingRequestToAddModList_constr_2, &asn_PER_type_schedulingRequestToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_schedulingRequestToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_schedulingRequestToAddModList_specs_2  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_schedulingRequestToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_SchedulingRequestId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_schedulingRequestToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_schedulingRequestToReleaseList_specs_4 = {
+       sizeof(struct SchedulingRequestConfig__schedulingRequestToReleaseList),
+       offsetof(struct SchedulingRequestConfig__schedulingRequestToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_schedulingRequestToReleaseList_4 = {
+       "schedulingRequestToReleaseList",
+       "schedulingRequestToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_schedulingRequestToReleaseList_tags_4,
+       sizeof(asn_DEF_schedulingRequestToReleaseList_tags_4)
+               /sizeof(asn_DEF_schedulingRequestToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_schedulingRequestToReleaseList_tags_4,  /* Same as above */
+       sizeof(asn_DEF_schedulingRequestToReleaseList_tags_4)
+               /sizeof(asn_DEF_schedulingRequestToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_schedulingRequestToReleaseList_constr_4, &asn_PER_type_schedulingRequestToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_schedulingRequestToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_schedulingRequestToReleaseList_specs_4 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SchedulingRequestConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SchedulingRequestConfig, schedulingRequestToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_schedulingRequestToAddModList_2,
+               0,
+               { &asn_OER_memb_schedulingRequestToAddModList_constr_2, &asn_PER_memb_schedulingRequestToAddModList_constr_2,  memb_schedulingRequestToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "schedulingRequestToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SchedulingRequestConfig, schedulingRequestToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_schedulingRequestToReleaseList_4,
+               0,
+               { &asn_OER_memb_schedulingRequestToReleaseList_constr_4, &asn_PER_memb_schedulingRequestToReleaseList_constr_4,  memb_schedulingRequestToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "schedulingRequestToReleaseList"
+               },
+};
+static const int asn_MAP_SchedulingRequestConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SchedulingRequestConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SchedulingRequestConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingRequestToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* schedulingRequestToReleaseList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestConfig_specs_1 = {
+       sizeof(struct SchedulingRequestConfig),
+       offsetof(struct SchedulingRequestConfig, _asn_ctx),
+       asn_MAP_SchedulingRequestConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SchedulingRequestConfig_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingRequestConfig = {
+       "SchedulingRequestConfig",
+       "SchedulingRequestConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SchedulingRequestConfig_tags_1,
+       sizeof(asn_DEF_SchedulingRequestConfig_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestConfig_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingRequestConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_SchedulingRequestConfig_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SchedulingRequestConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_SchedulingRequestConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingRequestConfig.h b/src/codec_utils/RRC/SchedulingRequestConfig.h
new file mode 100644 (file)
index 0000000..f9a4244
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingRequestConfig_H_
+#define        _SchedulingRequestConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "SchedulingRequestId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SchedulingRequestToAddMod;
+
+/* SchedulingRequestConfig */
+typedef struct SchedulingRequestConfig {
+       struct SchedulingRequestConfig__schedulingRequestToAddModList {
+               A_SEQUENCE_OF(struct SchedulingRequestToAddMod) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *schedulingRequestToAddModList;
+       struct SchedulingRequestConfig__schedulingRequestToReleaseList {
+               A_SEQUENCE_OF(SchedulingRequestId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *schedulingRequestToReleaseList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SchedulingRequestConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingRequestConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SchedulingRequestConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingRequestConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingRequestId.c b/src/codec_utils/RRC/SchedulingRequestId.c
new file mode 100644 (file)
index 0000000..9a3bb6b
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingRequestId.h"
+
+int
+SchedulingRequestId_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 <= 7)) {
+               /* 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_SchedulingRequestId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SchedulingRequestId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SchedulingRequestId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingRequestId = {
+       "SchedulingRequestId",
+       "SchedulingRequestId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SchedulingRequestId_tags_1,
+       sizeof(asn_DEF_SchedulingRequestId_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestId_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingRequestId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SchedulingRequestId_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SchedulingRequestId_constr_1, &asn_PER_type_SchedulingRequestId_constr_1, SchedulingRequestId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingRequestId.h b/src/codec_utils/RRC/SchedulingRequestId.h
new file mode 100644 (file)
index 0000000..6413dcb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingRequestId_H_
+#define        _SchedulingRequestId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SchedulingRequestId */
+typedef long    SchedulingRequestId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SchedulingRequestId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingRequestId;
+asn_struct_free_f SchedulingRequestId_free;
+asn_struct_print_f SchedulingRequestId_print;
+asn_constr_check_f SchedulingRequestId_constraint;
+ber_type_decoder_f SchedulingRequestId_decode_ber;
+der_type_encoder_f SchedulingRequestId_encode_der;
+xer_type_decoder_f SchedulingRequestId_decode_xer;
+xer_type_encoder_f SchedulingRequestId_encode_xer;
+oer_type_decoder_f SchedulingRequestId_decode_oer;
+oer_type_encoder_f SchedulingRequestId_encode_oer;
+per_type_decoder_f SchedulingRequestId_decode_uper;
+per_type_encoder_f SchedulingRequestId_encode_uper;
+per_type_decoder_f SchedulingRequestId_decode_aper;
+per_type_encoder_f SchedulingRequestId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingRequestId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingRequestResourceConfig.c b/src/codec_utils/RRC/SchedulingRequestResourceConfig.c
new file mode 100644 (file)
index 0000000..0a43aea
--- /dev/null
@@ -0,0 +1,665 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingRequestResourceConfig.h"
+
+static int
+memb_sl2_constraint_4(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 <= 1)) {
+               /* 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_sl4_constraint_4(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 <= 3)) {
+               /* 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_sl5_constraint_4(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 <= 4)) {
+               /* 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_sl8_constraint_4(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 <= 7)) {
+               /* 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_sl10_constraint_4(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 <= 9)) {
+               /* 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_sl16_constraint_4(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 <= 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_sl20_constraint_4(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 <= 19)) {
+               /* 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_sl40_constraint_4(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 <= 39)) {
+               /* 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_sl80_constraint_4(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 <= 79)) {
+               /* 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_sl160_constraint_4(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 <= 159)) {
+               /* 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_sl320_constraint_4(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 <= 319)) {
+               /* 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_sl640_constraint_4(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 <= 639)) {
+               /* 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_sl2_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl2_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_sl4_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl4_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl5_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl5_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl8_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl8_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl10_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl10_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl16_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl16_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl20_constr_14 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl20_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl40_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl40_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl80_constr_16 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl80_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl160_constr_17 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl160_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl320_constr_18 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl320_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl640_constr_19 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl640_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_periodicityAndOffset_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_periodicityAndOffset_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  14 }       /* (0..14) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_periodicityAndOffset_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sym2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sym2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sym6or7),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sym6or7"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sl1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl2_constr_8, &asn_PER_memb_sl2_constr_8,  memb_sl2_constraint_4 },
+               0, 0, /* No default value */
+               "sl2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl4),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl4_constr_9, &asn_PER_memb_sl4_constr_9,  memb_sl4_constraint_4 },
+               0, 0, /* No default value */
+               "sl4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl5),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl5_constr_10, &asn_PER_memb_sl5_constr_10,  memb_sl5_constraint_4 },
+               0, 0, /* No default value */
+               "sl5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl8),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl8_constr_11, &asn_PER_memb_sl8_constr_11,  memb_sl8_constraint_4 },
+               0, 0, /* No default value */
+               "sl8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl10),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl10_constr_12, &asn_PER_memb_sl10_constr_12,  memb_sl10_constraint_4 },
+               0, 0, /* No default value */
+               "sl10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl16),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl16_constr_13, &asn_PER_memb_sl16_constr_13,  memb_sl16_constraint_4 },
+               0, 0, /* No default value */
+               "sl16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl20),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl20_constr_14, &asn_PER_memb_sl20_constr_14,  memb_sl20_constraint_4 },
+               0, 0, /* No default value */
+               "sl20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl40),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl40_constr_15, &asn_PER_memb_sl40_constr_15,  memb_sl40_constraint_4 },
+               0, 0, /* No default value */
+               "sl40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl80),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl80_constr_16, &asn_PER_memb_sl80_constr_16,  memb_sl80_constraint_4 },
+               0, 0, /* No default value */
+               "sl80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl160),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl160_constr_17, &asn_PER_memb_sl160_constr_17,  memb_sl160_constraint_4 },
+               0, 0, /* No default value */
+               "sl160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl320),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl320_constr_18, &asn_PER_memb_sl320_constr_18,  memb_sl320_constraint_4 },
+               0, 0, /* No default value */
+               "sl320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, choice.sl640),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl640_constr_19, &asn_PER_memb_sl640_constr_19,  memb_sl640_constraint_4 },
+               0, 0, /* No default value */
+               "sl640"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_periodicityAndOffset_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sym2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sym6or7 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sl1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sl2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sl4 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sl5 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sl8 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sl10 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sl16 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* sl20 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sl40 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* sl80 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sl160 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* sl320 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 } /* sl640 */
+};
+static asn_CHOICE_specifics_t asn_SPC_periodicityAndOffset_specs_4 = {
+       sizeof(struct SchedulingRequestResourceConfig__periodicityAndOffset),
+       offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, _asn_ctx),
+       offsetof(struct SchedulingRequestResourceConfig__periodicityAndOffset, present),
+       sizeof(((struct SchedulingRequestResourceConfig__periodicityAndOffset *)0)->present),
+       asn_MAP_periodicityAndOffset_tag2el_4,
+       15,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_periodicityAndOffset_4 = {
+       "periodicityAndOffset",
+       "periodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_periodicityAndOffset_constr_4, &asn_PER_type_periodicityAndOffset_constr_4, CHOICE_constraint },
+       asn_MBR_periodicityAndOffset_4,
+       15,     /* Elements count */
+       &asn_SPC_periodicityAndOffset_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SchedulingRequestResourceConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig, schedulingRequestResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SchedulingRequestResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingRequestResourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestResourceConfig, schedulingRequestID),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SchedulingRequestId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingRequestID"
+               },
+       { ATF_POINTER, 2, offsetof(struct SchedulingRequestResourceConfig, periodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_periodicityAndOffset_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset"
+               },
+       { ATF_POINTER, 1, offsetof(struct SchedulingRequestResourceConfig, resource),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUCCH_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resource"
+               },
+};
+static const int asn_MAP_SchedulingRequestResourceConfig_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SchedulingRequestResourceConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SchedulingRequestResourceConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingRequestResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* schedulingRequestID */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* periodicityAndOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* resource */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestResourceConfig_specs_1 = {
+       sizeof(struct SchedulingRequestResourceConfig),
+       offsetof(struct SchedulingRequestResourceConfig, _asn_ctx),
+       asn_MAP_SchedulingRequestResourceConfig_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SchedulingRequestResourceConfig_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingRequestResourceConfig = {
+       "SchedulingRequestResourceConfig",
+       "SchedulingRequestResourceConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SchedulingRequestResourceConfig_tags_1,
+       sizeof(asn_DEF_SchedulingRequestResourceConfig_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestResourceConfig_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingRequestResourceConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_SchedulingRequestResourceConfig_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestResourceConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SchedulingRequestResourceConfig_1,
+       4,      /* Elements count */
+       &asn_SPC_SchedulingRequestResourceConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingRequestResourceConfig.h b/src/codec_utils/RRC/SchedulingRequestResourceConfig.h
new file mode 100644 (file)
index 0000000..3e2322c
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingRequestResourceConfig_H_
+#define        _SchedulingRequestResourceConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SchedulingRequestResourceId.h"
+#include "SchedulingRequestId.h"
+#include "PUCCH-ResourceId.h"
+#include <NULL.h>
+#include <NativeInteger.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SchedulingRequestResourceConfig__periodicityAndOffset_PR {
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_NOTHING,       /* No components present */
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sym2,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sym6or7,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl1,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl2,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl4,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl5,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl8,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl10,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl16,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl20,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl40,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl80,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl160,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl320,
+       SchedulingRequestResourceConfig__periodicityAndOffset_PR_sl640
+} SchedulingRequestResourceConfig__periodicityAndOffset_PR;
+
+/* SchedulingRequestResourceConfig */
+typedef struct SchedulingRequestResourceConfig {
+       SchedulingRequestResourceId_t    schedulingRequestResourceId;
+       SchedulingRequestId_t    schedulingRequestID;
+       struct SchedulingRequestResourceConfig__periodicityAndOffset {
+               SchedulingRequestResourceConfig__periodicityAndOffset_PR present;
+               union SchedulingRequestResourceConfig__periodicityAndOffset_u {
+                       NULL_t   sym2;
+                       NULL_t   sym6or7;
+                       NULL_t   sl1;
+                       long     sl2;
+                       long     sl4;
+                       long     sl5;
+                       long     sl8;
+                       long     sl10;
+                       long     sl16;
+                       long     sl20;
+                       long     sl40;
+                       long     sl80;
+                       long     sl160;
+                       long     sl320;
+                       long     sl640;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *periodicityAndOffset;
+       PUCCH_ResourceId_t      *resource;      /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SchedulingRequestResourceConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingRequestResourceConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestResourceConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SchedulingRequestResourceConfig_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingRequestResourceConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingRequestResourceId.c b/src/codec_utils/RRC/SchedulingRequestResourceId.c
new file mode 100644 (file)
index 0000000..a78ff10
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingRequestResourceId.h"
+
+int
+SchedulingRequestResourceId_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SchedulingRequestResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SchedulingRequestResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SchedulingRequestResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingRequestResourceId = {
+       "SchedulingRequestResourceId",
+       "SchedulingRequestResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SchedulingRequestResourceId_tags_1,
+       sizeof(asn_DEF_SchedulingRequestResourceId_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestResourceId_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingRequestResourceId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SchedulingRequestResourceId_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SchedulingRequestResourceId_constr_1, &asn_PER_type_SchedulingRequestResourceId_constr_1, SchedulingRequestResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingRequestResourceId.h b/src/codec_utils/RRC/SchedulingRequestResourceId.h
new file mode 100644 (file)
index 0000000..d2f79cf
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingRequestResourceId_H_
+#define        _SchedulingRequestResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SchedulingRequestResourceId */
+typedef long    SchedulingRequestResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SchedulingRequestResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingRequestResourceId;
+asn_struct_free_f SchedulingRequestResourceId_free;
+asn_struct_print_f SchedulingRequestResourceId_print;
+asn_constr_check_f SchedulingRequestResourceId_constraint;
+ber_type_decoder_f SchedulingRequestResourceId_decode_ber;
+der_type_encoder_f SchedulingRequestResourceId_encode_der;
+xer_type_decoder_f SchedulingRequestResourceId_decode_xer;
+xer_type_encoder_f SchedulingRequestResourceId_encode_xer;
+oer_type_decoder_f SchedulingRequestResourceId_decode_oer;
+oer_type_encoder_f SchedulingRequestResourceId_encode_oer;
+per_type_decoder_f SchedulingRequestResourceId_decode_uper;
+per_type_encoder_f SchedulingRequestResourceId_encode_uper;
+per_type_decoder_f SchedulingRequestResourceId_decode_aper;
+per_type_encoder_f SchedulingRequestResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingRequestResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SchedulingRequestToAddMod.c b/src/codec_utils/RRC/SchedulingRequestToAddMod.c
new file mode 100644 (file)
index 0000000..36410cf
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SchedulingRequestToAddMod.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.
+ */
+static asn_oer_constraints_t asn_OER_type_sr_ProhibitTimer_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sr_ProhibitTimer_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sr_TransMax_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sr_TransMax_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_sr_ProhibitTimer_value2enum_3[] = {
+       { 0,    3,      "ms1" },
+       { 1,    3,      "ms2" },
+       { 2,    3,      "ms4" },
+       { 3,    3,      "ms8" },
+       { 4,    4,      "ms16" },
+       { 5,    4,      "ms32" },
+       { 6,    4,      "ms64" },
+       { 7,    5,      "ms128" }
+};
+static const unsigned int asn_MAP_sr_ProhibitTimer_enum2value_3[] = {
+       0,      /* ms1(0) */
+       7,      /* ms128(7) */
+       4,      /* ms16(4) */
+       1,      /* ms2(1) */
+       5,      /* ms32(5) */
+       2,      /* ms4(2) */
+       6,      /* ms64(6) */
+       3       /* ms8(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sr_ProhibitTimer_specs_3 = {
+       asn_MAP_sr_ProhibitTimer_value2enum_3,  /* "tag" => N; sorted by tag */
+       asn_MAP_sr_ProhibitTimer_enum2value_3,  /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sr_ProhibitTimer_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_sr_ProhibitTimer_3 = {
+       "sr-ProhibitTimer",
+       "sr-ProhibitTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sr_ProhibitTimer_tags_3,
+       sizeof(asn_DEF_sr_ProhibitTimer_tags_3)
+               /sizeof(asn_DEF_sr_ProhibitTimer_tags_3[0]) - 1, /* 1 */
+       asn_DEF_sr_ProhibitTimer_tags_3,        /* Same as above */
+       sizeof(asn_DEF_sr_ProhibitTimer_tags_3)
+               /sizeof(asn_DEF_sr_ProhibitTimer_tags_3[0]), /* 2 */
+       { &asn_OER_type_sr_ProhibitTimer_constr_3, &asn_PER_type_sr_ProhibitTimer_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sr_ProhibitTimer_specs_3       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sr_TransMax_value2enum_12[] = {
+       { 0,    2,      "n4" },
+       { 1,    2,      "n8" },
+       { 2,    3,      "n16" },
+       { 3,    3,      "n32" },
+       { 4,    3,      "n64" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_sr_TransMax_enum2value_12[] = {
+       2,      /* n16(2) */
+       3,      /* n32(3) */
+       0,      /* n4(0) */
+       4,      /* n64(4) */
+       1,      /* n8(1) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5       /* spare3(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sr_TransMax_specs_12 = {
+       asn_MAP_sr_TransMax_value2enum_12,      /* "tag" => N; sorted by tag */
+       asn_MAP_sr_TransMax_enum2value_12,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sr_TransMax_tags_12[] = {
+       (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_sr_TransMax_12 = {
+       "sr-TransMax",
+       "sr-TransMax",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sr_TransMax_tags_12,
+       sizeof(asn_DEF_sr_TransMax_tags_12)
+               /sizeof(asn_DEF_sr_TransMax_tags_12[0]) - 1, /* 1 */
+       asn_DEF_sr_TransMax_tags_12,    /* Same as above */
+       sizeof(asn_DEF_sr_TransMax_tags_12)
+               /sizeof(asn_DEF_sr_TransMax_tags_12[0]), /* 2 */
+       { &asn_OER_type_sr_TransMax_constr_12, &asn_PER_type_sr_TransMax_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sr_TransMax_specs_12   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SchedulingRequestToAddMod_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestToAddMod, schedulingRequestId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SchedulingRequestId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "schedulingRequestId"
+               },
+       { ATF_POINTER, 1, offsetof(struct SchedulingRequestToAddMod, sr_ProhibitTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sr_ProhibitTimer_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sr-ProhibitTimer"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SchedulingRequestToAddMod, sr_TransMax),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sr_TransMax_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sr-TransMax"
+               },
+};
+static const int asn_MAP_SchedulingRequestToAddMod_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_SchedulingRequestToAddMod_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SchedulingRequestToAddMod_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingRequestId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sr-ProhibitTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sr-TransMax */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestToAddMod_specs_1 = {
+       sizeof(struct SchedulingRequestToAddMod),
+       offsetof(struct SchedulingRequestToAddMod, _asn_ctx),
+       asn_MAP_SchedulingRequestToAddMod_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SchedulingRequestToAddMod_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SchedulingRequestToAddMod = {
+       "SchedulingRequestToAddMod",
+       "SchedulingRequestToAddMod",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SchedulingRequestToAddMod_tags_1,
+       sizeof(asn_DEF_SchedulingRequestToAddMod_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestToAddMod_tags_1[0]), /* 1 */
+       asn_DEF_SchedulingRequestToAddMod_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SchedulingRequestToAddMod_tags_1)
+               /sizeof(asn_DEF_SchedulingRequestToAddMod_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SchedulingRequestToAddMod_1,
+       3,      /* Elements count */
+       &asn_SPC_SchedulingRequestToAddMod_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SchedulingRequestToAddMod.h b/src/codec_utils/RRC/SchedulingRequestToAddMod.h
new file mode 100644 (file)
index 0000000..2a2ab4d
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SchedulingRequestToAddMod_H_
+#define        _SchedulingRequestToAddMod_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SchedulingRequestId.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SchedulingRequestToAddMod__sr_ProhibitTimer {
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms1 = 0,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms2 = 1,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms4 = 2,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms8 = 3,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms16        = 4,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms32        = 5,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms64        = 6,
+       SchedulingRequestToAddMod__sr_ProhibitTimer_ms128       = 7
+} e_SchedulingRequestToAddMod__sr_ProhibitTimer;
+typedef enum SchedulingRequestToAddMod__sr_TransMax {
+       SchedulingRequestToAddMod__sr_TransMax_n4       = 0,
+       SchedulingRequestToAddMod__sr_TransMax_n8       = 1,
+       SchedulingRequestToAddMod__sr_TransMax_n16      = 2,
+       SchedulingRequestToAddMod__sr_TransMax_n32      = 3,
+       SchedulingRequestToAddMod__sr_TransMax_n64      = 4,
+       SchedulingRequestToAddMod__sr_TransMax_spare3   = 5,
+       SchedulingRequestToAddMod__sr_TransMax_spare2   = 6,
+       SchedulingRequestToAddMod__sr_TransMax_spare1   = 7
+} e_SchedulingRequestToAddMod__sr_TransMax;
+
+/* SchedulingRequestToAddMod */
+typedef struct SchedulingRequestToAddMod {
+       SchedulingRequestId_t    schedulingRequestId;
+       long    *sr_ProhibitTimer;      /* OPTIONAL */
+       long     sr_TransMax;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SchedulingRequestToAddMod_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_sr_ProhibitTimer_3;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sr_TransMax_12;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SchedulingRequestToAddMod;
+extern asn_SEQUENCE_specifics_t asn_SPC_SchedulingRequestToAddMod_specs_1;
+extern asn_TYPE_member_t asn_MBR_SchedulingRequestToAddMod_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SchedulingRequestToAddMod_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ScramblingId.c b/src/codec_utils/RRC/ScramblingId.c
new file mode 100644 (file)
index 0000000..7343a94
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ScramblingId.h"
+
+int
+ScramblingId_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 <= 1023)) {
+               /* 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_ScramblingId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1023) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ScramblingId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ScramblingId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ScramblingId = {
+       "ScramblingId",
+       "ScramblingId",
+       &asn_OP_NativeInteger,
+       asn_DEF_ScramblingId_tags_1,
+       sizeof(asn_DEF_ScramblingId_tags_1)
+               /sizeof(asn_DEF_ScramblingId_tags_1[0]), /* 1 */
+       asn_DEF_ScramblingId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ScramblingId_tags_1)
+               /sizeof(asn_DEF_ScramblingId_tags_1[0]), /* 1 */
+       { &asn_OER_type_ScramblingId_constr_1, &asn_PER_type_ScramblingId_constr_1, ScramblingId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ScramblingId.h b/src/codec_utils/RRC/ScramblingId.h
new file mode 100644 (file)
index 0000000..066602b
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ScramblingId_H_
+#define        _ScramblingId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ScramblingId */
+typedef long    ScramblingId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ScramblingId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ScramblingId;
+asn_struct_free_f ScramblingId_free;
+asn_struct_print_f ScramblingId_print;
+asn_constr_check_f ScramblingId_constraint;
+ber_type_decoder_f ScramblingId_decode_ber;
+der_type_encoder_f ScramblingId_encode_der;
+xer_type_decoder_f ScramblingId_decode_xer;
+xer_type_encoder_f ScramblingId_encode_xer;
+oer_type_decoder_f ScramblingId_decode_oer;
+oer_type_encoder_f ScramblingId_encode_oer;
+per_type_decoder_f ScramblingId_decode_uper;
+per_type_encoder_f ScramblingId_encode_uper;
+per_type_decoder_f ScramblingId_decode_aper;
+per_type_encoder_f ScramblingId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ScramblingId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SearchSpace.c b/src/codec_utils/RRC/SearchSpace.c
new file mode 100644 (file)
index 0000000..d731953
--- /dev/null
@@ -0,0 +1,2077 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SearchSpace.h"
+
+static int
+memb_sl2_constraint_4(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 <= 1)) {
+               /* 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_sl4_constraint_4(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 <= 3)) {
+               /* 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_sl5_constraint_4(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 <= 4)) {
+               /* 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_sl8_constraint_4(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 <= 7)) {
+               /* 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_sl10_constraint_4(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 <= 9)) {
+               /* 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_sl16_constraint_4(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 <= 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_sl20_constraint_4(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 <= 19)) {
+               /* 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_sl40_constraint_4(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 <= 39)) {
+               /* 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_sl80_constraint_4(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 <= 79)) {
+               /* 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_sl160_constraint_4(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 <= 159)) {
+               /* 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_sl320_constraint_4(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 <= 319)) {
+               /* 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_sl640_constraint_4(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 <= 639)) {
+               /* 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_sl1280_constraint_4(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 <= 1279)) {
+               /* 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_sl2560_constraint_4(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 <= 2559)) {
+               /* 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 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.
+ */
+/*
+ * 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_duration_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 >= 2 && value <= 2559)) {
+               /* 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_monitoringSymbolsWithinSlot_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 == 14)) {
+               /* 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_sl2_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (0..1) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl2_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_sl4_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl4_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl5_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (0..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl5_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl8_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl8_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl10_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (0..9) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl10_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl16_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl16_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl20_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..19) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl20_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl40_constr_13 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl40_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl80_constr_14 CC_NOTUSED = {
+       { 1, 1 }        /* (0..79) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl80_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl160_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (0..159) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl160_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl320_constr_16 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl320_constr_16 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl640_constr_17 CC_NOTUSED = {
+       { 2, 1 }        /* (0..639) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl640_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl1280_constr_18 CC_NOTUSED = {
+       { 2, 1 }        /* (0..1279) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl1280_constr_18 CC_NOTUSED = {
+       { APC_CONSTRAINED,       11,  11,  0,  1279 }   /* (0..1279) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sl2560_constr_19 CC_NOTUSED = {
+       { 2, 1 }        /* (0..2559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_sl2560_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  2559 }   /* (0..2559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_monitoringSlotPeriodicityAndOffset_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_monitoringSlotPeriodicityAndOffset_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  14 }       /* (0..14) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel1_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel1_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel2_constr_32 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel2_constr_32 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel4_constr_41 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel4_constr_41 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel8_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel8_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel16_constr_59 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel16_constr_59 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_aggregationLevel1_constr_74 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel1_constr_74 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_aggregationLevel2_constr_77 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel2_constr_77 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_aggregationLevel4_constr_80 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel4_constr_80 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_aggregationLevel8_constr_83 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel8_constr_83 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_aggregationLevel16_constr_86 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_aggregationLevel16_constr_86 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dummy1_constr_95 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dummy1_constr_95 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dummy2_constr_104 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dummy2_constr_104 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_dci_Formats_constr_109 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dci_Formats_constr_109 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_searchSpaceType_constr_68 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_searchSpaceType_constr_68 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_duration_constr_20 CC_NOTUSED = {
+       { 2, 1 }        /* (2..2559) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_duration_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  2,  2559 }   /* (2..2559) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_monitoringSymbolsWithinSlot_constr_21 CC_NOTUSED = {
+       { 0, 0 },
+       14      /* (SIZE(14..14)) */};
+static asn_per_constraints_t asn_PER_memb_monitoringSymbolsWithinSlot_constr_21 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  14,  14 }      /* (SIZE(14..14)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_monitoringSlotPeriodicityAndOffset_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sl1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl2_constr_6, &asn_PER_memb_sl2_constr_6,  memb_sl2_constraint_4 },
+               0, 0, /* No default value */
+               "sl2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl4_constr_7, &asn_PER_memb_sl4_constr_7,  memb_sl4_constraint_4 },
+               0, 0, /* No default value */
+               "sl4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl5),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl5_constr_8, &asn_PER_memb_sl5_constr_8,  memb_sl5_constraint_4 },
+               0, 0, /* No default value */
+               "sl5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl8),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl8_constr_9, &asn_PER_memb_sl8_constr_9,  memb_sl8_constraint_4 },
+               0, 0, /* No default value */
+               "sl8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl10),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl10_constr_10, &asn_PER_memb_sl10_constr_10,  memb_sl10_constraint_4 },
+               0, 0, /* No default value */
+               "sl10"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl16),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl16_constr_11, &asn_PER_memb_sl16_constr_11,  memb_sl16_constraint_4 },
+               0, 0, /* No default value */
+               "sl16"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl20),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl20_constr_12, &asn_PER_memb_sl20_constr_12,  memb_sl20_constraint_4 },
+               0, 0, /* No default value */
+               "sl20"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl40),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl40_constr_13, &asn_PER_memb_sl40_constr_13,  memb_sl40_constraint_4 },
+               0, 0, /* No default value */
+               "sl40"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl80),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl80_constr_14, &asn_PER_memb_sl80_constr_14,  memb_sl80_constraint_4 },
+               0, 0, /* No default value */
+               "sl80"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl160),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl160_constr_15, &asn_PER_memb_sl160_constr_15,  memb_sl160_constraint_4 },
+               0, 0, /* No default value */
+               "sl160"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl320),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl320_constr_16, &asn_PER_memb_sl320_constr_16,  memb_sl320_constraint_4 },
+               0, 0, /* No default value */
+               "sl320"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl640),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl640_constr_17, &asn_PER_memb_sl640_constr_17,  memb_sl640_constraint_4 },
+               0, 0, /* No default value */
+               "sl640"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl1280),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl1280_constr_18, &asn_PER_memb_sl1280_constr_18,  memb_sl1280_constraint_4 },
+               0, 0, /* No default value */
+               "sl1280"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl2560),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_sl2560_constr_19, &asn_PER_memb_sl2560_constr_19,  memb_sl2560_constraint_4 },
+               0, 0, /* No default value */
+               "sl2560"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_monitoringSlotPeriodicityAndOffset_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sl1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sl2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sl4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sl5 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sl8 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sl10 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sl16 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sl20 */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sl40 */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* sl80 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sl160 */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* sl320 */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sl640 */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* sl1280 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 } /* sl2560 */
+};
+static asn_CHOICE_specifics_t asn_SPC_monitoringSlotPeriodicityAndOffset_specs_4 = {
+       sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset),
+       offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, _asn_ctx),
+       offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, present),
+       sizeof(((struct SearchSpace__monitoringSlotPeriodicityAndOffset *)0)->present),
+       asn_MAP_monitoringSlotPeriodicityAndOffset_tag2el_4,
+       15,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_monitoringSlotPeriodicityAndOffset_4 = {
+       "monitoringSlotPeriodicityAndOffset",
+       "monitoringSlotPeriodicityAndOffset",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_monitoringSlotPeriodicityAndOffset_constr_4, &asn_PER_type_monitoringSlotPeriodicityAndOffset_constr_4, CHOICE_constraint },
+       asn_MBR_monitoringSlotPeriodicityAndOffset_4,
+       15,     /* Elements count */
+       &asn_SPC_monitoringSlotPeriodicityAndOffset_specs_4     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel1_value2enum_23[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" },
+       { 6,    2,      "n6" },
+       { 7,    2,      "n8" }
+};
+static const unsigned int asn_MAP_aggregationLevel1_enum2value_23[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5,      /* n5(5) */
+       6,      /* n6(6) */
+       7       /* n8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel1_specs_23 = {
+       asn_MAP_aggregationLevel1_value2enum_23,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel1_enum2value_23,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel1_tags_23[] = {
+       (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_aggregationLevel1_23 = {
+       "aggregationLevel1",
+       "aggregationLevel1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel1_tags_23,
+       sizeof(asn_DEF_aggregationLevel1_tags_23)
+               /sizeof(asn_DEF_aggregationLevel1_tags_23[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel1_tags_23,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel1_tags_23)
+               /sizeof(asn_DEF_aggregationLevel1_tags_23[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel1_constr_23, &asn_PER_type_aggregationLevel1_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel1_specs_23     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel2_value2enum_32[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" },
+       { 6,    2,      "n6" },
+       { 7,    2,      "n8" }
+};
+static const unsigned int asn_MAP_aggregationLevel2_enum2value_32[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5,      /* n5(5) */
+       6,      /* n6(6) */
+       7       /* n8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel2_specs_32 = {
+       asn_MAP_aggregationLevel2_value2enum_32,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel2_enum2value_32,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel2_tags_32[] = {
+       (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_aggregationLevel2_32 = {
+       "aggregationLevel2",
+       "aggregationLevel2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel2_tags_32,
+       sizeof(asn_DEF_aggregationLevel2_tags_32)
+               /sizeof(asn_DEF_aggregationLevel2_tags_32[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel2_tags_32,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel2_tags_32)
+               /sizeof(asn_DEF_aggregationLevel2_tags_32[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel2_constr_32, &asn_PER_type_aggregationLevel2_constr_32, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel2_specs_32     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel4_value2enum_41[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" },
+       { 6,    2,      "n6" },
+       { 7,    2,      "n8" }
+};
+static const unsigned int asn_MAP_aggregationLevel4_enum2value_41[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5,      /* n5(5) */
+       6,      /* n6(6) */
+       7       /* n8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel4_specs_41 = {
+       asn_MAP_aggregationLevel4_value2enum_41,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel4_enum2value_41,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel4_tags_41[] = {
+       (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_aggregationLevel4_41 = {
+       "aggregationLevel4",
+       "aggregationLevel4",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel4_tags_41,
+       sizeof(asn_DEF_aggregationLevel4_tags_41)
+               /sizeof(asn_DEF_aggregationLevel4_tags_41[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel4_tags_41,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel4_tags_41)
+               /sizeof(asn_DEF_aggregationLevel4_tags_41[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel4_constr_41, &asn_PER_type_aggregationLevel4_constr_41, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel4_specs_41     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel8_value2enum_50[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" },
+       { 6,    2,      "n6" },
+       { 7,    2,      "n8" }
+};
+static const unsigned int asn_MAP_aggregationLevel8_enum2value_50[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5,      /* n5(5) */
+       6,      /* n6(6) */
+       7       /* n8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel8_specs_50 = {
+       asn_MAP_aggregationLevel8_value2enum_50,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel8_enum2value_50,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel8_tags_50[] = {
+       (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_aggregationLevel8_50 = {
+       "aggregationLevel8",
+       "aggregationLevel8",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel8_tags_50,
+       sizeof(asn_DEF_aggregationLevel8_tags_50)
+               /sizeof(asn_DEF_aggregationLevel8_tags_50[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel8_tags_50,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel8_tags_50)
+               /sizeof(asn_DEF_aggregationLevel8_tags_50[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel8_constr_50, &asn_PER_type_aggregationLevel8_constr_50, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel8_specs_50     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel16_value2enum_59[] = {
+       { 0,    2,      "n0" },
+       { 1,    2,      "n1" },
+       { 2,    2,      "n2" },
+       { 3,    2,      "n3" },
+       { 4,    2,      "n4" },
+       { 5,    2,      "n5" },
+       { 6,    2,      "n6" },
+       { 7,    2,      "n8" }
+};
+static const unsigned int asn_MAP_aggregationLevel16_enum2value_59[] = {
+       0,      /* n0(0) */
+       1,      /* n1(1) */
+       2,      /* n2(2) */
+       3,      /* n3(3) */
+       4,      /* n4(4) */
+       5,      /* n5(5) */
+       6,      /* n6(6) */
+       7       /* n8(7) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel16_specs_59 = {
+       asn_MAP_aggregationLevel16_value2enum_59,       /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel16_enum2value_59,       /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel16_tags_59[] = {
+       (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_aggregationLevel16_59 = {
+       "aggregationLevel16",
+       "aggregationLevel16",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel16_tags_59,
+       sizeof(asn_DEF_aggregationLevel16_tags_59)
+               /sizeof(asn_DEF_aggregationLevel16_tags_59[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel16_tags_59,     /* Same as above */
+       sizeof(asn_DEF_aggregationLevel16_tags_59)
+               /sizeof(asn_DEF_aggregationLevel16_tags_59[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel16_constr_59, &asn_PER_type_aggregationLevel16_constr_59, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel16_specs_59    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nrofCandidates_22[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel1_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel2_32,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel4_41,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel8),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel8_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel8"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel16),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel16_59,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel16"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_nrofCandidates_tags_22[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nrofCandidates_tag2el_22[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aggregationLevel1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aggregationLevel2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aggregationLevel4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* aggregationLevel8 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* aggregationLevel16 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nrofCandidates_specs_22 = {
+       sizeof(struct SearchSpace__nrofCandidates),
+       offsetof(struct SearchSpace__nrofCandidates, _asn_ctx),
+       asn_MAP_nrofCandidates_tag2el_22,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nrofCandidates_22 = {
+       "nrofCandidates",
+       "nrofCandidates",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nrofCandidates_tags_22,
+       sizeof(asn_DEF_nrofCandidates_tags_22)
+               /sizeof(asn_DEF_nrofCandidates_tags_22[0]) - 1, /* 1 */
+       asn_DEF_nrofCandidates_tags_22, /* Same as above */
+       sizeof(asn_DEF_nrofCandidates_tags_22)
+               /sizeof(asn_DEF_nrofCandidates_tags_22[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nrofCandidates_22,
+       5,      /* Elements count */
+       &asn_SPC_nrofCandidates_specs_22        /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dci_Format0_0_AndFormat1_0_specs_70 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dci_Format0_0_AndFormat1_0_70 = {
+       "dci-Format0-0-AndFormat1-0",
+       "dci-Format0-0-AndFormat1-0",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dci_Format0_0_AndFormat1_0_tags_70,
+       sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70)
+               /sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[0]) - 1, /* 1 */
+       asn_DEF_dci_Format0_0_AndFormat1_0_tags_70,     /* Same as above */
+       sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70)
+               /sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_dci_Format0_0_AndFormat1_0_specs_70    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel1_value2enum_74[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_aggregationLevel1_enum2value_74[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel1_specs_74 = {
+       asn_MAP_aggregationLevel1_value2enum_74,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel1_enum2value_74,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel1_tags_74[] = {
+       (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_aggregationLevel1_74 = {
+       "aggregationLevel1",
+       "aggregationLevel1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel1_tags_74,
+       sizeof(asn_DEF_aggregationLevel1_tags_74)
+               /sizeof(asn_DEF_aggregationLevel1_tags_74[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel1_tags_74,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel1_tags_74)
+               /sizeof(asn_DEF_aggregationLevel1_tags_74[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel1_constr_74, &asn_PER_type_aggregationLevel1_constr_74, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel1_specs_74     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel2_value2enum_77[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_aggregationLevel2_enum2value_77[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel2_specs_77 = {
+       asn_MAP_aggregationLevel2_value2enum_77,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel2_enum2value_77,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel2_tags_77[] = {
+       (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_aggregationLevel2_77 = {
+       "aggregationLevel2",
+       "aggregationLevel2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel2_tags_77,
+       sizeof(asn_DEF_aggregationLevel2_tags_77)
+               /sizeof(asn_DEF_aggregationLevel2_tags_77[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel2_tags_77,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel2_tags_77)
+               /sizeof(asn_DEF_aggregationLevel2_tags_77[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel2_constr_77, &asn_PER_type_aggregationLevel2_constr_77, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel2_specs_77     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel4_value2enum_80[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_aggregationLevel4_enum2value_80[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel4_specs_80 = {
+       asn_MAP_aggregationLevel4_value2enum_80,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel4_enum2value_80,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel4_tags_80[] = {
+       (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_aggregationLevel4_80 = {
+       "aggregationLevel4",
+       "aggregationLevel4",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel4_tags_80,
+       sizeof(asn_DEF_aggregationLevel4_tags_80)
+               /sizeof(asn_DEF_aggregationLevel4_tags_80[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel4_tags_80,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel4_tags_80)
+               /sizeof(asn_DEF_aggregationLevel4_tags_80[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel4_constr_80, &asn_PER_type_aggregationLevel4_constr_80, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel4_specs_80     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel8_value2enum_83[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_aggregationLevel8_enum2value_83[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel8_specs_83 = {
+       asn_MAP_aggregationLevel8_value2enum_83,        /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel8_enum2value_83,        /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel8_tags_83[] = {
+       (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_aggregationLevel8_83 = {
+       "aggregationLevel8",
+       "aggregationLevel8",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel8_tags_83,
+       sizeof(asn_DEF_aggregationLevel8_tags_83)
+               /sizeof(asn_DEF_aggregationLevel8_tags_83[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel8_tags_83,      /* Same as above */
+       sizeof(asn_DEF_aggregationLevel8_tags_83)
+               /sizeof(asn_DEF_aggregationLevel8_tags_83[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel8_constr_83, &asn_PER_type_aggregationLevel8_constr_83, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel8_specs_83     /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel16_value2enum_86[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_aggregationLevel16_enum2value_86[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel16_specs_86 = {
+       asn_MAP_aggregationLevel16_value2enum_86,       /* "tag" => N; sorted by tag */
+       asn_MAP_aggregationLevel16_enum2value_86,       /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_aggregationLevel16_tags_86[] = {
+       (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_aggregationLevel16_86 = {
+       "aggregationLevel16",
+       "aggregationLevel16",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_aggregationLevel16_tags_86,
+       sizeof(asn_DEF_aggregationLevel16_tags_86)
+               /sizeof(asn_DEF_aggregationLevel16_tags_86[0]) - 1, /* 1 */
+       asn_DEF_aggregationLevel16_tags_86,     /* Same as above */
+       sizeof(asn_DEF_aggregationLevel16_tags_86)
+               /sizeof(asn_DEF_aggregationLevel16_tags_86[0]), /* 2 */
+       { &asn_OER_type_aggregationLevel16_constr_86, &asn_PER_type_aggregationLevel16_constr_86, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_aggregationLevel16_specs_86    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_nrofCandidates_SFI_73[] = {
+       { ATF_POINTER, 5, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel1_74,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel1"
+               },
+       { ATF_POINTER, 4, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel2_77,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel2"
+               },
+       { ATF_POINTER, 3, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel4_80,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel4"
+               },
+       { ATF_POINTER, 2, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel8),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel8_83,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel8"
+               },
+       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel16),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_aggregationLevel16_86,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "aggregationLevel16"
+               },
+};
+static const int asn_MAP_nrofCandidates_SFI_oms_73[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_nrofCandidates_SFI_tags_73[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_nrofCandidates_SFI_tag2el_73[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aggregationLevel1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aggregationLevel2 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aggregationLevel4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* aggregationLevel8 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* aggregationLevel16 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nrofCandidates_SFI_specs_73 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, _asn_ctx),
+       asn_MAP_nrofCandidates_SFI_tag2el_73,
+       5,      /* Count of tags in the map */
+       asn_MAP_nrofCandidates_SFI_oms_73,      /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nrofCandidates_SFI_73 = {
+       "nrofCandidates-SFI",
+       "nrofCandidates-SFI",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nrofCandidates_SFI_tags_73,
+       sizeof(asn_DEF_nrofCandidates_SFI_tags_73)
+               /sizeof(asn_DEF_nrofCandidates_SFI_tags_73[0]) - 1, /* 1 */
+       asn_DEF_nrofCandidates_SFI_tags_73,     /* Same as above */
+       sizeof(asn_DEF_nrofCandidates_SFI_tags_73)
+               /sizeof(asn_DEF_nrofCandidates_SFI_tags_73[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_nrofCandidates_SFI_73,
+       5,      /* Elements count */
+       &asn_SPC_nrofCandidates_SFI_specs_73    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dci_Format2_0_72[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0, nrofCandidates_SFI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_nrofCandidates_SFI_73,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofCandidates-SFI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_dci_Format2_0_tags_72[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_dci_Format2_0_tag2el_72[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nrofCandidates-SFI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_0_specs_72 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_0),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0, _asn_ctx),
+       asn_MAP_dci_Format2_0_tag2el_72,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dci_Format2_0_72 = {
+       "dci-Format2-0",
+       "dci-Format2-0",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dci_Format2_0_tags_72,
+       sizeof(asn_DEF_dci_Format2_0_tags_72)
+               /sizeof(asn_DEF_dci_Format2_0_tags_72[0]) - 1, /* 1 */
+       asn_DEF_dci_Format2_0_tags_72,  /* Same as above */
+       sizeof(asn_DEF_dci_Format2_0_tags_72)
+               /sizeof(asn_DEF_dci_Format2_0_tags_72[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_dci_Format2_0_72,
+       1,      /* Elements count */
+       &asn_SPC_dci_Format2_0_specs_72 /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_dci_Format2_1_tags_90[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_1_specs_90 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_1),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_1, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dci_Format2_1_90 = {
+       "dci-Format2-1",
+       "dci-Format2-1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dci_Format2_1_tags_90,
+       sizeof(asn_DEF_dci_Format2_1_tags_90)
+               /sizeof(asn_DEF_dci_Format2_1_tags_90[0]) - 1, /* 1 */
+       asn_DEF_dci_Format2_1_tags_90,  /* Same as above */
+       sizeof(asn_DEF_dci_Format2_1_tags_90)
+               /sizeof(asn_DEF_dci_Format2_1_tags_90[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_dci_Format2_1_specs_90 /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_dci_Format2_2_tags_92[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_2_specs_92 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_2),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_2, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dci_Format2_2_92 = {
+       "dci-Format2-2",
+       "dci-Format2-2",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dci_Format2_2_tags_92,
+       sizeof(asn_DEF_dci_Format2_2_tags_92)
+               /sizeof(asn_DEF_dci_Format2_2_tags_92[0]) - 1, /* 1 */
+       asn_DEF_dci_Format2_2_tags_92,  /* Same as above */
+       sizeof(asn_DEF_dci_Format2_2_tags_92)
+               /sizeof(asn_DEF_dci_Format2_2_tags_92[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_dci_Format2_2_specs_92 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dummy1_value2enum_95[] = {
+       { 0,    3,      "sl1" },
+       { 1,    3,      "sl2" },
+       { 2,    3,      "sl4" },
+       { 3,    3,      "sl5" },
+       { 4,    3,      "sl8" },
+       { 5,    4,      "sl10" },
+       { 6,    4,      "sl16" },
+       { 7,    4,      "sl20" }
+};
+static const unsigned int asn_MAP_dummy1_enum2value_95[] = {
+       0,      /* sl1(0) */
+       5,      /* sl10(5) */
+       6,      /* sl16(6) */
+       1,      /* sl2(1) */
+       7,      /* sl20(7) */
+       2,      /* sl4(2) */
+       3,      /* sl5(3) */
+       4       /* sl8(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dummy1_specs_95 = {
+       asn_MAP_dummy1_value2enum_95,   /* "tag" => N; sorted by tag */
+       asn_MAP_dummy1_enum2value_95,   /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dummy1_tags_95[] = {
+       (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_dummy1_95 = {
+       "dummy1",
+       "dummy1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dummy1_tags_95,
+       sizeof(asn_DEF_dummy1_tags_95)
+               /sizeof(asn_DEF_dummy1_tags_95[0]) - 1, /* 1 */
+       asn_DEF_dummy1_tags_95, /* Same as above */
+       sizeof(asn_DEF_dummy1_tags_95)
+               /sizeof(asn_DEF_dummy1_tags_95[0]), /* 2 */
+       { &asn_OER_type_dummy1_constr_95, &asn_PER_type_dummy1_constr_95, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dummy1_specs_95        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dummy2_value2enum_104[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" }
+};
+static const unsigned int asn_MAP_dummy2_enum2value_104[] = {
+       0,      /* n1(0) */
+       1       /* n2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dummy2_specs_104 = {
+       asn_MAP_dummy2_value2enum_104,  /* "tag" => N; sorted by tag */
+       asn_MAP_dummy2_enum2value_104,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dummy2_tags_104[] = {
+       (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_dummy2_104 = {
+       "dummy2",
+       "dummy2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dummy2_tags_104,
+       sizeof(asn_DEF_dummy2_tags_104)
+               /sizeof(asn_DEF_dummy2_tags_104[0]) - 1, /* 1 */
+       asn_DEF_dummy2_tags_104,        /* Same as above */
+       sizeof(asn_DEF_dummy2_tags_104)
+               /sizeof(asn_DEF_dummy2_tags_104[0]), /* 2 */
+       { &asn_OER_type_dummy2_constr_104, &asn_PER_type_dummy2_constr_104, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dummy2_specs_104       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_dci_Format2_3_94[] = {
+       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, dummy1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dummy1_95,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, dummy2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dummy2_104,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy2"
+               },
+};
+static const int asn_MAP_dci_Format2_3_oms_94[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_dci_Format2_3_tags_94[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_dci_Format2_3_tag2el_94[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dummy1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dummy2 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_3_specs_94 = {
+       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_3),
+       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, _asn_ctx),
+       asn_MAP_dci_Format2_3_tag2el_94,
+       2,      /* Count of tags in the map */
+       asn_MAP_dci_Format2_3_oms_94,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dci_Format2_3_94 = {
+       "dci-Format2-3",
+       "dci-Format2-3",
+       &asn_OP_SEQUENCE,
+       asn_DEF_dci_Format2_3_tags_94,
+       sizeof(asn_DEF_dci_Format2_3_tags_94)
+               /sizeof(asn_DEF_dci_Format2_3_tags_94[0]) - 1, /* 1 */
+       asn_DEF_dci_Format2_3_tags_94,  /* Same as above */
+       sizeof(asn_DEF_dci_Format2_3_tags_94)
+               /sizeof(asn_DEF_dci_Format2_3_tags_94[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_dci_Format2_3_94,
+       2,      /* Elements count */
+       &asn_SPC_dci_Format2_3_specs_94 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_common_69[] = {
+       { ATF_POINTER, 5, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format0_0_AndFormat1_0),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_dci_Format0_0_AndFormat1_0_70,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Format0-0-AndFormat1-0"
+               },
+       { ATF_POINTER, 4, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_0),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_dci_Format2_0_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Format2-0"
+               },
+       { ATF_POINTER, 3, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_1),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_dci_Format2_1_90,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Format2-1"
+               },
+       { ATF_POINTER, 2, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_2),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_dci_Format2_2_92,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Format2-2"
+               },
+       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_3),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_dci_Format2_3_94,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Format2-3"
+               },
+};
+static const int asn_MAP_common_oms_69[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_common_tags_69[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_common_tag2el_69[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dci-Format0-0-AndFormat1-0 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dci-Format2-0 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dci-Format2-1 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dci-Format2-2 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* dci-Format2-3 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_common_specs_69 = {
+       sizeof(struct SearchSpace__searchSpaceType__common),
+       offsetof(struct SearchSpace__searchSpaceType__common, _asn_ctx),
+       asn_MAP_common_tag2el_69,
+       5,      /* Count of tags in the map */
+       asn_MAP_common_oms_69,  /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_common_69 = {
+       "common",
+       "common",
+       &asn_OP_SEQUENCE,
+       asn_DEF_common_tags_69,
+       sizeof(asn_DEF_common_tags_69)
+               /sizeof(asn_DEF_common_tags_69[0]) - 1, /* 1 */
+       asn_DEF_common_tags_69, /* Same as above */
+       sizeof(asn_DEF_common_tags_69)
+               /sizeof(asn_DEF_common_tags_69[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_common_69,
+       5,      /* Elements count */
+       &asn_SPC_common_specs_69        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dci_Formats_value2enum_109[] = {
+       { 0,    18,     "formats0-0-And-1-0" },
+       { 1,    18,     "formats0-1-And-1-1" }
+};
+static const unsigned int asn_MAP_dci_Formats_enum2value_109[] = {
+       0,      /* formats0-0-And-1-0(0) */
+       1       /* formats0-1-And-1-1(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dci_Formats_specs_109 = {
+       asn_MAP_dci_Formats_value2enum_109,     /* "tag" => N; sorted by tag */
+       asn_MAP_dci_Formats_enum2value_109,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dci_Formats_tags_109[] = {
+       (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_dci_Formats_109 = {
+       "dci-Formats",
+       "dci-Formats",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dci_Formats_tags_109,
+       sizeof(asn_DEF_dci_Formats_tags_109)
+               /sizeof(asn_DEF_dci_Formats_tags_109[0]) - 1, /* 1 */
+       asn_DEF_dci_Formats_tags_109,   /* Same as above */
+       sizeof(asn_DEF_dci_Formats_tags_109)
+               /sizeof(asn_DEF_dci_Formats_tags_109[0]), /* 2 */
+       { &asn_OER_type_dci_Formats_constr_109, &asn_PER_type_dci_Formats_constr_109, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dci_Formats_specs_109  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ue_Specific_108[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__ue_Specific, dci_Formats),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dci_Formats_109,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dci-Formats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ue_Specific_tags_108[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ue_Specific_tag2el_108[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dci-Formats */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ue_Specific_specs_108 = {
+       sizeof(struct SearchSpace__searchSpaceType__ue_Specific),
+       offsetof(struct SearchSpace__searchSpaceType__ue_Specific, _asn_ctx),
+       asn_MAP_ue_Specific_tag2el_108,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ue_Specific_108 = {
+       "ue-Specific",
+       "ue-Specific",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ue_Specific_tags_108,
+       sizeof(asn_DEF_ue_Specific_tags_108)
+               /sizeof(asn_DEF_ue_Specific_tags_108[0]) - 1, /* 1 */
+       asn_DEF_ue_Specific_tags_108,   /* Same as above */
+       sizeof(asn_DEF_ue_Specific_tags_108)
+               /sizeof(asn_DEF_ue_Specific_tags_108[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ue_Specific_108,
+       1,      /* Elements count */
+       &asn_SPC_ue_Specific_specs_108  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_searchSpaceType_68[] = {
+       { ATF_POINTER, 0, offsetof(struct SearchSpace__searchSpaceType, choice.common),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_common_69,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "common"
+               },
+       { ATF_POINTER, 0, offsetof(struct SearchSpace__searchSpaceType, choice.ue_Specific),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_ue_Specific_108,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-Specific"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_searchSpaceType_tag2el_68[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* common */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ue-Specific */
+};
+static asn_CHOICE_specifics_t asn_SPC_searchSpaceType_specs_68 = {
+       sizeof(struct SearchSpace__searchSpaceType),
+       offsetof(struct SearchSpace__searchSpaceType, _asn_ctx),
+       offsetof(struct SearchSpace__searchSpaceType, present),
+       sizeof(((struct SearchSpace__searchSpaceType *)0)->present),
+       asn_MAP_searchSpaceType_tag2el_68,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_searchSpaceType_68 = {
+       "searchSpaceType",
+       "searchSpaceType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_searchSpaceType_constr_68, &asn_PER_type_searchSpaceType_constr_68, CHOICE_constraint },
+       asn_MBR_searchSpaceType_68,
+       2,      /* Elements count */
+       &asn_SPC_searchSpaceType_specs_68       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SearchSpace_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace, searchSpaceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SearchSpaceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceId"
+               },
+       { ATF_POINTER, 6, offsetof(struct SearchSpace, controlResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ControlResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "controlResourceSetId"
+               },
+       { ATF_POINTER, 5, offsetof(struct SearchSpace, monitoringSlotPeriodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_monitoringSlotPeriodicityAndOffset_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "monitoringSlotPeriodicityAndOffset"
+               },
+       { ATF_POINTER, 4, offsetof(struct SearchSpace, duration),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_duration_constr_20, &asn_PER_memb_duration_constr_20,  memb_duration_constraint_1 },
+               0, 0, /* No default value */
+               "duration"
+               },
+       { ATF_POINTER, 3, offsetof(struct SearchSpace, monitoringSymbolsWithinSlot),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_monitoringSymbolsWithinSlot_constr_21, &asn_PER_memb_monitoringSymbolsWithinSlot_constr_21,  memb_monitoringSymbolsWithinSlot_constraint_1 },
+               0, 0, /* No default value */
+               "monitoringSymbolsWithinSlot"
+               },
+       { ATF_POINTER, 2, offsetof(struct SearchSpace, nrofCandidates),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_nrofCandidates_22,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nrofCandidates"
+               },
+       { ATF_POINTER, 1, offsetof(struct SearchSpace, searchSpaceType),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_searchSpaceType_68,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "searchSpaceType"
+               },
+};
+static const int asn_MAP_SearchSpace_oms_1[] = { 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_SearchSpace_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SearchSpace_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* searchSpaceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* controlResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* monitoringSlotPeriodicityAndOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* duration */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* monitoringSymbolsWithinSlot */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nrofCandidates */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* searchSpaceType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SearchSpace_specs_1 = {
+       sizeof(struct SearchSpace),
+       offsetof(struct SearchSpace, _asn_ctx),
+       asn_MAP_SearchSpace_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_SearchSpace_oms_1,      /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SearchSpace = {
+       "SearchSpace",
+       "SearchSpace",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SearchSpace_tags_1,
+       sizeof(asn_DEF_SearchSpace_tags_1)
+               /sizeof(asn_DEF_SearchSpace_tags_1[0]), /* 1 */
+       asn_DEF_SearchSpace_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SearchSpace_tags_1)
+               /sizeof(asn_DEF_SearchSpace_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SearchSpace_1,
+       7,      /* Elements count */
+       &asn_SPC_SearchSpace_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SearchSpace.h b/src/codec_utils/RRC/SearchSpace.h
new file mode 100644 (file)
index 0000000..4757932
--- /dev/null
@@ -0,0 +1,288 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SearchSpace_H_
+#define        _SearchSpace_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SearchSpaceId.h"
+#include "ControlResourceSetId.h"
+#include <NativeInteger.h>
+#include <BIT_STRING.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SearchSpace__monitoringSlotPeriodicityAndOffset_PR {
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_NOTHING,     /* No components present */
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280,
+       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560
+} SearchSpace__monitoringSlotPeriodicityAndOffset_PR;
+typedef enum SearchSpace__nrofCandidates__aggregationLevel1 {
+       SearchSpace__nrofCandidates__aggregationLevel1_n0       = 0,
+       SearchSpace__nrofCandidates__aggregationLevel1_n1       = 1,
+       SearchSpace__nrofCandidates__aggregationLevel1_n2       = 2,
+       SearchSpace__nrofCandidates__aggregationLevel1_n3       = 3,
+       SearchSpace__nrofCandidates__aggregationLevel1_n4       = 4,
+       SearchSpace__nrofCandidates__aggregationLevel1_n5       = 5,
+       SearchSpace__nrofCandidates__aggregationLevel1_n6       = 6,
+       SearchSpace__nrofCandidates__aggregationLevel1_n8       = 7
+} e_SearchSpace__nrofCandidates__aggregationLevel1;
+typedef enum SearchSpace__nrofCandidates__aggregationLevel2 {
+       SearchSpace__nrofCandidates__aggregationLevel2_n0       = 0,
+       SearchSpace__nrofCandidates__aggregationLevel2_n1       = 1,
+       SearchSpace__nrofCandidates__aggregationLevel2_n2       = 2,
+       SearchSpace__nrofCandidates__aggregationLevel2_n3       = 3,
+       SearchSpace__nrofCandidates__aggregationLevel2_n4       = 4,
+       SearchSpace__nrofCandidates__aggregationLevel2_n5       = 5,
+       SearchSpace__nrofCandidates__aggregationLevel2_n6       = 6,
+       SearchSpace__nrofCandidates__aggregationLevel2_n8       = 7
+} e_SearchSpace__nrofCandidates__aggregationLevel2;
+typedef enum SearchSpace__nrofCandidates__aggregationLevel4 {
+       SearchSpace__nrofCandidates__aggregationLevel4_n0       = 0,
+       SearchSpace__nrofCandidates__aggregationLevel4_n1       = 1,
+       SearchSpace__nrofCandidates__aggregationLevel4_n2       = 2,
+       SearchSpace__nrofCandidates__aggregationLevel4_n3       = 3,
+       SearchSpace__nrofCandidates__aggregationLevel4_n4       = 4,
+       SearchSpace__nrofCandidates__aggregationLevel4_n5       = 5,
+       SearchSpace__nrofCandidates__aggregationLevel4_n6       = 6,
+       SearchSpace__nrofCandidates__aggregationLevel4_n8       = 7
+} e_SearchSpace__nrofCandidates__aggregationLevel4;
+typedef enum SearchSpace__nrofCandidates__aggregationLevel8 {
+       SearchSpace__nrofCandidates__aggregationLevel8_n0       = 0,
+       SearchSpace__nrofCandidates__aggregationLevel8_n1       = 1,
+       SearchSpace__nrofCandidates__aggregationLevel8_n2       = 2,
+       SearchSpace__nrofCandidates__aggregationLevel8_n3       = 3,
+       SearchSpace__nrofCandidates__aggregationLevel8_n4       = 4,
+       SearchSpace__nrofCandidates__aggregationLevel8_n5       = 5,
+       SearchSpace__nrofCandidates__aggregationLevel8_n6       = 6,
+       SearchSpace__nrofCandidates__aggregationLevel8_n8       = 7
+} e_SearchSpace__nrofCandidates__aggregationLevel8;
+typedef enum SearchSpace__nrofCandidates__aggregationLevel16 {
+       SearchSpace__nrofCandidates__aggregationLevel16_n0      = 0,
+       SearchSpace__nrofCandidates__aggregationLevel16_n1      = 1,
+       SearchSpace__nrofCandidates__aggregationLevel16_n2      = 2,
+       SearchSpace__nrofCandidates__aggregationLevel16_n3      = 3,
+       SearchSpace__nrofCandidates__aggregationLevel16_n4      = 4,
+       SearchSpace__nrofCandidates__aggregationLevel16_n5      = 5,
+       SearchSpace__nrofCandidates__aggregationLevel16_n6      = 6,
+       SearchSpace__nrofCandidates__aggregationLevel16_n8      = 7
+} e_SearchSpace__nrofCandidates__aggregationLevel16;
+typedef enum SearchSpace__searchSpaceType_PR {
+       SearchSpace__searchSpaceType_PR_NOTHING,        /* No components present */
+       SearchSpace__searchSpaceType_PR_common,
+       SearchSpace__searchSpaceType_PR_ue_Specific
+} SearchSpace__searchSpaceType_PR;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1 {
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n1   = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n2   = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2 {
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n1   = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n2   = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4 {
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n1   = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n2   = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8 {
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n1   = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n2   = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16 {
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n1  = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n2  = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1 {
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl1 = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl2 = 1,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl4 = 2,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl5 = 3,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl8 = 4,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl10        = 5,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl16        = 6,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl20        = 7
+} e_SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1;
+typedef enum SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2 {
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2_n1  = 0,
+       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2_n2  = 1
+} e_SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2;
+typedef enum SearchSpace__searchSpaceType__ue_Specific__dci_Formats {
+       SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0       = 0,
+       SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_1_And_1_1       = 1
+} e_SearchSpace__searchSpaceType__ue_Specific__dci_Formats;
+
+/* SearchSpace */
+typedef struct SearchSpace {
+       SearchSpaceId_t  searchSpaceId;
+       ControlResourceSetId_t  *controlResourceSetId;  /* OPTIONAL */
+       struct SearchSpace__monitoringSlotPeriodicityAndOffset {
+               SearchSpace__monitoringSlotPeriodicityAndOffset_PR present;
+               union SearchSpace__monitoringSlotPeriodicityAndOffset_u {
+                       NULL_t   sl1;
+                       long     sl2;
+                       long     sl4;
+                       long     sl5;
+                       long     sl8;
+                       long     sl10;
+                       long     sl16;
+                       long     sl20;
+                       long     sl40;
+                       long     sl80;
+                       long     sl160;
+                       long     sl320;
+                       long     sl640;
+                       long     sl1280;
+                       long     sl2560;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *monitoringSlotPeriodicityAndOffset;
+       long    *duration;      /* OPTIONAL */
+       BIT_STRING_t    *monitoringSymbolsWithinSlot;   /* OPTIONAL */
+       struct SearchSpace__nrofCandidates {
+               long     aggregationLevel1;
+               long     aggregationLevel2;
+               long     aggregationLevel4;
+               long     aggregationLevel8;
+               long     aggregationLevel16;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nrofCandidates;
+       struct SearchSpace__searchSpaceType {
+               SearchSpace__searchSpaceType_PR present;
+               union SearchSpace__searchSpaceType_u {
+                       struct SearchSpace__searchSpaceType__common {
+                               struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0 {
+                                       /*
+                                        * This type is extensible,
+                                        * possible extensions are below.
+                                        */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *dci_Format0_0_AndFormat1_0;
+                               struct SearchSpace__searchSpaceType__common__dci_Format2_0 {
+                                       struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI {
+                                               long    *aggregationLevel1;     /* OPTIONAL */
+                                               long    *aggregationLevel2;     /* OPTIONAL */
+                                               long    *aggregationLevel4;     /* OPTIONAL */
+                                               long    *aggregationLevel8;     /* OPTIONAL */
+                                               long    *aggregationLevel16;    /* OPTIONAL */
+                                               
+                                               /* Context for parsing across buffer boundaries */
+                                               asn_struct_ctx_t _asn_ctx;
+                                       } nrofCandidates_SFI;
+                                       /*
+                                        * This type is extensible,
+                                        * possible extensions are below.
+                                        */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *dci_Format2_0;
+                               struct SearchSpace__searchSpaceType__common__dci_Format2_1 {
+                                       /*
+                                        * This type is extensible,
+                                        * possible extensions are below.
+                                        */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *dci_Format2_1;
+                               struct SearchSpace__searchSpaceType__common__dci_Format2_2 {
+                                       /*
+                                        * This type is extensible,
+                                        * possible extensions are below.
+                                        */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *dci_Format2_2;
+                               struct SearchSpace__searchSpaceType__common__dci_Format2_3 {
+                                       long    *dummy1;        /* OPTIONAL */
+                                       long     dummy2;
+                                       /*
+                                        * This type is extensible,
+                                        * possible extensions are below.
+                                        */
+                                       
+                                       /* Context for parsing across buffer boundaries */
+                                       asn_struct_ctx_t _asn_ctx;
+                               } *dci_Format2_3;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *common;
+                       struct SearchSpace__searchSpaceType__ue_Specific {
+                               long     dci_Formats;
+                               /*
+                                * This type is extensible,
+                                * possible extensions are below.
+                                */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *ue_Specific;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *searchSpaceType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SearchSpace_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel1_23;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel2_32;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel4_41;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel8_50;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel16_59; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel1_74;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel2_77;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel4_80;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel8_83;  // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel16_86; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dummy1_95;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dummy2_104;    // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dci_Formats_109;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SearchSpace;
+extern asn_SEQUENCE_specifics_t asn_SPC_SearchSpace_specs_1;
+extern asn_TYPE_member_t asn_MBR_SearchSpace_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SearchSpace_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SearchSpaceId.c b/src/codec_utils/RRC/SearchSpaceId.c
new file mode 100644 (file)
index 0000000..deb9c3e
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SearchSpaceId.h"
+
+int
+SearchSpaceId_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 <= 39)) {
+               /* 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_SearchSpaceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..39) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SearchSpaceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SearchSpaceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SearchSpaceId = {
+       "SearchSpaceId",
+       "SearchSpaceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SearchSpaceId_tags_1,
+       sizeof(asn_DEF_SearchSpaceId_tags_1)
+               /sizeof(asn_DEF_SearchSpaceId_tags_1[0]), /* 1 */
+       asn_DEF_SearchSpaceId_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SearchSpaceId_tags_1)
+               /sizeof(asn_DEF_SearchSpaceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SearchSpaceId_constr_1, &asn_PER_type_SearchSpaceId_constr_1, SearchSpaceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SearchSpaceId.h b/src/codec_utils/RRC/SearchSpaceId.h
new file mode 100644 (file)
index 0000000..442df4f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SearchSpaceId_H_
+#define        _SearchSpaceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SearchSpaceId */
+typedef long    SearchSpaceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SearchSpaceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SearchSpaceId;
+asn_struct_free_f SearchSpaceId_free;
+asn_struct_print_f SearchSpaceId_print;
+asn_constr_check_f SearchSpaceId_constraint;
+ber_type_decoder_f SearchSpaceId_decode_ber;
+der_type_encoder_f SearchSpaceId_encode_der;
+xer_type_decoder_f SearchSpaceId_decode_xer;
+xer_type_encoder_f SearchSpaceId_encode_xer;
+oer_type_decoder_f SearchSpaceId_decode_oer;
+oer_type_encoder_f SearchSpaceId_encode_oer;
+per_type_decoder_f SearchSpaceId_decode_uper;
+per_type_encoder_f SearchSpaceId_encode_uper;
+per_type_decoder_f SearchSpaceId_decode_aper;
+per_type_encoder_f SearchSpaceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SearchSpaceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SearchSpaceZero.c b/src/codec_utils/RRC/SearchSpaceZero.c
new file mode 100644 (file)
index 0000000..45e5319
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SearchSpaceZero.h"
+
+int
+SearchSpaceZero_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 <= 15)) {
+               /* 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_SearchSpaceZero_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SearchSpaceZero_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SearchSpaceZero_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SearchSpaceZero = {
+       "SearchSpaceZero",
+       "SearchSpaceZero",
+       &asn_OP_NativeInteger,
+       asn_DEF_SearchSpaceZero_tags_1,
+       sizeof(asn_DEF_SearchSpaceZero_tags_1)
+               /sizeof(asn_DEF_SearchSpaceZero_tags_1[0]), /* 1 */
+       asn_DEF_SearchSpaceZero_tags_1, /* Same as above */
+       sizeof(asn_DEF_SearchSpaceZero_tags_1)
+               /sizeof(asn_DEF_SearchSpaceZero_tags_1[0]), /* 1 */
+       { &asn_OER_type_SearchSpaceZero_constr_1, &asn_PER_type_SearchSpaceZero_constr_1, SearchSpaceZero_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SearchSpaceZero.h b/src/codec_utils/RRC/SearchSpaceZero.h
new file mode 100644 (file)
index 0000000..29a69dc
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SearchSpaceZero_H_
+#define        _SearchSpaceZero_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SearchSpaceZero */
+typedef long    SearchSpaceZero_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SearchSpaceZero_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SearchSpaceZero;
+asn_struct_free_f SearchSpaceZero_free;
+asn_struct_print_f SearchSpaceZero_print;
+asn_constr_check_f SearchSpaceZero_constraint;
+ber_type_decoder_f SearchSpaceZero_decode_ber;
+der_type_encoder_f SearchSpaceZero_encode_der;
+xer_type_decoder_f SearchSpaceZero_decode_xer;
+xer_type_encoder_f SearchSpaceZero_encode_xer;
+oer_type_decoder_f SearchSpaceZero_decode_oer;
+oer_type_encoder_f SearchSpaceZero_encode_oer;
+per_type_decoder_f SearchSpaceZero_decode_uper;
+per_type_encoder_f SearchSpaceZero_encode_uper;
+per_type_decoder_f SearchSpaceZero_decode_aper;
+per_type_encoder_f SearchSpaceZero_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SearchSpaceZero_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityAlgorithmConfig.c b/src/codec_utils/RRC/SecurityAlgorithmConfig.c
new file mode 100644 (file)
index 0000000..4fb8c0e
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityAlgorithmConfig.h"
+
+asn_TYPE_member_t asn_MBR_SecurityAlgorithmConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityAlgorithmConfig, cipheringAlgorithm),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CipheringAlgorithm,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cipheringAlgorithm"
+               },
+       { ATF_POINTER, 1, offsetof(struct SecurityAlgorithmConfig, integrityProtAlgorithm),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_IntegrityProtAlgorithm,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "integrityProtAlgorithm"
+               },
+};
+static const int asn_MAP_SecurityAlgorithmConfig_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_SecurityAlgorithmConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityAlgorithmConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cipheringAlgorithm */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* integrityProtAlgorithm */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityAlgorithmConfig_specs_1 = {
+       sizeof(struct SecurityAlgorithmConfig),
+       offsetof(struct SecurityAlgorithmConfig, _asn_ctx),
+       asn_MAP_SecurityAlgorithmConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SecurityAlgorithmConfig_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityAlgorithmConfig = {
+       "SecurityAlgorithmConfig",
+       "SecurityAlgorithmConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityAlgorithmConfig_tags_1,
+       sizeof(asn_DEF_SecurityAlgorithmConfig_tags_1)
+               /sizeof(asn_DEF_SecurityAlgorithmConfig_tags_1[0]), /* 1 */
+       asn_DEF_SecurityAlgorithmConfig_tags_1, /* Same as above */
+       sizeof(asn_DEF_SecurityAlgorithmConfig_tags_1)
+               /sizeof(asn_DEF_SecurityAlgorithmConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityAlgorithmConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityAlgorithmConfig_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityAlgorithmConfig.h b/src/codec_utils/RRC/SecurityAlgorithmConfig.h
new file mode 100644 (file)
index 0000000..3b8f4a8
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityAlgorithmConfig_H_
+#define        _SecurityAlgorithmConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "CipheringAlgorithm.h"
+#include "IntegrityProtAlgorithm.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SecurityAlgorithmConfig */
+typedef struct SecurityAlgorithmConfig {
+       CipheringAlgorithm_t     cipheringAlgorithm;
+       IntegrityProtAlgorithm_t        *integrityProtAlgorithm;        /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityAlgorithmConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityAlgorithmConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityAlgorithmConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityAlgorithmConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityAlgorithmConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityConfig.c b/src/codec_utils/RRC/SecurityConfig.c
new file mode 100644 (file)
index 0000000..02a3054
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityConfig.h"
+
+#include "SecurityAlgorithmConfig.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_keyToUse_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_keyToUse_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_keyToUse_value2enum_3[] = {
+       { 0,    6,      "master" },
+       { 1,    9,      "secondary" }
+};
+static const unsigned int asn_MAP_keyToUse_enum2value_3[] = {
+       0,      /* master(0) */
+       1       /* secondary(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_keyToUse_specs_3 = {
+       asn_MAP_keyToUse_value2enum_3,  /* "tag" => N; sorted by tag */
+       asn_MAP_keyToUse_enum2value_3,  /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_keyToUse_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_keyToUse_3 = {
+       "keyToUse",
+       "keyToUse",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_keyToUse_tags_3,
+       sizeof(asn_DEF_keyToUse_tags_3)
+               /sizeof(asn_DEF_keyToUse_tags_3[0]) - 1, /* 1 */
+       asn_DEF_keyToUse_tags_3,        /* Same as above */
+       sizeof(asn_DEF_keyToUse_tags_3)
+               /sizeof(asn_DEF_keyToUse_tags_3[0]), /* 2 */
+       { &asn_OER_type_keyToUse_constr_3, &asn_PER_type_keyToUse_constr_3, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_keyToUse_specs_3       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityConfig_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SecurityConfig, securityAlgorithmConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityAlgorithmConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityAlgorithmConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct SecurityConfig, keyToUse),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_keyToUse_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "keyToUse"
+               },
+};
+static const int asn_MAP_SecurityConfig_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SecurityConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* securityAlgorithmConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* keyToUse */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityConfig_specs_1 = {
+       sizeof(struct SecurityConfig),
+       offsetof(struct SecurityConfig, _asn_ctx),
+       asn_MAP_SecurityConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SecurityConfig_oms_1,   /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityConfig = {
+       "SecurityConfig",
+       "SecurityConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityConfig_tags_1,
+       sizeof(asn_DEF_SecurityConfig_tags_1)
+               /sizeof(asn_DEF_SecurityConfig_tags_1[0]), /* 1 */
+       asn_DEF_SecurityConfig_tags_1,  /* Same as above */
+       sizeof(asn_DEF_SecurityConfig_tags_1)
+               /sizeof(asn_DEF_SecurityConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityConfig_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityConfig.h b/src/codec_utils/RRC/SecurityConfig.h
new file mode 100644 (file)
index 0000000..fde935a
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityConfig_H_
+#define        _SecurityConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SecurityConfig__keyToUse {
+       SecurityConfig__keyToUse_master = 0,
+       SecurityConfig__keyToUse_secondary      = 1
+} e_SecurityConfig__keyToUse;
+
+/* Forward declarations */
+struct SecurityAlgorithmConfig;
+
+/* SecurityConfig */
+typedef struct SecurityConfig {
+       struct SecurityAlgorithmConfig  *securityAlgorithmConfig;       /* OPTIONAL */
+       long    *keyToUse;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_keyToUse_3;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityConfigSMC.c b/src/codec_utils/RRC/SecurityConfigSMC.c
new file mode 100644 (file)
index 0000000..6e9ee70
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityConfigSMC.h"
+
+asn_TYPE_member_t asn_MBR_SecurityConfigSMC_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityConfigSMC, securityAlgorithmConfig),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityAlgorithmConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityAlgorithmConfig"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SecurityConfigSMC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityConfigSMC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* securityAlgorithmConfig */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityConfigSMC_specs_1 = {
+       sizeof(struct SecurityConfigSMC),
+       offsetof(struct SecurityConfigSMC, _asn_ctx),
+       asn_MAP_SecurityConfigSMC_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_SecurityConfigSMC = {
+       "SecurityConfigSMC",
+       "SecurityConfigSMC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityConfigSMC_tags_1,
+       sizeof(asn_DEF_SecurityConfigSMC_tags_1)
+               /sizeof(asn_DEF_SecurityConfigSMC_tags_1[0]), /* 1 */
+       asn_DEF_SecurityConfigSMC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SecurityConfigSMC_tags_1)
+               /sizeof(asn_DEF_SecurityConfigSMC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityConfigSMC_1,
+       1,      /* Elements count */
+       &asn_SPC_SecurityConfigSMC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityConfigSMC.h b/src/codec_utils/RRC/SecurityConfigSMC.h
new file mode 100644 (file)
index 0000000..8d29b05
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityConfigSMC_H_
+#define        _SecurityConfigSMC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SecurityAlgorithmConfig.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SecurityConfigSMC */
+typedef struct SecurityConfigSMC {
+       SecurityAlgorithmConfig_t        securityAlgorithmConfig;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityConfigSMC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityConfigSMC;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityConfigSMC_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityConfigSMC_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityConfigSMC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeCommand-IEs.c b/src/codec_utils/RRC/SecurityModeCommand-IEs.c
new file mode 100644 (file)
index 0000000..9d32304
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeCommand-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct SecurityModeCommand_IEs__nonCriticalExtension),
+       offsetof(struct SecurityModeCommand_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeCommand_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeCommand_IEs, securityConfigSMC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityConfigSMC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityConfigSMC"
+               },
+       { ATF_POINTER, 2, offsetof(struct SecurityModeCommand_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct SecurityModeCommand_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_SecurityModeCommand_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SecurityModeCommand_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeCommand_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* securityConfigSMC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeCommand_IEs_specs_1 = {
+       sizeof(struct SecurityModeCommand_IEs),
+       offsetof(struct SecurityModeCommand_IEs, _asn_ctx),
+       asn_MAP_SecurityModeCommand_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SecurityModeCommand_IEs_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeCommand_IEs = {
+       "SecurityModeCommand-IEs",
+       "SecurityModeCommand-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeCommand_IEs_tags_1,
+       sizeof(asn_DEF_SecurityModeCommand_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeCommand_IEs_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeCommand_IEs_tags_1, /* Same as above */
+       sizeof(asn_DEF_SecurityModeCommand_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeCommand_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeCommand_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_SecurityModeCommand_IEs_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeCommand-IEs.h b/src/codec_utils/RRC/SecurityModeCommand-IEs.h
new file mode 100644 (file)
index 0000000..57f9710
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeCommand_IEs_H_
+#define        _SecurityModeCommand_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SecurityConfigSMC.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SecurityModeCommand-IEs */
+typedef struct SecurityModeCommand_IEs {
+       SecurityConfigSMC_t      securityConfigSMC;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct SecurityModeCommand_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeCommand_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeCommand_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeCommand_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeCommand_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeCommand_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeCommand.c b/src/codec_utils/RRC/SecurityModeCommand.c
new file mode 100644 (file)
index 0000000..a71e57d
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeCommand.h"
+
+#include "SecurityModeCommand-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct SecurityModeCommand__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct SecurityModeCommand__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct SecurityModeCommand__criticalExtensions, choice.securityModeCommand),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeCommand_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeCommand"
+               },
+       { ATF_POINTER, 0, offsetof(struct SecurityModeCommand__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* securityModeCommand */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct SecurityModeCommand__criticalExtensions),
+       offsetof(struct SecurityModeCommand__criticalExtensions, _asn_ctx),
+       offsetof(struct SecurityModeCommand__criticalExtensions, present),
+       sizeof(((struct SecurityModeCommand__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeCommand_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeCommand, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeCommand, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SecurityModeCommand_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeCommand_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeCommand_specs_1 = {
+       sizeof(struct SecurityModeCommand),
+       offsetof(struct SecurityModeCommand, _asn_ctx),
+       asn_MAP_SecurityModeCommand_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeCommand = {
+       "SecurityModeCommand",
+       "SecurityModeCommand",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeCommand_tags_1,
+       sizeof(asn_DEF_SecurityModeCommand_tags_1)
+               /sizeof(asn_DEF_SecurityModeCommand_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeCommand_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SecurityModeCommand_tags_1)
+               /sizeof(asn_DEF_SecurityModeCommand_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeCommand_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityModeCommand_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeCommand.h b/src/codec_utils/RRC/SecurityModeCommand.h
new file mode 100644 (file)
index 0000000..8e61058
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeCommand_H_
+#define        _SecurityModeCommand_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SecurityModeCommand__criticalExtensions_PR {
+       SecurityModeCommand__criticalExtensions_PR_NOTHING,     /* No components present */
+       SecurityModeCommand__criticalExtensions_PR_securityModeCommand,
+       SecurityModeCommand__criticalExtensions_PR_criticalExtensionsFuture
+} SecurityModeCommand__criticalExtensions_PR;
+
+/* Forward declarations */
+struct SecurityModeCommand_IEs;
+
+/* SecurityModeCommand */
+typedef struct SecurityModeCommand {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct SecurityModeCommand__criticalExtensions {
+               SecurityModeCommand__criticalExtensions_PR present;
+               union SecurityModeCommand__criticalExtensions_u {
+                       struct SecurityModeCommand_IEs  *securityModeCommand;
+                       struct SecurityModeCommand__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeCommand_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeCommand;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeCommand_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeCommand_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeCommand_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeComplete-IEs.c b/src/codec_utils/RRC/SecurityModeComplete-IEs.c
new file mode 100644 (file)
index 0000000..38b0254
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeComplete-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct SecurityModeComplete_IEs__nonCriticalExtension),
+       offsetof(struct SecurityModeComplete_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeComplete_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SecurityModeComplete_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct SecurityModeComplete_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_SecurityModeComplete_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SecurityModeComplete_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeComplete_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeComplete_IEs_specs_1 = {
+       sizeof(struct SecurityModeComplete_IEs),
+       offsetof(struct SecurityModeComplete_IEs, _asn_ctx),
+       asn_MAP_SecurityModeComplete_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SecurityModeComplete_IEs_oms_1, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeComplete_IEs = {
+       "SecurityModeComplete-IEs",
+       "SecurityModeComplete-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeComplete_IEs_tags_1,
+       sizeof(asn_DEF_SecurityModeComplete_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeComplete_IEs_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeComplete_IEs_tags_1,        /* Same as above */
+       sizeof(asn_DEF_SecurityModeComplete_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeComplete_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeComplete_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityModeComplete_IEs_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeComplete-IEs.h b/src/codec_utils/RRC/SecurityModeComplete-IEs.h
new file mode 100644 (file)
index 0000000..450a99c
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeComplete_IEs_H_
+#define        _SecurityModeComplete_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SecurityModeComplete-IEs */
+typedef struct SecurityModeComplete_IEs {
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct SecurityModeComplete_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeComplete_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeComplete_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeComplete_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeComplete_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeComplete.c b/src/codec_utils/RRC/SecurityModeComplete.c
new file mode 100644 (file)
index 0000000..f91ef78
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeComplete.h"
+
+#include "SecurityModeComplete-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct SecurityModeComplete__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct SecurityModeComplete__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct SecurityModeComplete__criticalExtensions, choice.securityModeComplete),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeComplete_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct SecurityModeComplete__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* securityModeComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct SecurityModeComplete__criticalExtensions),
+       offsetof(struct SecurityModeComplete__criticalExtensions, _asn_ctx),
+       offsetof(struct SecurityModeComplete__criticalExtensions, present),
+       sizeof(((struct SecurityModeComplete__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeComplete_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeComplete, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeComplete, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SecurityModeComplete_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeComplete_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeComplete_specs_1 = {
+       sizeof(struct SecurityModeComplete),
+       offsetof(struct SecurityModeComplete, _asn_ctx),
+       asn_MAP_SecurityModeComplete_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeComplete = {
+       "SecurityModeComplete",
+       "SecurityModeComplete",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeComplete_tags_1,
+       sizeof(asn_DEF_SecurityModeComplete_tags_1)
+               /sizeof(asn_DEF_SecurityModeComplete_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeComplete_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SecurityModeComplete_tags_1)
+               /sizeof(asn_DEF_SecurityModeComplete_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeComplete_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityModeComplete_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeComplete.h b/src/codec_utils/RRC/SecurityModeComplete.h
new file mode 100644 (file)
index 0000000..070215c
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeComplete_H_
+#define        _SecurityModeComplete_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SecurityModeComplete__criticalExtensions_PR {
+       SecurityModeComplete__criticalExtensions_PR_NOTHING,    /* No components present */
+       SecurityModeComplete__criticalExtensions_PR_securityModeComplete,
+       SecurityModeComplete__criticalExtensions_PR_criticalExtensionsFuture
+} SecurityModeComplete__criticalExtensions_PR;
+
+/* Forward declarations */
+struct SecurityModeComplete_IEs;
+
+/* SecurityModeComplete */
+typedef struct SecurityModeComplete {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct SecurityModeComplete__criticalExtensions {
+               SecurityModeComplete__criticalExtensions_PR present;
+               union SecurityModeComplete__criticalExtensions_u {
+                       struct SecurityModeComplete_IEs *securityModeComplete;
+                       struct SecurityModeComplete__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeComplete_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeComplete;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeComplete_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeComplete_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeComplete_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeFailure-IEs.c b/src/codec_utils/RRC/SecurityModeFailure-IEs.c
new file mode 100644 (file)
index 0000000..88c359c
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeFailure-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct SecurityModeFailure_IEs__nonCriticalExtension),
+       offsetof(struct SecurityModeFailure_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeFailure_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct SecurityModeFailure_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct SecurityModeFailure_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_SecurityModeFailure_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_SecurityModeFailure_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeFailure_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeFailure_IEs_specs_1 = {
+       sizeof(struct SecurityModeFailure_IEs),
+       offsetof(struct SecurityModeFailure_IEs, _asn_ctx),
+       asn_MAP_SecurityModeFailure_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_SecurityModeFailure_IEs_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeFailure_IEs = {
+       "SecurityModeFailure-IEs",
+       "SecurityModeFailure-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeFailure_IEs_tags_1,
+       sizeof(asn_DEF_SecurityModeFailure_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeFailure_IEs_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeFailure_IEs_tags_1, /* Same as above */
+       sizeof(asn_DEF_SecurityModeFailure_IEs_tags_1)
+               /sizeof(asn_DEF_SecurityModeFailure_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeFailure_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityModeFailure_IEs_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeFailure-IEs.h b/src/codec_utils/RRC/SecurityModeFailure-IEs.h
new file mode 100644 (file)
index 0000000..b58f7b5
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeFailure_IEs_H_
+#define        _SecurityModeFailure_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SecurityModeFailure-IEs */
+typedef struct SecurityModeFailure_IEs {
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct SecurityModeFailure_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeFailure_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeFailure_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeFailure_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeFailure_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeFailure_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SecurityModeFailure.c b/src/codec_utils/RRC/SecurityModeFailure.c
new file mode 100644 (file)
index 0000000..f4c707e
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SecurityModeFailure.h"
+
+#include "SecurityModeFailure-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct SecurityModeFailure__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct SecurityModeFailure__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct SecurityModeFailure__criticalExtensions, choice.securityModeFailure),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeFailure_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeFailure"
+               },
+       { ATF_POINTER, 0, offsetof(struct SecurityModeFailure__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* securityModeFailure */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct SecurityModeFailure__criticalExtensions),
+       offsetof(struct SecurityModeFailure__criticalExtensions, _asn_ctx),
+       offsetof(struct SecurityModeFailure__criticalExtensions, present),
+       sizeof(((struct SecurityModeFailure__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SecurityModeFailure_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeFailure, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SecurityModeFailure, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SecurityModeFailure_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SecurityModeFailure_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SecurityModeFailure_specs_1 = {
+       sizeof(struct SecurityModeFailure),
+       offsetof(struct SecurityModeFailure, _asn_ctx),
+       asn_MAP_SecurityModeFailure_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SecurityModeFailure = {
+       "SecurityModeFailure",
+       "SecurityModeFailure",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SecurityModeFailure_tags_1,
+       sizeof(asn_DEF_SecurityModeFailure_tags_1)
+               /sizeof(asn_DEF_SecurityModeFailure_tags_1[0]), /* 1 */
+       asn_DEF_SecurityModeFailure_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SecurityModeFailure_tags_1)
+               /sizeof(asn_DEF_SecurityModeFailure_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SecurityModeFailure_1,
+       2,      /* Elements count */
+       &asn_SPC_SecurityModeFailure_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SecurityModeFailure.h b/src/codec_utils/RRC/SecurityModeFailure.h
new file mode 100644 (file)
index 0000000..b961569
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SecurityModeFailure_H_
+#define        _SecurityModeFailure_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SecurityModeFailure__criticalExtensions_PR {
+       SecurityModeFailure__criticalExtensions_PR_NOTHING,     /* No components present */
+       SecurityModeFailure__criticalExtensions_PR_securityModeFailure,
+       SecurityModeFailure__criticalExtensions_PR_criticalExtensionsFuture
+} SecurityModeFailure__criticalExtensions_PR;
+
+/* Forward declarations */
+struct SecurityModeFailure_IEs;
+
+/* SecurityModeFailure */
+typedef struct SecurityModeFailure {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct SecurityModeFailure__criticalExtensions {
+               SecurityModeFailure__criticalExtensions_PR present;
+               union SecurityModeFailure__criticalExtensions_u {
+                       struct SecurityModeFailure_IEs  *securityModeFailure;
+                       struct SecurityModeFailure__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SecurityModeFailure_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SecurityModeFailure;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecurityModeFailure_specs_1;
+extern asn_TYPE_member_t asn_MBR_SecurityModeFailure_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SecurityModeFailure_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ServCellIndex.c b/src/codec_utils/RRC/ServCellIndex.c
new file mode 100644 (file)
index 0000000..7a8bc6e
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ServCellIndex.h"
+
+int
+ServCellIndex_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 <= 31)) {
+               /* 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_ServCellIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ServCellIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ServCellIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ServCellIndex = {
+       "ServCellIndex",
+       "ServCellIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_ServCellIndex_tags_1,
+       sizeof(asn_DEF_ServCellIndex_tags_1)
+               /sizeof(asn_DEF_ServCellIndex_tags_1[0]), /* 1 */
+       asn_DEF_ServCellIndex_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ServCellIndex_tags_1)
+               /sizeof(asn_DEF_ServCellIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_ServCellIndex_constr_1, &asn_PER_type_ServCellIndex_constr_1, ServCellIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ServCellIndex.h b/src/codec_utils/RRC/ServCellIndex.h
new file mode 100644 (file)
index 0000000..baf43e3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ServCellIndex_H_
+#define        _ServCellIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ServCellIndex */
+typedef long    ServCellIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ServCellIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ServCellIndex;
+asn_struct_free_f ServCellIndex_free;
+asn_struct_print_f ServCellIndex_print;
+asn_constr_check_f ServCellIndex_constraint;
+ber_type_decoder_f ServCellIndex_decode_ber;
+der_type_encoder_f ServCellIndex_encode_der;
+xer_type_decoder_f ServCellIndex_decode_xer;
+xer_type_encoder_f ServCellIndex_encode_xer;
+oer_type_decoder_f ServCellIndex_decode_oer;
+oer_type_encoder_f ServCellIndex_encode_oer;
+per_type_decoder_f ServCellIndex_decode_uper;
+per_type_encoder_f ServCellIndex_encode_uper;
+per_type_decoder_f ServCellIndex_decode_aper;
+per_type_encoder_f ServCellIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ServCellIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ServingCellConfig.c b/src/codec_utils/RRC/ServingCellConfig.c
new file mode 100644 (file)
index 0000000..359e325
--- /dev/null
@@ -0,0 +1,1221 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ServingCellConfig.h"
+
+#include "TDD-UL-DL-ConfigDedicated.h"
+#include "BWP-DownlinkDedicated.h"
+#include "UplinkConfig.h"
+#include "CrossCarrierSchedulingConfig.h"
+#include "BWP-Downlink.h"
+#include "PDCCH-ServingCellConfig.h"
+#include "PDSCH-ServingCellConfig.h"
+#include "CSI-MeasConfig.h"
+#include "RateMatchPatternLTE-CRS.h"
+#include "RateMatchPattern.h"
+#include "SCS-SpecificCarrier.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.
+ */
+static int
+memb_rateMatchPatternToAddModList_constraint_79(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 <= 4)) {
+               /* 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_rateMatchPatternToReleaseList_constraint_79(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 <= 4)) {
+               /* 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_downlinkChannelBW_PerSCS_List_constraint_79(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 <= 5)) {
+               /* 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_downlinkBWP_ToReleaseList_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 <= 4)) {
+               /* 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_downlinkBWP_ToAddModList_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 <= 4)) {
+               /* 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_downlinkBWP_ToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_downlinkBWP_ToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_downlinkBWP_ToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_downlinkBWP_ToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_bwp_InactivityTimer_constr_9 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bwp_InactivityTimer_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  30 }       /* (0..30) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pdcch_ServingCellConfig_constr_44 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdcch_ServingCellConfig_constr_44 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pdsch_ServingCellConfig_constr_47 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pdsch_ServingCellConfig_constr_47 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_csi_MeasConfig_constr_50 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_csi_MeasConfig_constr_50 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_sCellDeactivationTimer_constr_53 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sCellDeactivationTimer_constr_53 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dummy_constr_72 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dummy_constr_72 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_pathlossReferenceLinking_constr_74 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pathlossReferenceLinking_constr_74 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_lte_CRS_ToMatchAround_constr_80 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_lte_CRS_ToMatchAround_constr_80 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rateMatchPatternToAddModList_constr_83 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToAddModList_constr_83 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rateMatchPatternToReleaseList_constr_85 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToReleaseList_constr_85 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_downlinkChannelBW_PerSCS_List_constr_87 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_downlinkChannelBW_PerSCS_List_constr_87 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToAddModList_constr_83 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToAddModList_constr_83 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToReleaseList_constr_85 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToReleaseList_constr_85 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_downlinkChannelBW_PerSCS_List_constr_87 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_downlinkChannelBW_PerSCS_List_constr_87 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_downlinkBWP_ToReleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_downlinkBWP_ToReleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_downlinkBWP_ToAddModList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_downlinkBWP_ToAddModList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_downlinkBWP_ToReleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_downlinkBWP_ToReleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_downlinkBWP_ToReleaseList_specs_4 = {
+       sizeof(struct ServingCellConfig__downlinkBWP_ToReleaseList),
+       offsetof(struct ServingCellConfig__downlinkBWP_ToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_downlinkBWP_ToReleaseList_4 = {
+       "downlinkBWP-ToReleaseList",
+       "downlinkBWP-ToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_downlinkBWP_ToReleaseList_tags_4,
+       sizeof(asn_DEF_downlinkBWP_ToReleaseList_tags_4)
+               /sizeof(asn_DEF_downlinkBWP_ToReleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_downlinkBWP_ToReleaseList_tags_4,       /* Same as above */
+       sizeof(asn_DEF_downlinkBWP_ToReleaseList_tags_4)
+               /sizeof(asn_DEF_downlinkBWP_ToReleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_downlinkBWP_ToReleaseList_constr_4, &asn_PER_type_downlinkBWP_ToReleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_downlinkBWP_ToReleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_downlinkBWP_ToReleaseList_specs_4      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_downlinkBWP_ToAddModList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BWP_Downlink,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_downlinkBWP_ToAddModList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_downlinkBWP_ToAddModList_specs_6 = {
+       sizeof(struct ServingCellConfig__downlinkBWP_ToAddModList),
+       offsetof(struct ServingCellConfig__downlinkBWP_ToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_downlinkBWP_ToAddModList_6 = {
+       "downlinkBWP-ToAddModList",
+       "downlinkBWP-ToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_downlinkBWP_ToAddModList_tags_6,
+       sizeof(asn_DEF_downlinkBWP_ToAddModList_tags_6)
+               /sizeof(asn_DEF_downlinkBWP_ToAddModList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_downlinkBWP_ToAddModList_tags_6,        /* Same as above */
+       sizeof(asn_DEF_downlinkBWP_ToAddModList_tags_6)
+               /sizeof(asn_DEF_downlinkBWP_ToAddModList_tags_6[0]), /* 2 */
+       { &asn_OER_type_downlinkBWP_ToAddModList_constr_6, &asn_PER_type_downlinkBWP_ToAddModList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_downlinkBWP_ToAddModList_6,
+       1,      /* Single element */
+       &asn_SPC_downlinkBWP_ToAddModList_specs_6       /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bwp_InactivityTimer_value2enum_9[] = {
+       { 0,    3,      "ms2" },
+       { 1,    3,      "ms3" },
+       { 2,    3,      "ms4" },
+       { 3,    3,      "ms5" },
+       { 4,    3,      "ms6" },
+       { 5,    3,      "ms8" },
+       { 6,    4,      "ms10" },
+       { 7,    4,      "ms20" },
+       { 8,    4,      "ms30" },
+       { 9,    4,      "ms40" },
+       { 10,   4,      "ms50" },
+       { 11,   4,      "ms60" },
+       { 12,   4,      "ms80" },
+       { 13,   5,      "ms100" },
+       { 14,   5,      "ms200" },
+       { 15,   5,      "ms300" },
+       { 16,   5,      "ms500" },
+       { 17,   5,      "ms750" },
+       { 18,   6,      "ms1280" },
+       { 19,   6,      "ms1920" },
+       { 20,   6,      "ms2560" },
+       { 21,   7,      "spare10" },
+       { 22,   6,      "spare9" },
+       { 23,   6,      "spare8" },
+       { 24,   6,      "spare7" },
+       { 25,   6,      "spare6" },
+       { 26,   6,      "spare5" },
+       { 27,   6,      "spare4" },
+       { 28,   6,      "spare3" },
+       { 29,   6,      "spare2" },
+       { 30,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_bwp_InactivityTimer_enum2value_9[] = {
+       6,      /* ms10(6) */
+       13,     /* ms100(13) */
+       18,     /* ms1280(18) */
+       19,     /* ms1920(19) */
+       0,      /* ms2(0) */
+       7,      /* ms20(7) */
+       14,     /* ms200(14) */
+       20,     /* ms2560(20) */
+       1,      /* ms3(1) */
+       8,      /* ms30(8) */
+       15,     /* ms300(15) */
+       2,      /* ms4(2) */
+       9,      /* ms40(9) */
+       3,      /* ms5(3) */
+       10,     /* ms50(10) */
+       16,     /* ms500(16) */
+       4,      /* ms6(4) */
+       11,     /* ms60(11) */
+       17,     /* ms750(17) */
+       5,      /* ms8(5) */
+       12,     /* ms80(12) */
+       30,     /* spare1(30) */
+       21,     /* spare10(21) */
+       29,     /* spare2(29) */
+       28,     /* spare3(28) */
+       27,     /* spare4(27) */
+       26,     /* spare5(26) */
+       25,     /* spare6(25) */
+       24,     /* spare7(24) */
+       23,     /* spare8(23) */
+       22      /* spare9(22) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bwp_InactivityTimer_specs_9 = {
+       asn_MAP_bwp_InactivityTimer_value2enum_9,       /* "tag" => N; sorted by tag */
+       asn_MAP_bwp_InactivityTimer_enum2value_9,       /* N => "tag"; sorted by N */
+       31,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bwp_InactivityTimer_tags_9[] = {
+       (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_bwp_InactivityTimer_9 = {
+       "bwp-InactivityTimer",
+       "bwp-InactivityTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bwp_InactivityTimer_tags_9,
+       sizeof(asn_DEF_bwp_InactivityTimer_tags_9)
+               /sizeof(asn_DEF_bwp_InactivityTimer_tags_9[0]) - 1, /* 1 */
+       asn_DEF_bwp_InactivityTimer_tags_9,     /* Same as above */
+       sizeof(asn_DEF_bwp_InactivityTimer_tags_9)
+               /sizeof(asn_DEF_bwp_InactivityTimer_tags_9[0]), /* 2 */
+       { &asn_OER_type_bwp_InactivityTimer_constr_9, &asn_PER_type_bwp_InactivityTimer_constr_9, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bwp_InactivityTimer_specs_9    /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdcch_ServingCellConfig_44[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfig__pdcch_ServingCellConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ServingCellConfig__pdcch_ServingCellConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCCH_ServingCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdcch_ServingCellConfig_tag2el_44[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdcch_ServingCellConfig_specs_44 = {
+       sizeof(struct ServingCellConfig__pdcch_ServingCellConfig),
+       offsetof(struct ServingCellConfig__pdcch_ServingCellConfig, _asn_ctx),
+       offsetof(struct ServingCellConfig__pdcch_ServingCellConfig, present),
+       sizeof(((struct ServingCellConfig__pdcch_ServingCellConfig *)0)->present),
+       asn_MAP_pdcch_ServingCellConfig_tag2el_44,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdcch_ServingCellConfig_44 = {
+       "pdcch-ServingCellConfig",
+       "pdcch-ServingCellConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdcch_ServingCellConfig_constr_44, &asn_PER_type_pdcch_ServingCellConfig_constr_44, CHOICE_constraint },
+       asn_MBR_pdcch_ServingCellConfig_44,
+       2,      /* Elements count */
+       &asn_SPC_pdcch_ServingCellConfig_specs_44       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pdsch_ServingCellConfig_47[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfig__pdsch_ServingCellConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ServingCellConfig__pdsch_ServingCellConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDSCH_ServingCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pdsch_ServingCellConfig_tag2el_47[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pdsch_ServingCellConfig_specs_47 = {
+       sizeof(struct ServingCellConfig__pdsch_ServingCellConfig),
+       offsetof(struct ServingCellConfig__pdsch_ServingCellConfig, _asn_ctx),
+       offsetof(struct ServingCellConfig__pdsch_ServingCellConfig, present),
+       sizeof(((struct ServingCellConfig__pdsch_ServingCellConfig *)0)->present),
+       asn_MAP_pdsch_ServingCellConfig_tag2el_47,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pdsch_ServingCellConfig_47 = {
+       "pdsch-ServingCellConfig",
+       "pdsch-ServingCellConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pdsch_ServingCellConfig_constr_47, &asn_PER_type_pdsch_ServingCellConfig_constr_47, CHOICE_constraint },
+       asn_MBR_pdsch_ServingCellConfig_47,
+       2,      /* Elements count */
+       &asn_SPC_pdsch_ServingCellConfig_specs_47       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_csi_MeasConfig_50[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfig__csi_MeasConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ServingCellConfig__csi_MeasConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_MeasConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_csi_MeasConfig_tag2el_50[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_csi_MeasConfig_specs_50 = {
+       sizeof(struct ServingCellConfig__csi_MeasConfig),
+       offsetof(struct ServingCellConfig__csi_MeasConfig, _asn_ctx),
+       offsetof(struct ServingCellConfig__csi_MeasConfig, present),
+       sizeof(((struct ServingCellConfig__csi_MeasConfig *)0)->present),
+       asn_MAP_csi_MeasConfig_tag2el_50,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_csi_MeasConfig_50 = {
+       "csi-MeasConfig",
+       "csi-MeasConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_csi_MeasConfig_constr_50, &asn_PER_type_csi_MeasConfig_constr_50, CHOICE_constraint },
+       asn_MBR_csi_MeasConfig_50,
+       2,      /* Elements count */
+       &asn_SPC_csi_MeasConfig_specs_50        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sCellDeactivationTimer_value2enum_53[] = {
+       { 0,    4,      "ms20" },
+       { 1,    4,      "ms40" },
+       { 2,    4,      "ms80" },
+       { 3,    5,      "ms160" },
+       { 4,    5,      "ms200" },
+       { 5,    5,      "ms240" },
+       { 6,    5,      "ms320" },
+       { 7,    5,      "ms400" },
+       { 8,    5,      "ms480" },
+       { 9,    5,      "ms520" },
+       { 10,   5,      "ms640" },
+       { 11,   5,      "ms720" },
+       { 12,   5,      "ms840" },
+       { 13,   6,      "ms1280" },
+       { 14,   6,      "spare2" },
+       { 15,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_sCellDeactivationTimer_enum2value_53[] = {
+       13,     /* ms1280(13) */
+       3,      /* ms160(3) */
+       0,      /* ms20(0) */
+       4,      /* ms200(4) */
+       5,      /* ms240(5) */
+       6,      /* ms320(6) */
+       1,      /* ms40(1) */
+       7,      /* ms400(7) */
+       8,      /* ms480(8) */
+       9,      /* ms520(9) */
+       10,     /* ms640(10) */
+       11,     /* ms720(11) */
+       2,      /* ms80(2) */
+       12,     /* ms840(12) */
+       15,     /* spare1(15) */
+       14      /* spare2(14) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sCellDeactivationTimer_specs_53 = {
+       asn_MAP_sCellDeactivationTimer_value2enum_53,   /* "tag" => N; sorted by tag */
+       asn_MAP_sCellDeactivationTimer_enum2value_53,   /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sCellDeactivationTimer_tags_53[] = {
+       (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_sCellDeactivationTimer_53 = {
+       "sCellDeactivationTimer",
+       "sCellDeactivationTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sCellDeactivationTimer_tags_53,
+       sizeof(asn_DEF_sCellDeactivationTimer_tags_53)
+               /sizeof(asn_DEF_sCellDeactivationTimer_tags_53[0]) - 1, /* 1 */
+       asn_DEF_sCellDeactivationTimer_tags_53, /* Same as above */
+       sizeof(asn_DEF_sCellDeactivationTimer_tags_53)
+               /sizeof(asn_DEF_sCellDeactivationTimer_tags_53[0]), /* 2 */
+       { &asn_OER_type_sCellDeactivationTimer_constr_53, &asn_PER_type_sCellDeactivationTimer_constr_53, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sCellDeactivationTimer_specs_53        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dummy_value2enum_72[] = {
+       { 0,    7,      "enabled" }
+};
+static const unsigned int asn_MAP_dummy_enum2value_72[] = {
+       0       /* enabled(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dummy_specs_72 = {
+       asn_MAP_dummy_value2enum_72,    /* "tag" => N; sorted by tag */
+       asn_MAP_dummy_enum2value_72,    /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dummy_tags_72[] = {
+       (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dummy_72 = {
+       "dummy",
+       "dummy",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dummy_tags_72,
+       sizeof(asn_DEF_dummy_tags_72)
+               /sizeof(asn_DEF_dummy_tags_72[0]) - 1, /* 1 */
+       asn_DEF_dummy_tags_72,  /* Same as above */
+       sizeof(asn_DEF_dummy_tags_72)
+               /sizeof(asn_DEF_dummy_tags_72[0]), /* 2 */
+       { &asn_OER_type_dummy_constr_72, &asn_PER_type_dummy_constr_72, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dummy_specs_72 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_pathlossReferenceLinking_value2enum_74[] = {
+       { 0,    5,      "pCell" },
+       { 1,    5,      "sCell" }
+};
+static const unsigned int asn_MAP_pathlossReferenceLinking_enum2value_74[] = {
+       0,      /* pCell(0) */
+       1       /* sCell(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_pathlossReferenceLinking_specs_74 = {
+       asn_MAP_pathlossReferenceLinking_value2enum_74, /* "tag" => N; sorted by tag */
+       asn_MAP_pathlossReferenceLinking_enum2value_74, /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_pathlossReferenceLinking_tags_74[] = {
+       (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_pathlossReferenceLinking_74 = {
+       "pathlossReferenceLinking",
+       "pathlossReferenceLinking",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_pathlossReferenceLinking_tags_74,
+       sizeof(asn_DEF_pathlossReferenceLinking_tags_74)
+               /sizeof(asn_DEF_pathlossReferenceLinking_tags_74[0]) - 1, /* 1 */
+       asn_DEF_pathlossReferenceLinking_tags_74,       /* Same as above */
+       sizeof(asn_DEF_pathlossReferenceLinking_tags_74)
+               /sizeof(asn_DEF_pathlossReferenceLinking_tags_74[0]), /* 2 */
+       { &asn_OER_type_pathlossReferenceLinking_constr_74, &asn_PER_type_pathlossReferenceLinking_constr_74, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_pathlossReferenceLinking_specs_74      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_lte_CRS_ToMatchAround_80[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfig__ext1__lte_CRS_ToMatchAround, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ServingCellConfig__ext1__lte_CRS_ToMatchAround, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternLTE_CRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_lte_CRS_ToMatchAround_tag2el_80[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_lte_CRS_ToMatchAround_specs_80 = {
+       sizeof(struct ServingCellConfig__ext1__lte_CRS_ToMatchAround),
+       offsetof(struct ServingCellConfig__ext1__lte_CRS_ToMatchAround, _asn_ctx),
+       offsetof(struct ServingCellConfig__ext1__lte_CRS_ToMatchAround, present),
+       sizeof(((struct ServingCellConfig__ext1__lte_CRS_ToMatchAround *)0)->present),
+       asn_MAP_lte_CRS_ToMatchAround_tag2el_80,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_lte_CRS_ToMatchAround_80 = {
+       "lte-CRS-ToMatchAround",
+       "lte-CRS-ToMatchAround",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_lte_CRS_ToMatchAround_constr_80, &asn_PER_type_lte_CRS_ToMatchAround_constr_80, CHOICE_constraint },
+       asn_MBR_lte_CRS_ToMatchAround_80,
+       2,      /* Elements count */
+       &asn_SPC_lte_CRS_ToMatchAround_specs_80 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToAddModList_83[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RateMatchPattern,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToAddModList_tags_83[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToAddModList_specs_83 = {
+       sizeof(struct ServingCellConfig__ext1__rateMatchPatternToAddModList),
+       offsetof(struct ServingCellConfig__ext1__rateMatchPatternToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToAddModList_83 = {
+       "rateMatchPatternToAddModList",
+       "rateMatchPatternToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToAddModList_tags_83,
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_83)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_83[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToAddModList_tags_83,   /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_83)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_83[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToAddModList_constr_83, &asn_PER_type_rateMatchPatternToAddModList_constr_83, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToAddModList_83,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToAddModList_specs_83  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToReleaseList_85[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToReleaseList_tags_85[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToReleaseList_specs_85 = {
+       sizeof(struct ServingCellConfig__ext1__rateMatchPatternToReleaseList),
+       offsetof(struct ServingCellConfig__ext1__rateMatchPatternToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToReleaseList_85 = {
+       "rateMatchPatternToReleaseList",
+       "rateMatchPatternToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToReleaseList_tags_85,
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_85)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_85[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToReleaseList_tags_85,  /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_85)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_85[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToReleaseList_constr_85, &asn_PER_type_rateMatchPatternToReleaseList_constr_85, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToReleaseList_85,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToReleaseList_specs_85 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_downlinkChannelBW_PerSCS_List_87[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_downlinkChannelBW_PerSCS_List_tags_87[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_downlinkChannelBW_PerSCS_List_specs_87 = {
+       sizeof(struct ServingCellConfig__ext1__downlinkChannelBW_PerSCS_List),
+       offsetof(struct ServingCellConfig__ext1__downlinkChannelBW_PerSCS_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_downlinkChannelBW_PerSCS_List_87 = {
+       "downlinkChannelBW-PerSCS-List",
+       "downlinkChannelBW-PerSCS-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_downlinkChannelBW_PerSCS_List_tags_87,
+       sizeof(asn_DEF_downlinkChannelBW_PerSCS_List_tags_87)
+               /sizeof(asn_DEF_downlinkChannelBW_PerSCS_List_tags_87[0]) - 1, /* 1 */
+       asn_DEF_downlinkChannelBW_PerSCS_List_tags_87,  /* Same as above */
+       sizeof(asn_DEF_downlinkChannelBW_PerSCS_List_tags_87)
+               /sizeof(asn_DEF_downlinkChannelBW_PerSCS_List_tags_87[0]), /* 2 */
+       { &asn_OER_type_downlinkChannelBW_PerSCS_List_constr_87, &asn_PER_type_downlinkChannelBW_PerSCS_List_constr_87, SEQUENCE_OF_constraint },
+       asn_MBR_downlinkChannelBW_PerSCS_List_87,
+       1,      /* Single element */
+       &asn_SPC_downlinkChannelBW_PerSCS_List_specs_87 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_79[] = {
+       { ATF_POINTER, 4, offsetof(struct ServingCellConfig__ext1, lte_CRS_ToMatchAround),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_lte_CRS_ToMatchAround_80,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lte-CRS-ToMatchAround"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfig__ext1, rateMatchPatternToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToAddModList_83,
+               0,
+               { &asn_OER_memb_rateMatchPatternToAddModList_constr_83, &asn_PER_memb_rateMatchPatternToAddModList_constr_83,  memb_rateMatchPatternToAddModList_constraint_79 },
+               0, 0, /* No default value */
+               "rateMatchPatternToAddModList"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfig__ext1, rateMatchPatternToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToReleaseList_85,
+               0,
+               { &asn_OER_memb_rateMatchPatternToReleaseList_constr_85, &asn_PER_memb_rateMatchPatternToReleaseList_constr_85,  memb_rateMatchPatternToReleaseList_constraint_79 },
+               0, 0, /* No default value */
+               "rateMatchPatternToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfig__ext1, downlinkChannelBW_PerSCS_List),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_downlinkChannelBW_PerSCS_List_87,
+               0,
+               { &asn_OER_memb_downlinkChannelBW_PerSCS_List_constr_87, &asn_PER_memb_downlinkChannelBW_PerSCS_List_constr_87,  memb_downlinkChannelBW_PerSCS_List_constraint_79 },
+               0, 0, /* No default value */
+               "downlinkChannelBW-PerSCS-List"
+               },
+};
+static const int asn_MAP_ext1_oms_79[] = { 0, 1, 2, 3 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_79[] = {
+       (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_79[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* lte-CRS-ToMatchAround */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rateMatchPatternToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rateMatchPatternToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* downlinkChannelBW-PerSCS-List */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_79 = {
+       sizeof(struct ServingCellConfig__ext1),
+       offsetof(struct ServingCellConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_79,
+       4,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_79,    /* Optional members */
+       4, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_79 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_79,
+       sizeof(asn_DEF_ext1_tags_79)
+               /sizeof(asn_DEF_ext1_tags_79[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_79,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_79)
+               /sizeof(asn_DEF_ext1_tags_79[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_79,
+       4,      /* Elements count */
+       &asn_SPC_ext1_specs_79  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ServingCellConfig_1[] = {
+       { ATF_POINTER, 14, offsetof(struct ServingCellConfig, tdd_UL_DL_ConfigurationDedicated),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_ConfigDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-UL-DL-ConfigurationDedicated"
+               },
+       { ATF_POINTER, 13, offsetof(struct ServingCellConfig, initialDownlinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_DownlinkDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialDownlinkBWP"
+               },
+       { ATF_POINTER, 12, offsetof(struct ServingCellConfig, downlinkBWP_ToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_downlinkBWP_ToReleaseList_4,
+               0,
+               { &asn_OER_memb_downlinkBWP_ToReleaseList_constr_4, &asn_PER_memb_downlinkBWP_ToReleaseList_constr_4,  memb_downlinkBWP_ToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "downlinkBWP-ToReleaseList"
+               },
+       { ATF_POINTER, 11, offsetof(struct ServingCellConfig, downlinkBWP_ToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_downlinkBWP_ToAddModList_6,
+               0,
+               { &asn_OER_memb_downlinkBWP_ToAddModList_constr_6, &asn_PER_memb_downlinkBWP_ToAddModList_constr_6,  memb_downlinkBWP_ToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "downlinkBWP-ToAddModList"
+               },
+       { ATF_POINTER, 10, offsetof(struct ServingCellConfig, firstActiveDownlinkBWP_Id),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "firstActiveDownlinkBWP-Id"
+               },
+       { ATF_POINTER, 9, offsetof(struct ServingCellConfig, bwp_InactivityTimer),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bwp_InactivityTimer_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-InactivityTimer"
+               },
+       { ATF_POINTER, 8, offsetof(struct ServingCellConfig, defaultDownlinkBWP_Id),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "defaultDownlinkBWP-Id"
+               },
+       { ATF_POINTER, 7, offsetof(struct ServingCellConfig, uplinkConfig),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkConfig"
+               },
+       { ATF_POINTER, 6, offsetof(struct ServingCellConfig, supplementaryUplink),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supplementaryUplink"
+               },
+       { ATF_POINTER, 5, offsetof(struct ServingCellConfig, pdcch_ServingCellConfig),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdcch_ServingCellConfig_44,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcch-ServingCellConfig"
+               },
+       { ATF_POINTER, 4, offsetof(struct ServingCellConfig, pdsch_ServingCellConfig),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pdsch_ServingCellConfig_47,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdsch-ServingCellConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfig, csi_MeasConfig),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_csi_MeasConfig_50,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-MeasConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfig, sCellDeactivationTimer),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sCellDeactivationTimer_53,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sCellDeactivationTimer"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfig, crossCarrierSchedulingConfig),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CrossCarrierSchedulingConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "crossCarrierSchedulingConfig"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfig, tag_Id),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TAG_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tag-Id"
+               },
+       { ATF_POINTER, 4, offsetof(struct ServingCellConfig, dummy),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dummy_72,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfig, pathlossReferenceLinking),
+               (ASN_TAG_CLASS_CONTEXT | (16 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_pathlossReferenceLinking_74,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pathlossReferenceLinking"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfig, servingCellMO),
+               (ASN_TAG_CLASS_CONTEXT | (17 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellMO"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (18 << 2)),
+               0,
+               &asn_DEF_ext1_79,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_ServingCellConfig_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18 };
+static const ber_tlv_tag_t asn_DEF_ServingCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ServingCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tdd-UL-DL-ConfigurationDedicated */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialDownlinkBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* downlinkBWP-ToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* downlinkBWP-ToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* firstActiveDownlinkBWP-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* bwp-InactivityTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* defaultDownlinkBWP-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* uplinkConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* supplementaryUplink */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pdcch-ServingCellConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* pdsch-ServingCellConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* csi-MeasConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sCellDeactivationTimer */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* crossCarrierSchedulingConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* tag-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 }, /* dummy */
+    { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 16, 0, 0 }, /* pathlossReferenceLinking */
+    { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 17, 0, 0 }, /* servingCellMO */
+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 18, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfig_specs_1 = {
+       sizeof(struct ServingCellConfig),
+       offsetof(struct ServingCellConfig, _asn_ctx),
+       asn_MAP_ServingCellConfig_tag2el_1,
+       19,     /* Count of tags in the map */
+       asn_MAP_ServingCellConfig_oms_1,        /* Optional members */
+       17, 1,  /* Root/Additions */
+       18,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ServingCellConfig = {
+       "ServingCellConfig",
+       "ServingCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ServingCellConfig_tags_1,
+       sizeof(asn_DEF_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_ServingCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_ServingCellConfig_tags_1,       /* Same as above */
+       sizeof(asn_DEF_ServingCellConfig_tags_1)
+               /sizeof(asn_DEF_ServingCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ServingCellConfig_1,
+       19,     /* Elements count */
+       &asn_SPC_ServingCellConfig_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ServingCellConfig.h b/src/codec_utils/RRC/ServingCellConfig.h
new file mode 100644 (file)
index 0000000..d9c7cff
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ServingCellConfig_H_
+#define        _ServingCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include <NativeEnumerated.h>
+#include "TAG-Id.h"
+#include "MeasObjectId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include "RateMatchPatternId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ServingCellConfig__bwp_InactivityTimer {
+       ServingCellConfig__bwp_InactivityTimer_ms2      = 0,
+       ServingCellConfig__bwp_InactivityTimer_ms3      = 1,
+       ServingCellConfig__bwp_InactivityTimer_ms4      = 2,
+       ServingCellConfig__bwp_InactivityTimer_ms5      = 3,
+       ServingCellConfig__bwp_InactivityTimer_ms6      = 4,
+       ServingCellConfig__bwp_InactivityTimer_ms8      = 5,
+       ServingCellConfig__bwp_InactivityTimer_ms10     = 6,
+       ServingCellConfig__bwp_InactivityTimer_ms20     = 7,
+       ServingCellConfig__bwp_InactivityTimer_ms30     = 8,
+       ServingCellConfig__bwp_InactivityTimer_ms40     = 9,
+       ServingCellConfig__bwp_InactivityTimer_ms50     = 10,
+       ServingCellConfig__bwp_InactivityTimer_ms60     = 11,
+       ServingCellConfig__bwp_InactivityTimer_ms80     = 12,
+       ServingCellConfig__bwp_InactivityTimer_ms100    = 13,
+       ServingCellConfig__bwp_InactivityTimer_ms200    = 14,
+       ServingCellConfig__bwp_InactivityTimer_ms300    = 15,
+       ServingCellConfig__bwp_InactivityTimer_ms500    = 16,
+       ServingCellConfig__bwp_InactivityTimer_ms750    = 17,
+       ServingCellConfig__bwp_InactivityTimer_ms1280   = 18,
+       ServingCellConfig__bwp_InactivityTimer_ms1920   = 19,
+       ServingCellConfig__bwp_InactivityTimer_ms2560   = 20,
+       ServingCellConfig__bwp_InactivityTimer_spare10  = 21,
+       ServingCellConfig__bwp_InactivityTimer_spare9   = 22,
+       ServingCellConfig__bwp_InactivityTimer_spare8   = 23,
+       ServingCellConfig__bwp_InactivityTimer_spare7   = 24,
+       ServingCellConfig__bwp_InactivityTimer_spare6   = 25,
+       ServingCellConfig__bwp_InactivityTimer_spare5   = 26,
+       ServingCellConfig__bwp_InactivityTimer_spare4   = 27,
+       ServingCellConfig__bwp_InactivityTimer_spare3   = 28,
+       ServingCellConfig__bwp_InactivityTimer_spare2   = 29,
+       ServingCellConfig__bwp_InactivityTimer_spare1   = 30
+} e_ServingCellConfig__bwp_InactivityTimer;
+typedef enum ServingCellConfig__pdcch_ServingCellConfig_PR {
+       ServingCellConfig__pdcch_ServingCellConfig_PR_NOTHING,  /* No components present */
+       ServingCellConfig__pdcch_ServingCellConfig_PR_release,
+       ServingCellConfig__pdcch_ServingCellConfig_PR_setup
+} ServingCellConfig__pdcch_ServingCellConfig_PR;
+typedef enum ServingCellConfig__pdsch_ServingCellConfig_PR {
+       ServingCellConfig__pdsch_ServingCellConfig_PR_NOTHING,  /* No components present */
+       ServingCellConfig__pdsch_ServingCellConfig_PR_release,
+       ServingCellConfig__pdsch_ServingCellConfig_PR_setup
+} ServingCellConfig__pdsch_ServingCellConfig_PR;
+typedef enum ServingCellConfig__csi_MeasConfig_PR {
+       ServingCellConfig__csi_MeasConfig_PR_NOTHING,   /* No components present */
+       ServingCellConfig__csi_MeasConfig_PR_release,
+       ServingCellConfig__csi_MeasConfig_PR_setup
+} ServingCellConfig__csi_MeasConfig_PR;
+typedef enum ServingCellConfig__sCellDeactivationTimer {
+       ServingCellConfig__sCellDeactivationTimer_ms20  = 0,
+       ServingCellConfig__sCellDeactivationTimer_ms40  = 1,
+       ServingCellConfig__sCellDeactivationTimer_ms80  = 2,
+       ServingCellConfig__sCellDeactivationTimer_ms160 = 3,
+       ServingCellConfig__sCellDeactivationTimer_ms200 = 4,
+       ServingCellConfig__sCellDeactivationTimer_ms240 = 5,
+       ServingCellConfig__sCellDeactivationTimer_ms320 = 6,
+       ServingCellConfig__sCellDeactivationTimer_ms400 = 7,
+       ServingCellConfig__sCellDeactivationTimer_ms480 = 8,
+       ServingCellConfig__sCellDeactivationTimer_ms520 = 9,
+       ServingCellConfig__sCellDeactivationTimer_ms640 = 10,
+       ServingCellConfig__sCellDeactivationTimer_ms720 = 11,
+       ServingCellConfig__sCellDeactivationTimer_ms840 = 12,
+       ServingCellConfig__sCellDeactivationTimer_ms1280        = 13,
+       ServingCellConfig__sCellDeactivationTimer_spare2        = 14,
+       ServingCellConfig__sCellDeactivationTimer_spare1        = 15
+} e_ServingCellConfig__sCellDeactivationTimer;
+typedef enum ServingCellConfig__dummy {
+       ServingCellConfig__dummy_enabled        = 0
+} e_ServingCellConfig__dummy;
+typedef enum ServingCellConfig__pathlossReferenceLinking {
+       ServingCellConfig__pathlossReferenceLinking_pCell       = 0,
+       ServingCellConfig__pathlossReferenceLinking_sCell       = 1
+} e_ServingCellConfig__pathlossReferenceLinking;
+typedef enum ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR {
+       ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR_NOTHING,      /* No components present */
+       ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR_release,
+       ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR_setup
+} ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR;
+
+/* Forward declarations */
+struct TDD_UL_DL_ConfigDedicated;
+struct BWP_DownlinkDedicated;
+struct UplinkConfig;
+struct CrossCarrierSchedulingConfig;
+struct BWP_Downlink;
+struct PDCCH_ServingCellConfig;
+struct PDSCH_ServingCellConfig;
+struct CSI_MeasConfig;
+struct RateMatchPatternLTE_CRS;
+struct RateMatchPattern;
+struct SCS_SpecificCarrier;
+
+/* ServingCellConfig */
+typedef struct ServingCellConfig {
+       struct TDD_UL_DL_ConfigDedicated        *tdd_UL_DL_ConfigurationDedicated;      /* OPTIONAL */
+       struct BWP_DownlinkDedicated    *initialDownlinkBWP;    /* OPTIONAL */
+       struct ServingCellConfig__downlinkBWP_ToReleaseList {
+               A_SEQUENCE_OF(BWP_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *downlinkBWP_ToReleaseList;
+       struct ServingCellConfig__downlinkBWP_ToAddModList {
+               A_SEQUENCE_OF(struct BWP_Downlink) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *downlinkBWP_ToAddModList;
+       BWP_Id_t        *firstActiveDownlinkBWP_Id;     /* OPTIONAL */
+       long    *bwp_InactivityTimer;   /* OPTIONAL */
+       BWP_Id_t        *defaultDownlinkBWP_Id; /* OPTIONAL */
+       struct UplinkConfig     *uplinkConfig;  /* OPTIONAL */
+       struct UplinkConfig     *supplementaryUplink;   /* OPTIONAL */
+       struct ServingCellConfig__pdcch_ServingCellConfig {
+               ServingCellConfig__pdcch_ServingCellConfig_PR present;
+               union ServingCellConfig__pdcch_ServingCellConfig_u {
+                       NULL_t   release;
+                       struct PDCCH_ServingCellConfig  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdcch_ServingCellConfig;
+       struct ServingCellConfig__pdsch_ServingCellConfig {
+               ServingCellConfig__pdsch_ServingCellConfig_PR present;
+               union ServingCellConfig__pdsch_ServingCellConfig_u {
+                       NULL_t   release;
+                       struct PDSCH_ServingCellConfig  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pdsch_ServingCellConfig;
+       struct ServingCellConfig__csi_MeasConfig {
+               ServingCellConfig__csi_MeasConfig_PR present;
+               union ServingCellConfig__csi_MeasConfig_u {
+                       NULL_t   release;
+                       struct CSI_MeasConfig   *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *csi_MeasConfig;
+       long    *sCellDeactivationTimer;        /* OPTIONAL */
+       struct CrossCarrierSchedulingConfig     *crossCarrierSchedulingConfig;  /* OPTIONAL */
+       TAG_Id_t         tag_Id;
+       long    *dummy; /* OPTIONAL */
+       long    *pathlossReferenceLinking;      /* OPTIONAL */
+       MeasObjectId_t  *servingCellMO; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct ServingCellConfig__ext1 {
+               struct ServingCellConfig__ext1__lte_CRS_ToMatchAround {
+                       ServingCellConfig__ext1__lte_CRS_ToMatchAround_PR present;
+                       union ServingCellConfig__ext1__lte_CRS_ToMatchAround_u {
+                               NULL_t   release;
+                               struct RateMatchPatternLTE_CRS  *setup;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *lte_CRS_ToMatchAround;
+               struct ServingCellConfig__ext1__rateMatchPatternToAddModList {
+                       A_SEQUENCE_OF(struct RateMatchPattern) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *rateMatchPatternToAddModList;
+               struct ServingCellConfig__ext1__rateMatchPatternToReleaseList {
+                       A_SEQUENCE_OF(RateMatchPatternId_t) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *rateMatchPatternToReleaseList;
+               struct ServingCellConfig__ext1__downlinkChannelBW_PerSCS_List {
+                       A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *downlinkChannelBW_PerSCS_List;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ServingCellConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_bwp_InactivityTimer_9; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sCellDeactivationTimer_53;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dummy_72;      // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_pathlossReferenceLinking_74;   // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ServingCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_ServingCellConfig_1[19];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ServingCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ServingCellConfigCommon.c b/src/codec_utils/RRC/ServingCellConfigCommon.c
new file mode 100644 (file)
index 0000000..0272430
--- /dev/null
@@ -0,0 +1,780 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ServingCellConfigCommon.h"
+
+#include "DownlinkConfigCommon.h"
+#include "UplinkConfigCommon.h"
+#include "TDD-UL-DL-ConfigCommon.h"
+#include "RateMatchPatternLTE-CRS.h"
+#include "RateMatchPattern.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_shortBitmap_constraint_10(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 == 4)) {
+               /* 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_mediumBitmap_constraint_10(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;
+       }
+}
+
+static int
+memb_longBitmap_constraint_10(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 == 64)) {
+               /* 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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_rateMatchPatternToAddModList_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 <= 4)) {
+               /* 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_rateMatchPatternToReleaseList_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 <= 4)) {
+               /* 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_ss_PBCH_BlockPower_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 >= -60 && value <= 50)) {
+               /* 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_n_TimingAdvanceOffset_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n_TimingAdvanceOffset_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_shortBitmap_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_shortBitmap_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_mediumBitmap_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_mediumBitmap_constr_12 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_longBitmap_constr_13 CC_NOTUSED = {
+       { 0, 0 },
+       64      /* (SIZE(64..64)) */};
+static asn_per_constraints_t asn_PER_memb_longBitmap_constr_13 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  64,  64 }      /* (SIZE(64..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_PositionsInBurst_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_PositionsInBurst_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_periodicityServingCell_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_periodicityServingCell_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dmrs_TypeA_Position_constr_23 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dmrs_TypeA_Position_constr_23 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_lte_CRS_ToMatchAround_constr_26 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_lte_CRS_ToMatchAround_constr_26 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rateMatchPatternToAddModList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToAddModList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_rateMatchPatternToReleaseList_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_rateMatchPatternToReleaseList_constr_31 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToAddModList_constr_29 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToAddModList_constr_29 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_rateMatchPatternToReleaseList_constr_31 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_rateMatchPatternToReleaseList_constr_31 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ss_PBCH_BlockPower_constr_35 CC_NOTUSED = {
+       { 1, 0 }        /* (-60..50) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ss_PBCH_BlockPower_constr_35 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7, -60,  50 }      /* (-60..50) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_n_TimingAdvanceOffset_value2enum_6[] = {
+       { 0,    2,      "n0" },
+       { 1,    6,      "n25600" },
+       { 2,    6,      "n39936" }
+};
+static const unsigned int asn_MAP_n_TimingAdvanceOffset_enum2value_6[] = {
+       0,      /* n0(0) */
+       1,      /* n25600(1) */
+       2       /* n39936(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n_TimingAdvanceOffset_specs_6 = {
+       asn_MAP_n_TimingAdvanceOffset_value2enum_6,     /* "tag" => N; sorted by tag */
+       asn_MAP_n_TimingAdvanceOffset_enum2value_6,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n_TimingAdvanceOffset_tags_6[] = {
+       (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_n_TimingAdvanceOffset_6 = {
+       "n-TimingAdvanceOffset",
+       "n-TimingAdvanceOffset",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n_TimingAdvanceOffset_tags_6,
+       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_6)
+               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_6[0]) - 1, /* 1 */
+       asn_DEF_n_TimingAdvanceOffset_tags_6,   /* Same as above */
+       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_6)
+               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_6[0]), /* 2 */
+       { &asn_OER_type_n_TimingAdvanceOffset_constr_6, &asn_PER_type_n_TimingAdvanceOffset_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n_TimingAdvanceOffset_specs_6  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ssb_PositionsInBurst_10[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon__ssb_PositionsInBurst, choice.shortBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_shortBitmap_constr_11, &asn_PER_memb_shortBitmap_constr_11,  memb_shortBitmap_constraint_10 },
+               0, 0, /* No default value */
+               "shortBitmap"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon__ssb_PositionsInBurst, choice.mediumBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_mediumBitmap_constr_12, &asn_PER_memb_mediumBitmap_constr_12,  memb_mediumBitmap_constraint_10 },
+               0, 0, /* No default value */
+               "mediumBitmap"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon__ssb_PositionsInBurst, choice.longBitmap),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_longBitmap_constr_13, &asn_PER_memb_longBitmap_constr_13,  memb_longBitmap_constraint_10 },
+               0, 0, /* No default value */
+               "longBitmap"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_ssb_PositionsInBurst_tag2el_10[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* shortBitmap */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mediumBitmap */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* longBitmap */
+};
+static asn_CHOICE_specifics_t asn_SPC_ssb_PositionsInBurst_specs_10 = {
+       sizeof(struct ServingCellConfigCommon__ssb_PositionsInBurst),
+       offsetof(struct ServingCellConfigCommon__ssb_PositionsInBurst, _asn_ctx),
+       offsetof(struct ServingCellConfigCommon__ssb_PositionsInBurst, present),
+       sizeof(((struct ServingCellConfigCommon__ssb_PositionsInBurst *)0)->present),
+       asn_MAP_ssb_PositionsInBurst_tag2el_10,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_PositionsInBurst_10 = {
+       "ssb-PositionsInBurst",
+       "ssb-PositionsInBurst",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_ssb_PositionsInBurst_constr_10, &asn_PER_type_ssb_PositionsInBurst_constr_10, CHOICE_constraint },
+       asn_MBR_ssb_PositionsInBurst_10,
+       3,      /* Elements count */
+       &asn_SPC_ssb_PositionsInBurst_specs_10  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_periodicityServingCell_value2enum_14[] = {
+       { 0,    3,      "ms5" },
+       { 1,    4,      "ms10" },
+       { 2,    4,      "ms20" },
+       { 3,    4,      "ms40" },
+       { 4,    4,      "ms80" },
+       { 5,    5,      "ms160" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_ssb_periodicityServingCell_enum2value_14[] = {
+       1,      /* ms10(1) */
+       5,      /* ms160(5) */
+       2,      /* ms20(2) */
+       3,      /* ms40(3) */
+       0,      /* ms5(0) */
+       4,      /* ms80(4) */
+       7,      /* spare1(7) */
+       6       /* spare2(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_periodicityServingCell_specs_14 = {
+       asn_MAP_ssb_periodicityServingCell_value2enum_14,       /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_periodicityServingCell_enum2value_14,       /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_periodicityServingCell_tags_14[] = {
+       (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_ssb_periodicityServingCell_14 = {
+       "ssb-periodicityServingCell",
+       "ssb-periodicityServingCell",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_periodicityServingCell_tags_14,
+       sizeof(asn_DEF_ssb_periodicityServingCell_tags_14)
+               /sizeof(asn_DEF_ssb_periodicityServingCell_tags_14[0]) - 1, /* 1 */
+       asn_DEF_ssb_periodicityServingCell_tags_14,     /* Same as above */
+       sizeof(asn_DEF_ssb_periodicityServingCell_tags_14)
+               /sizeof(asn_DEF_ssb_periodicityServingCell_tags_14[0]), /* 2 */
+       { &asn_OER_type_ssb_periodicityServingCell_constr_14, &asn_PER_type_ssb_periodicityServingCell_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_periodicityServingCell_specs_14    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dmrs_TypeA_Position_value2enum_23[] = {
+       { 0,    4,      "pos2" },
+       { 1,    4,      "pos3" }
+};
+static const unsigned int asn_MAP_dmrs_TypeA_Position_enum2value_23[] = {
+       0,      /* pos2(0) */
+       1       /* pos3(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dmrs_TypeA_Position_specs_23 = {
+       asn_MAP_dmrs_TypeA_Position_value2enum_23,      /* "tag" => N; sorted by tag */
+       asn_MAP_dmrs_TypeA_Position_enum2value_23,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dmrs_TypeA_Position_tags_23[] = {
+       (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_dmrs_TypeA_Position_23 = {
+       "dmrs-TypeA-Position",
+       "dmrs-TypeA-Position",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dmrs_TypeA_Position_tags_23,
+       sizeof(asn_DEF_dmrs_TypeA_Position_tags_23)
+               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_23[0]) - 1, /* 1 */
+       asn_DEF_dmrs_TypeA_Position_tags_23,    /* Same as above */
+       sizeof(asn_DEF_dmrs_TypeA_Position_tags_23)
+               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_23[0]), /* 2 */
+       { &asn_OER_type_dmrs_TypeA_Position_constr_23, &asn_PER_type_dmrs_TypeA_Position_constr_23, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dmrs_TypeA_Position_specs_23   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_lte_CRS_ToMatchAround_26[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon__lte_CRS_ToMatchAround, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct ServingCellConfigCommon__lte_CRS_ToMatchAround, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RateMatchPatternLTE_CRS,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_lte_CRS_ToMatchAround_tag2el_26[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_lte_CRS_ToMatchAround_specs_26 = {
+       sizeof(struct ServingCellConfigCommon__lte_CRS_ToMatchAround),
+       offsetof(struct ServingCellConfigCommon__lte_CRS_ToMatchAround, _asn_ctx),
+       offsetof(struct ServingCellConfigCommon__lte_CRS_ToMatchAround, present),
+       sizeof(((struct ServingCellConfigCommon__lte_CRS_ToMatchAround *)0)->present),
+       asn_MAP_lte_CRS_ToMatchAround_tag2el_26,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_lte_CRS_ToMatchAround_26 = {
+       "lte-CRS-ToMatchAround",
+       "lte-CRS-ToMatchAround",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_lte_CRS_ToMatchAround_constr_26, &asn_PER_type_lte_CRS_ToMatchAround_constr_26, CHOICE_constraint },
+       asn_MBR_lte_CRS_ToMatchAround_26,
+       2,      /* Elements count */
+       &asn_SPC_lte_CRS_ToMatchAround_specs_26 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToAddModList_29[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_RateMatchPattern,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToAddModList_tags_29[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToAddModList_specs_29 = {
+       sizeof(struct ServingCellConfigCommon__rateMatchPatternToAddModList),
+       offsetof(struct ServingCellConfigCommon__rateMatchPatternToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToAddModList_29 = {
+       "rateMatchPatternToAddModList",
+       "rateMatchPatternToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToAddModList_tags_29,
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_29)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_29[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToAddModList_tags_29,   /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToAddModList_tags_29)
+               /sizeof(asn_DEF_rateMatchPatternToAddModList_tags_29[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToAddModList_constr_29, &asn_PER_type_rateMatchPatternToAddModList_constr_29, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToAddModList_29,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToAddModList_specs_29  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_rateMatchPatternToReleaseList_31[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_RateMatchPatternId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_rateMatchPatternToReleaseList_tags_31[] = {
+       (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_rateMatchPatternToReleaseList_specs_31 = {
+       sizeof(struct ServingCellConfigCommon__rateMatchPatternToReleaseList),
+       offsetof(struct ServingCellConfigCommon__rateMatchPatternToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rateMatchPatternToReleaseList_31 = {
+       "rateMatchPatternToReleaseList",
+       "rateMatchPatternToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_rateMatchPatternToReleaseList_tags_31,
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_31)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_31[0]) - 1, /* 1 */
+       asn_DEF_rateMatchPatternToReleaseList_tags_31,  /* Same as above */
+       sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_31)
+               /sizeof(asn_DEF_rateMatchPatternToReleaseList_tags_31[0]), /* 2 */
+       { &asn_OER_type_rateMatchPatternToReleaseList_constr_31, &asn_PER_type_rateMatchPatternToReleaseList_constr_31, SEQUENCE_OF_constraint },
+       asn_MBR_rateMatchPatternToReleaseList_31,
+       1,      /* Single element */
+       &asn_SPC_rateMatchPatternToReleaseList_specs_31 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ServingCellConfigCommon_1[] = {
+       { ATF_POINTER, 7, offsetof(struct ServingCellConfigCommon, physCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "physCellId"
+               },
+       { ATF_POINTER, 6, offsetof(struct ServingCellConfigCommon, downlinkConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DownlinkConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkConfigCommon"
+               },
+       { ATF_POINTER, 5, offsetof(struct ServingCellConfigCommon, uplinkConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkConfigCommon"
+               },
+       { ATF_POINTER, 4, offsetof(struct ServingCellConfigCommon, supplementaryUplinkConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supplementaryUplinkConfig"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfigCommon, n_TimingAdvanceOffset),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n_TimingAdvanceOffset_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n-TimingAdvanceOffset"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfigCommon, ssb_PositionsInBurst),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_ssb_PositionsInBurst_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-PositionsInBurst"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommon, ssb_periodicityServingCell),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_periodicityServingCell_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-periodicityServingCell"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon, dmrs_TypeA_Position),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dmrs_TypeA_Position_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dmrs-TypeA-Position"
+               },
+       { ATF_POINTER, 5, offsetof(struct ServingCellConfigCommon, lte_CRS_ToMatchAround),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_lte_CRS_ToMatchAround_26,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lte-CRS-ToMatchAround"
+               },
+       { ATF_POINTER, 4, offsetof(struct ServingCellConfigCommon, rateMatchPatternToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToAddModList_29,
+               0,
+               { &asn_OER_memb_rateMatchPatternToAddModList_constr_29, &asn_PER_memb_rateMatchPatternToAddModList_constr_29,  memb_rateMatchPatternToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "rateMatchPatternToAddModList"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfigCommon, rateMatchPatternToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               0,
+               &asn_DEF_rateMatchPatternToReleaseList_31,
+               0,
+               { &asn_OER_memb_rateMatchPatternToReleaseList_constr_31, &asn_PER_memb_rateMatchPatternToReleaseList_constr_31,  memb_rateMatchPatternToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "rateMatchPatternToReleaseList"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfigCommon, ssbSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssbSubcarrierSpacing"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommon, tdd_UL_DL_ConfigurationCommon),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-UL-DL-ConfigurationCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommon, ss_PBCH_BlockPower),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ss_PBCH_BlockPower_constr_35, &asn_PER_memb_ss_PBCH_BlockPower_constr_35,  memb_ss_PBCH_BlockPower_constraint_1 },
+               0, 0, /* No default value */
+               "ss-PBCH-BlockPower"
+               },
+};
+static const int asn_MAP_ServingCellConfigCommon_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12 };
+static const ber_tlv_tag_t asn_DEF_ServingCellConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ServingCellConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* physCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* downlinkConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uplinkConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* supplementaryUplinkConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* n-TimingAdvanceOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ssb-PositionsInBurst */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* ssb-periodicityServingCell */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* dmrs-TypeA-Position */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* lte-CRS-ToMatchAround */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* rateMatchPatternToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* rateMatchPatternToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ssbSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* tdd-UL-DL-ConfigurationCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 } /* ss-PBCH-BlockPower */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommon_specs_1 = {
+       sizeof(struct ServingCellConfigCommon),
+       offsetof(struct ServingCellConfigCommon, _asn_ctx),
+       asn_MAP_ServingCellConfigCommon_tag2el_1,
+       14,     /* Count of tags in the map */
+       asn_MAP_ServingCellConfigCommon_oms_1,  /* Optional members */
+       12, 0,  /* Root/Additions */
+       14,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommon = {
+       "ServingCellConfigCommon",
+       "ServingCellConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ServingCellConfigCommon_tags_1,
+       sizeof(asn_DEF_ServingCellConfigCommon_tags_1)
+               /sizeof(asn_DEF_ServingCellConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_ServingCellConfigCommon_tags_1, /* Same as above */
+       sizeof(asn_DEF_ServingCellConfigCommon_tags_1)
+               /sizeof(asn_DEF_ServingCellConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ServingCellConfigCommon_1,
+       14,     /* Elements count */
+       &asn_SPC_ServingCellConfigCommon_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ServingCellConfigCommon.h b/src/codec_utils/RRC/ServingCellConfigCommon.h
new file mode 100644 (file)
index 0000000..7df6eaa
--- /dev/null
@@ -0,0 +1,137 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ServingCellConfigCommon_H_
+#define        _ServingCellConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include <NativeEnumerated.h>
+#include "SubcarrierSpacing.h"
+#include <NativeInteger.h>
+#include <BIT_STRING.h>
+#include <constr_CHOICE.h>
+#include <NULL.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "RateMatchPatternId.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ServingCellConfigCommon__n_TimingAdvanceOffset {
+       ServingCellConfigCommon__n_TimingAdvanceOffset_n0       = 0,
+       ServingCellConfigCommon__n_TimingAdvanceOffset_n25600   = 1,
+       ServingCellConfigCommon__n_TimingAdvanceOffset_n39936   = 2
+} e_ServingCellConfigCommon__n_TimingAdvanceOffset;
+typedef enum ServingCellConfigCommon__ssb_PositionsInBurst_PR {
+       ServingCellConfigCommon__ssb_PositionsInBurst_PR_NOTHING,       /* No components present */
+       ServingCellConfigCommon__ssb_PositionsInBurst_PR_shortBitmap,
+       ServingCellConfigCommon__ssb_PositionsInBurst_PR_mediumBitmap,
+       ServingCellConfigCommon__ssb_PositionsInBurst_PR_longBitmap
+} ServingCellConfigCommon__ssb_PositionsInBurst_PR;
+typedef enum ServingCellConfigCommon__ssb_periodicityServingCell {
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms5 = 0,
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms10        = 1,
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms20        = 2,
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms40        = 3,
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms80        = 4,
+       ServingCellConfigCommon__ssb_periodicityServingCell_ms160       = 5,
+       ServingCellConfigCommon__ssb_periodicityServingCell_spare2      = 6,
+       ServingCellConfigCommon__ssb_periodicityServingCell_spare1      = 7
+} e_ServingCellConfigCommon__ssb_periodicityServingCell;
+typedef enum ServingCellConfigCommon__dmrs_TypeA_Position {
+       ServingCellConfigCommon__dmrs_TypeA_Position_pos2       = 0,
+       ServingCellConfigCommon__dmrs_TypeA_Position_pos3       = 1
+} e_ServingCellConfigCommon__dmrs_TypeA_Position;
+typedef enum ServingCellConfigCommon__lte_CRS_ToMatchAround_PR {
+       ServingCellConfigCommon__lte_CRS_ToMatchAround_PR_NOTHING,      /* No components present */
+       ServingCellConfigCommon__lte_CRS_ToMatchAround_PR_release,
+       ServingCellConfigCommon__lte_CRS_ToMatchAround_PR_setup
+} ServingCellConfigCommon__lte_CRS_ToMatchAround_PR;
+
+/* Forward declarations */
+struct DownlinkConfigCommon;
+struct UplinkConfigCommon;
+struct TDD_UL_DL_ConfigCommon;
+struct RateMatchPatternLTE_CRS;
+struct RateMatchPattern;
+
+/* ServingCellConfigCommon */
+typedef struct ServingCellConfigCommon {
+       PhysCellId_t    *physCellId;    /* OPTIONAL */
+       struct DownlinkConfigCommon     *downlinkConfigCommon;  /* OPTIONAL */
+       struct UplinkConfigCommon       *uplinkConfigCommon;    /* OPTIONAL */
+       struct UplinkConfigCommon       *supplementaryUplinkConfig;     /* OPTIONAL */
+       long    *n_TimingAdvanceOffset; /* OPTIONAL */
+       struct ServingCellConfigCommon__ssb_PositionsInBurst {
+               ServingCellConfigCommon__ssb_PositionsInBurst_PR present;
+               union ServingCellConfigCommon__ssb_PositionsInBurst_u {
+                       BIT_STRING_t     shortBitmap;
+                       BIT_STRING_t     mediumBitmap;
+                       BIT_STRING_t     longBitmap;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ssb_PositionsInBurst;
+       long    *ssb_periodicityServingCell;    /* OPTIONAL */
+       long     dmrs_TypeA_Position;
+       struct ServingCellConfigCommon__lte_CRS_ToMatchAround {
+               ServingCellConfigCommon__lte_CRS_ToMatchAround_PR present;
+               union ServingCellConfigCommon__lte_CRS_ToMatchAround_u {
+                       NULL_t   release;
+                       struct RateMatchPatternLTE_CRS  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *lte_CRS_ToMatchAround;
+       struct ServingCellConfigCommon__rateMatchPatternToAddModList {
+               A_SEQUENCE_OF(struct RateMatchPattern) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rateMatchPatternToAddModList;
+       struct ServingCellConfigCommon__rateMatchPatternToReleaseList {
+               A_SEQUENCE_OF(RateMatchPatternId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rateMatchPatternToReleaseList;
+       SubcarrierSpacing_t     *ssbSubcarrierSpacing;  /* OPTIONAL */
+       struct TDD_UL_DL_ConfigCommon   *tdd_UL_DL_ConfigurationCommon; /* OPTIONAL */
+       long     ss_PBCH_BlockPower;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ServingCellConfigCommon_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_n_TimingAdvanceOffset_6;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_periodicityServingCell_14; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_TypeA_Position_23;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_ServingCellConfigCommon_1[14];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ServingCellConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ServingCellConfigCommonSIB.c b/src/codec_utils/RRC/ServingCellConfigCommonSIB.c
new file mode 100644 (file)
index 0000000..3283432
--- /dev/null
@@ -0,0 +1,398 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ServingCellConfigCommonSIB.h"
+
+#include "UplinkConfigCommonSIB.h"
+#include "TDD-UL-DL-ConfigCommon.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_inOneGroup_constraint_9(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;
+       }
+}
+
+static int
+memb_groupPresence_constraint_9(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 NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static int
+memb_ss_PBCH_BlockPower_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 >= -60 && value <= 50)) {
+               /* 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_n_TimingAdvanceOffset_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n_TimingAdvanceOffset_constr_5 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_inOneGroup_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_inOneGroup_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_groupPresence_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       8       /* (SIZE(8..8)) */};
+static asn_per_constraints_t asn_PER_memb_groupPresence_constr_11 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_ssb_PeriodicityServingCell_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_ssb_PeriodicityServingCell_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_ss_PBCH_BlockPower_constr_20 CC_NOTUSED = {
+       { 1, 0 }        /* (-60..50) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_ss_PBCH_BlockPower_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7, -60,  50 }      /* (-60..50) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_n_TimingAdvanceOffset_value2enum_5[] = {
+       { 0,    2,      "n0" },
+       { 1,    6,      "n25560" },
+       { 2,    6,      "n39936" }
+};
+static const unsigned int asn_MAP_n_TimingAdvanceOffset_enum2value_5[] = {
+       0,      /* n0(0) */
+       1,      /* n25560(1) */
+       2       /* n39936(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n_TimingAdvanceOffset_specs_5 = {
+       asn_MAP_n_TimingAdvanceOffset_value2enum_5,     /* "tag" => N; sorted by tag */
+       asn_MAP_n_TimingAdvanceOffset_enum2value_5,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n_TimingAdvanceOffset_tags_5[] = {
+       (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_n_TimingAdvanceOffset_5 = {
+       "n-TimingAdvanceOffset",
+       "n-TimingAdvanceOffset",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n_TimingAdvanceOffset_tags_5,
+       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5)
+               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5[0]) - 1, /* 1 */
+       asn_DEF_n_TimingAdvanceOffset_tags_5,   /* Same as above */
+       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5)
+               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5[0]), /* 2 */
+       { &asn_OER_type_n_TimingAdvanceOffset_constr_5, &asn_PER_type_n_TimingAdvanceOffset_constr_5, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n_TimingAdvanceOffset_specs_5  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ssb_PositionsInBurst_9[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, inOneGroup),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_inOneGroup_constr_10, &asn_PER_memb_inOneGroup_constr_10,  memb_inOneGroup_constraint_9 },
+               0, 0, /* No default value */
+               "inOneGroup"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, groupPresence),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_groupPresence_constr_11, &asn_PER_memb_groupPresence_constr_11,  memb_groupPresence_constraint_9 },
+               0, 0, /* No default value */
+               "groupPresence"
+               },
+};
+static const int asn_MAP_ssb_PositionsInBurst_oms_9[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_ssb_PositionsInBurst_tags_9[] = {
+       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ssb_PositionsInBurst_tag2el_9[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* inOneGroup */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* groupPresence */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ssb_PositionsInBurst_specs_9 = {
+       sizeof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst),
+       offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, _asn_ctx),
+       asn_MAP_ssb_PositionsInBurst_tag2el_9,
+       2,      /* Count of tags in the map */
+       asn_MAP_ssb_PositionsInBurst_oms_9,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ssb_PositionsInBurst_9 = {
+       "ssb-PositionsInBurst",
+       "ssb-PositionsInBurst",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ssb_PositionsInBurst_tags_9,
+       sizeof(asn_DEF_ssb_PositionsInBurst_tags_9)
+               /sizeof(asn_DEF_ssb_PositionsInBurst_tags_9[0]) - 1, /* 1 */
+       asn_DEF_ssb_PositionsInBurst_tags_9,    /* Same as above */
+       sizeof(asn_DEF_ssb_PositionsInBurst_tags_9)
+               /sizeof(asn_DEF_ssb_PositionsInBurst_tags_9[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ssb_PositionsInBurst_9,
+       2,      /* Elements count */
+       &asn_SPC_ssb_PositionsInBurst_specs_9   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_ssb_PeriodicityServingCell_value2enum_12[] = {
+       { 0,    3,      "ms5" },
+       { 1,    4,      "ms10" },
+       { 2,    4,      "ms20" },
+       { 3,    4,      "ms40" },
+       { 4,    4,      "ms80" },
+       { 5,    5,      "ms160" }
+};
+static const unsigned int asn_MAP_ssb_PeriodicityServingCell_enum2value_12[] = {
+       1,      /* ms10(1) */
+       5,      /* ms160(5) */
+       2,      /* ms20(2) */
+       3,      /* ms40(3) */
+       0,      /* ms5(0) */
+       4       /* ms80(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_ssb_PeriodicityServingCell_specs_12 = {
+       asn_MAP_ssb_PeriodicityServingCell_value2enum_12,       /* "tag" => N; sorted by tag */
+       asn_MAP_ssb_PeriodicityServingCell_enum2value_12,       /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_ssb_PeriodicityServingCell_tags_12[] = {
+       (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_ssb_PeriodicityServingCell_12 = {
+       "ssb-PeriodicityServingCell",
+       "ssb-PeriodicityServingCell",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_ssb_PeriodicityServingCell_tags_12,
+       sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12)
+               /sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12[0]) - 1, /* 1 */
+       asn_DEF_ssb_PeriodicityServingCell_tags_12,     /* Same as above */
+       sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12)
+               /sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12[0]), /* 2 */
+       { &asn_OER_type_ssb_PeriodicityServingCell_constr_12, &asn_PER_type_ssb_PeriodicityServingCell_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_ssb_PeriodicityServingCell_specs_12    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ServingCellConfigCommonSIB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, downlinkConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DownlinkConfigCommonSIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "downlinkConfigCommon"
+               },
+       { ATF_POINTER, 3, offsetof(struct ServingCellConfigCommonSIB, uplinkConfigCommon),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfigCommonSIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uplinkConfigCommon"
+               },
+       { ATF_POINTER, 2, offsetof(struct ServingCellConfigCommonSIB, supplementaryUplink),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UplinkConfigCommonSIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supplementaryUplink"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB, n_TimingAdvanceOffset),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n_TimingAdvanceOffset_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n-TimingAdvanceOffset"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ssb_PositionsInBurst),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               0,
+               &asn_DEF_ssb_PositionsInBurst_9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-PositionsInBurst"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ssb_PeriodicityServingCell),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ssb_PeriodicityServingCell_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-PeriodicityServingCell"
+               },
+       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB, tdd_UL_DL_ConfigurationCommon),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_ConfigCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-UL-DL-ConfigurationCommon"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ss_PBCH_BlockPower),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_ss_PBCH_BlockPower_constr_20, &asn_PER_memb_ss_PBCH_BlockPower_constr_20,  memb_ss_PBCH_BlockPower_constraint_1 },
+               0, 0, /* No default value */
+               "ss-PBCH-BlockPower"
+               },
+};
+static const int asn_MAP_ServingCellConfigCommonSIB_oms_1[] = { 1, 2, 3, 6 };
+static const ber_tlv_tag_t asn_DEF_ServingCellConfigCommonSIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ServingCellConfigCommonSIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* downlinkConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uplinkConfigCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* supplementaryUplink */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* n-TimingAdvanceOffset */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ssb-PositionsInBurst */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ssb-PeriodicityServingCell */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tdd-UL-DL-ConfigurationCommon */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ss-PBCH-BlockPower */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommonSIB_specs_1 = {
+       sizeof(struct ServingCellConfigCommonSIB),
+       offsetof(struct ServingCellConfigCommonSIB, _asn_ctx),
+       asn_MAP_ServingCellConfigCommonSIB_tag2el_1,
+       8,      /* Count of tags in the map */
+       asn_MAP_ServingCellConfigCommonSIB_oms_1,       /* Optional members */
+       4, 0,   /* Root/Additions */
+       8,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommonSIB = {
+       "ServingCellConfigCommonSIB",
+       "ServingCellConfigCommonSIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ServingCellConfigCommonSIB_tags_1,
+       sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1[0]), /* 1 */
+       asn_DEF_ServingCellConfigCommonSIB_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ServingCellConfigCommonSIB_1,
+       8,      /* Elements count */
+       &asn_SPC_ServingCellConfigCommonSIB_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ServingCellConfigCommonSIB.h b/src/codec_utils/RRC/ServingCellConfigCommonSIB.h
new file mode 100644 (file)
index 0000000..0b87ddd
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ServingCellConfigCommonSIB_H_
+#define        _ServingCellConfigCommonSIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DownlinkConfigCommonSIB.h"
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ServingCellConfigCommonSIB__n_TimingAdvanceOffset {
+       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n0    = 0,
+       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n25560        = 1,
+       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n39936        = 2
+} e_ServingCellConfigCommonSIB__n_TimingAdvanceOffset;
+typedef enum ServingCellConfigCommonSIB__ssb_PeriodicityServingCell {
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms5      = 0,
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms10     = 1,
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms20     = 2,
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms40     = 3,
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms80     = 4,
+       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms160    = 5
+} e_ServingCellConfigCommonSIB__ssb_PeriodicityServingCell;
+
+/* Forward declarations */
+struct UplinkConfigCommonSIB;
+struct TDD_UL_DL_ConfigCommon;
+
+/* ServingCellConfigCommonSIB */
+typedef struct ServingCellConfigCommonSIB {
+       DownlinkConfigCommonSIB_t        downlinkConfigCommon;
+       struct UplinkConfigCommonSIB    *uplinkConfigCommon;    /* OPTIONAL */
+       struct UplinkConfigCommonSIB    *supplementaryUplink;   /* OPTIONAL */
+       long    *n_TimingAdvanceOffset; /* OPTIONAL */
+       struct ServingCellConfigCommonSIB__ssb_PositionsInBurst {
+               BIT_STRING_t     inOneGroup;
+               BIT_STRING_t    *groupPresence; /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } ssb_PositionsInBurst;
+       long     ssb_PeriodicityServingCell;
+       struct TDD_UL_DL_ConfigCommon   *tdd_UL_DL_ConfigurationCommon; /* OPTIONAL */
+       long     ss_PBCH_BlockPower;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ServingCellConfigCommonSIB_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_n_TimingAdvanceOffset_5;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_ssb_PeriodicityServingCell_12; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommonSIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommonSIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_ServingCellConfigCommonSIB_1[8];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ServingCellConfigCommonSIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ShortI-RNTI-Value.c b/src/codec_utils/RRC/ShortI-RNTI-Value.c
new file mode 100644 (file)
index 0000000..1457f1d
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ShortI-RNTI-Value.h"
+
+int
+ShortI_RNTI_Value_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 == 24)) {
+               /* 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_ShortI_RNTI_Value_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+asn_per_constraints_t asn_PER_type_ShortI_RNTI_Value_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ShortI_RNTI_Value_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ShortI_RNTI_Value = {
+       "ShortI-RNTI-Value",
+       "ShortI-RNTI-Value",
+       &asn_OP_BIT_STRING,
+       asn_DEF_ShortI_RNTI_Value_tags_1,
+       sizeof(asn_DEF_ShortI_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_ShortI_RNTI_Value_tags_1[0]), /* 1 */
+       asn_DEF_ShortI_RNTI_Value_tags_1,       /* Same as above */
+       sizeof(asn_DEF_ShortI_RNTI_Value_tags_1)
+               /sizeof(asn_DEF_ShortI_RNTI_Value_tags_1[0]), /* 1 */
+       { &asn_OER_type_ShortI_RNTI_Value_constr_1, &asn_PER_type_ShortI_RNTI_Value_constr_1, ShortI_RNTI_Value_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ShortI-RNTI-Value.h b/src/codec_utils/RRC/ShortI-RNTI-Value.h
new file mode 100644 (file)
index 0000000..45504bb
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ShortI_RNTI_Value_H_
+#define        _ShortI_RNTI_Value_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ShortI-RNTI-Value */
+typedef BIT_STRING_t    ShortI_RNTI_Value_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ShortI_RNTI_Value_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ShortI_RNTI_Value;
+asn_struct_free_f ShortI_RNTI_Value_free;
+asn_struct_print_f ShortI_RNTI_Value_print;
+asn_constr_check_f ShortI_RNTI_Value_constraint;
+ber_type_decoder_f ShortI_RNTI_Value_decode_ber;
+der_type_encoder_f ShortI_RNTI_Value_encode_der;
+xer_type_decoder_f ShortI_RNTI_Value_decode_xer;
+xer_type_encoder_f ShortI_RNTI_Value_encode_xer;
+oer_type_decoder_f ShortI_RNTI_Value_decode_oer;
+oer_type_encoder_f ShortI_RNTI_Value_encode_oer;
+per_type_decoder_f ShortI_RNTI_Value_decode_uper;
+per_type_encoder_f ShortI_RNTI_Value_encode_uper;
+per_type_decoder_f ShortI_RNTI_Value_decode_aper;
+per_type_encoder_f ShortI_RNTI_Value_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ShortI_RNTI_Value_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ShortMAC-I.c b/src/codec_utils/RRC/ShortMAC-I.c
new file mode 100644 (file)
index 0000000..ff70c19
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ShortMAC-I.h"
+
+int
+ShortMAC_I_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 == 16)) {
+               /* 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_ShortMAC_I_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       16      /* (SIZE(16..16)) */};
+asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  16,  16 }      /* (SIZE(16..16)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ShortMAC_I_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ShortMAC_I = {
+       "ShortMAC-I",
+       "ShortMAC-I",
+       &asn_OP_BIT_STRING,
+       asn_DEF_ShortMAC_I_tags_1,
+       sizeof(asn_DEF_ShortMAC_I_tags_1)
+               /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */
+       asn_DEF_ShortMAC_I_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ShortMAC_I_tags_1)
+               /sizeof(asn_DEF_ShortMAC_I_tags_1[0]), /* 1 */
+       { &asn_OER_type_ShortMAC_I_constr_1, &asn_PER_type_ShortMAC_I_constr_1, ShortMAC_I_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ShortMAC-I.h b/src/codec_utils/RRC/ShortMAC-I.h
new file mode 100644 (file)
index 0000000..05d3b12
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ShortMAC_I_H_
+#define        _ShortMAC_I_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ShortMAC-I */
+typedef BIT_STRING_t    ShortMAC_I_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ShortMAC_I_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ShortMAC_I;
+asn_struct_free_f ShortMAC_I_free;
+asn_struct_print_f ShortMAC_I_print;
+asn_constr_check_f ShortMAC_I_constraint;
+ber_type_decoder_f ShortMAC_I_decode_ber;
+der_type_encoder_f ShortMAC_I_encode_der;
+xer_type_decoder_f ShortMAC_I_decode_xer;
+xer_type_encoder_f ShortMAC_I_encode_xer;
+oer_type_decoder_f ShortMAC_I_decode_oer;
+oer_type_encoder_f ShortMAC_I_encode_oer;
+per_type_decoder_f ShortMAC_I_decode_uper;
+per_type_encoder_f ShortMAC_I_encode_uper;
+per_type_decoder_f ShortMAC_I_decode_aper;
+per_type_encoder_f ShortMAC_I_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ShortMAC_I_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SlotFormatCombination.c b/src/codec_utils/RRC/SlotFormatCombination.c
new file mode 100644 (file)
index 0000000..bdd4781
--- /dev/null
@@ -0,0 +1,172 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SlotFormatCombination.h"
+
+static int
+memb_NativeInteger_constraint_3(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;
+       }
+}
+
+static int
+memb_slotFormats_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 <= 256)) {
+               /* 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_memb_Member_constr_4 CC_NOTUSED = {
+       { 1, 1 }        /* (0..255) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_Member_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_slotFormats_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..256)) */};
+static asn_per_constraints_t asn_PER_type_slotFormats_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (SIZE(1..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotFormats_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..256)) */};
+static asn_per_constraints_t asn_PER_memb_slotFormats_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       8,  8,  1,  256 }      /* (SIZE(1..256)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_slotFormats_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_Member_constr_4, &asn_PER_memb_Member_constr_4,  memb_NativeInteger_constraint_3 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotFormats_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotFormats_specs_3 = {
+       sizeof(struct SlotFormatCombination__slotFormats),
+       offsetof(struct SlotFormatCombination__slotFormats, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotFormats_3 = {
+       "slotFormats",
+       "slotFormats",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotFormats_tags_3,
+       sizeof(asn_DEF_slotFormats_tags_3)
+               /sizeof(asn_DEF_slotFormats_tags_3[0]) - 1, /* 1 */
+       asn_DEF_slotFormats_tags_3,     /* Same as above */
+       sizeof(asn_DEF_slotFormats_tags_3)
+               /sizeof(asn_DEF_slotFormats_tags_3[0]), /* 2 */
+       { &asn_OER_type_slotFormats_constr_3, &asn_PER_type_slotFormats_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_slotFormats_3,
+       1,      /* Single element */
+       &asn_SPC_slotFormats_specs_3    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SlotFormatCombination_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatCombination, slotFormatCombinationId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SlotFormatCombinationId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "slotFormatCombinationId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatCombination, slotFormats),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_slotFormats_3,
+               0,
+               { &asn_OER_memb_slotFormats_constr_3, &asn_PER_memb_slotFormats_constr_3,  memb_slotFormats_constraint_1 },
+               0, 0, /* No default value */
+               "slotFormats"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SlotFormatCombination_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SlotFormatCombination_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* slotFormatCombinationId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* slotFormats */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SlotFormatCombination_specs_1 = {
+       sizeof(struct SlotFormatCombination),
+       offsetof(struct SlotFormatCombination, _asn_ctx),
+       asn_MAP_SlotFormatCombination_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SlotFormatCombination = {
+       "SlotFormatCombination",
+       "SlotFormatCombination",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SlotFormatCombination_tags_1,
+       sizeof(asn_DEF_SlotFormatCombination_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombination_tags_1[0]), /* 1 */
+       asn_DEF_SlotFormatCombination_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SlotFormatCombination_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombination_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SlotFormatCombination_1,
+       2,      /* Elements count */
+       &asn_SPC_SlotFormatCombination_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SlotFormatCombination.h b/src/codec_utils/RRC/SlotFormatCombination.h
new file mode 100644 (file)
index 0000000..e7944c4
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SlotFormatCombination_H_
+#define        _SlotFormatCombination_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SlotFormatCombinationId.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SlotFormatCombination */
+typedef struct SlotFormatCombination {
+       SlotFormatCombinationId_t        slotFormatCombinationId;
+       struct SlotFormatCombination__slotFormats {
+               A_SEQUENCE_OF(long) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } slotFormats;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SlotFormatCombination_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlotFormatCombination;
+extern asn_SEQUENCE_specifics_t asn_SPC_SlotFormatCombination_specs_1;
+extern asn_TYPE_member_t asn_MBR_SlotFormatCombination_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SlotFormatCombination_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SlotFormatCombinationId.c b/src/codec_utils/RRC/SlotFormatCombinationId.c
new file mode 100644 (file)
index 0000000..6aea38f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SlotFormatCombinationId.h"
+
+int
+SlotFormatCombinationId_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 <= 511)) {
+               /* 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_SlotFormatCombinationId_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..511) */,
+       -1};
+asn_per_constraints_t asn_PER_type_SlotFormatCombinationId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  511 }      /* (0..511) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_SlotFormatCombinationId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SlotFormatCombinationId = {
+       "SlotFormatCombinationId",
+       "SlotFormatCombinationId",
+       &asn_OP_NativeInteger,
+       asn_DEF_SlotFormatCombinationId_tags_1,
+       sizeof(asn_DEF_SlotFormatCombinationId_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombinationId_tags_1[0]), /* 1 */
+       asn_DEF_SlotFormatCombinationId_tags_1, /* Same as above */
+       sizeof(asn_DEF_SlotFormatCombinationId_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombinationId_tags_1[0]), /* 1 */
+       { &asn_OER_type_SlotFormatCombinationId_constr_1, &asn_PER_type_SlotFormatCombinationId_constr_1, SlotFormatCombinationId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/SlotFormatCombinationId.h b/src/codec_utils/RRC/SlotFormatCombinationId.h
new file mode 100644 (file)
index 0000000..8fa9135
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SlotFormatCombinationId_H_
+#define        _SlotFormatCombinationId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SlotFormatCombinationId */
+typedef long    SlotFormatCombinationId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SlotFormatCombinationId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SlotFormatCombinationId;
+asn_struct_free_f SlotFormatCombinationId_free;
+asn_struct_print_f SlotFormatCombinationId_print;
+asn_constr_check_f SlotFormatCombinationId_constraint;
+ber_type_decoder_f SlotFormatCombinationId_decode_ber;
+der_type_encoder_f SlotFormatCombinationId_encode_der;
+xer_type_decoder_f SlotFormatCombinationId_decode_xer;
+xer_type_encoder_f SlotFormatCombinationId_encode_xer;
+oer_type_decoder_f SlotFormatCombinationId_decode_oer;
+oer_type_encoder_f SlotFormatCombinationId_encode_oer;
+per_type_decoder_f SlotFormatCombinationId_decode_uper;
+per_type_encoder_f SlotFormatCombinationId_encode_uper;
+per_type_decoder_f SlotFormatCombinationId_decode_aper;
+per_type_encoder_f SlotFormatCombinationId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SlotFormatCombinationId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SlotFormatCombinationsPerCell.c b/src/codec_utils/RRC/SlotFormatCombinationsPerCell.c
new file mode 100644 (file)
index 0000000..fd843b7
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SlotFormatCombinationsPerCell.h"
+
+#include "SlotFormatCombination.h"
+static int
+memb_slotFormatCombinations_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 <= 512)) {
+               /* 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_positionInDCI_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 >= 0 && value <= 127)) {
+               /* 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_slotFormatCombinations_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_type_slotFormatCombinations_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  512 }      /* (SIZE(1..512)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotFormatCombinations_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..512)) */};
+static asn_per_constraints_t asn_PER_memb_slotFormatCombinations_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  512 }      /* (SIZE(1..512)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_positionInDCI_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_positionInDCI_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_slotFormatCombinations_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SlotFormatCombination,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotFormatCombinations_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotFormatCombinations_specs_5 = {
+       sizeof(struct SlotFormatCombinationsPerCell__slotFormatCombinations),
+       offsetof(struct SlotFormatCombinationsPerCell__slotFormatCombinations, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotFormatCombinations_5 = {
+       "slotFormatCombinations",
+       "slotFormatCombinations",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotFormatCombinations_tags_5,
+       sizeof(asn_DEF_slotFormatCombinations_tags_5)
+               /sizeof(asn_DEF_slotFormatCombinations_tags_5[0]) - 1, /* 1 */
+       asn_DEF_slotFormatCombinations_tags_5,  /* Same as above */
+       sizeof(asn_DEF_slotFormatCombinations_tags_5)
+               /sizeof(asn_DEF_slotFormatCombinations_tags_5[0]), /* 2 */
+       { &asn_OER_type_slotFormatCombinations_constr_5, &asn_PER_type_slotFormatCombinations_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_slotFormatCombinations_5,
+       1,      /* Single element */
+       &asn_SPC_slotFormatCombinations_specs_5 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SlotFormatCombinationsPerCell_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatCombinationsPerCell, servingCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servingCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatCombinationsPerCell, subcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing"
+               },
+       { ATF_POINTER, 3, offsetof(struct SlotFormatCombinationsPerCell, subcarrierSpacing2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "subcarrierSpacing2"
+               },
+       { ATF_POINTER, 2, offsetof(struct SlotFormatCombinationsPerCell, slotFormatCombinations),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_slotFormatCombinations_5,
+               0,
+               { &asn_OER_memb_slotFormatCombinations_constr_5, &asn_PER_memb_slotFormatCombinations_constr_5,  memb_slotFormatCombinations_constraint_1 },
+               0, 0, /* No default value */
+               "slotFormatCombinations"
+               },
+       { ATF_POINTER, 1, offsetof(struct SlotFormatCombinationsPerCell, positionInDCI),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_positionInDCI_constr_7, &asn_PER_memb_positionInDCI_constr_7,  memb_positionInDCI_constraint_1 },
+               0, 0, /* No default value */
+               "positionInDCI"
+               },
+};
+static const int asn_MAP_SlotFormatCombinationsPerCell_oms_1[] = { 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_SlotFormatCombinationsPerCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SlotFormatCombinationsPerCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servingCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* subcarrierSpacing2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* slotFormatCombinations */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* positionInDCI */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SlotFormatCombinationsPerCell_specs_1 = {
+       sizeof(struct SlotFormatCombinationsPerCell),
+       offsetof(struct SlotFormatCombinationsPerCell, _asn_ctx),
+       asn_MAP_SlotFormatCombinationsPerCell_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_SlotFormatCombinationsPerCell_oms_1,    /* Optional members */
+       3, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SlotFormatCombinationsPerCell = {
+       "SlotFormatCombinationsPerCell",
+       "SlotFormatCombinationsPerCell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SlotFormatCombinationsPerCell_tags_1,
+       sizeof(asn_DEF_SlotFormatCombinationsPerCell_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombinationsPerCell_tags_1[0]), /* 1 */
+       asn_DEF_SlotFormatCombinationsPerCell_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SlotFormatCombinationsPerCell_tags_1)
+               /sizeof(asn_DEF_SlotFormatCombinationsPerCell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SlotFormatCombinationsPerCell_1,
+       5,      /* Elements count */
+       &asn_SPC_SlotFormatCombinationsPerCell_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SlotFormatCombinationsPerCell.h b/src/codec_utils/RRC/SlotFormatCombinationsPerCell.h
new file mode 100644 (file)
index 0000000..698dafe
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SlotFormatCombinationsPerCell_H_
+#define        _SlotFormatCombinationsPerCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include "SubcarrierSpacing.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SlotFormatCombination;
+
+/* SlotFormatCombinationsPerCell */
+typedef struct SlotFormatCombinationsPerCell {
+       ServCellIndex_t  servingCellId;
+       SubcarrierSpacing_t      subcarrierSpacing;
+       SubcarrierSpacing_t     *subcarrierSpacing2;    /* OPTIONAL */
+       struct SlotFormatCombinationsPerCell__slotFormatCombinations {
+               A_SEQUENCE_OF(struct SlotFormatCombination) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotFormatCombinations;
+       long    *positionInDCI; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SlotFormatCombinationsPerCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlotFormatCombinationsPerCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_SlotFormatCombinationsPerCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_SlotFormatCombinationsPerCell_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SlotFormatCombinationsPerCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SlotFormatIndicator.c b/src/codec_utils/RRC/SlotFormatIndicator.c
new file mode 100644 (file)
index 0000000..6feaedf
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SlotFormatIndicator.h"
+
+#include "SlotFormatCombinationsPerCell.h"
+static int
+memb_dci_PayloadSize_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 <= 128)) {
+               /* 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_slotFormatCombToAddModList_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 <= 16)) {
+               /* 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_slotFormatCombToReleaseList_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 <= 16)) {
+               /* 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_slotFormatCombToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_slotFormatCombToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_slotFormatCombToReleaseList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_slotFormatCombToReleaseList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dci_PayloadSize_constr_3 CC_NOTUSED = {
+       { 1, 1 }        /* (1..128) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_dci_PayloadSize_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  1,  128 }      /* (1..128) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotFormatCombToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_slotFormatCombToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotFormatCombToReleaseList_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_slotFormatCombToReleaseList_constr_6 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_slotFormatCombToAddModList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SlotFormatCombinationsPerCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotFormatCombToAddModList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotFormatCombToAddModList_specs_4 = {
+       sizeof(struct SlotFormatIndicator__slotFormatCombToAddModList),
+       offsetof(struct SlotFormatIndicator__slotFormatCombToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotFormatCombToAddModList_4 = {
+       "slotFormatCombToAddModList",
+       "slotFormatCombToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotFormatCombToAddModList_tags_4,
+       sizeof(asn_DEF_slotFormatCombToAddModList_tags_4)
+               /sizeof(asn_DEF_slotFormatCombToAddModList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_slotFormatCombToAddModList_tags_4,      /* Same as above */
+       sizeof(asn_DEF_slotFormatCombToAddModList_tags_4)
+               /sizeof(asn_DEF_slotFormatCombToAddModList_tags_4[0]), /* 2 */
+       { &asn_OER_type_slotFormatCombToAddModList_constr_4, &asn_PER_type_slotFormatCombToAddModList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_slotFormatCombToAddModList_4,
+       1,      /* Single element */
+       &asn_SPC_slotFormatCombToAddModList_specs_4     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_slotFormatCombToReleaseList_6[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotFormatCombToReleaseList_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotFormatCombToReleaseList_specs_6 = {
+       sizeof(struct SlotFormatIndicator__slotFormatCombToReleaseList),
+       offsetof(struct SlotFormatIndicator__slotFormatCombToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotFormatCombToReleaseList_6 = {
+       "slotFormatCombToReleaseList",
+       "slotFormatCombToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotFormatCombToReleaseList_tags_6,
+       sizeof(asn_DEF_slotFormatCombToReleaseList_tags_6)
+               /sizeof(asn_DEF_slotFormatCombToReleaseList_tags_6[0]) - 1, /* 1 */
+       asn_DEF_slotFormatCombToReleaseList_tags_6,     /* Same as above */
+       sizeof(asn_DEF_slotFormatCombToReleaseList_tags_6)
+               /sizeof(asn_DEF_slotFormatCombToReleaseList_tags_6[0]), /* 2 */
+       { &asn_OER_type_slotFormatCombToReleaseList_constr_6, &asn_PER_type_slotFormatCombToReleaseList_constr_6, SEQUENCE_OF_constraint },
+       asn_MBR_slotFormatCombToReleaseList_6,
+       1,      /* Single element */
+       &asn_SPC_slotFormatCombToReleaseList_specs_6    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SlotFormatIndicator_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatIndicator, sfi_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sfi-RNTI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SlotFormatIndicator, dci_PayloadSize),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_dci_PayloadSize_constr_3, &asn_PER_memb_dci_PayloadSize_constr_3,  memb_dci_PayloadSize_constraint_1 },
+               0, 0, /* No default value */
+               "dci-PayloadSize"
+               },
+       { ATF_POINTER, 2, offsetof(struct SlotFormatIndicator, slotFormatCombToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_slotFormatCombToAddModList_4,
+               0,
+               { &asn_OER_memb_slotFormatCombToAddModList_constr_4, &asn_PER_memb_slotFormatCombToAddModList_constr_4,  memb_slotFormatCombToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "slotFormatCombToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct SlotFormatIndicator, slotFormatCombToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               0,
+               &asn_DEF_slotFormatCombToReleaseList_6,
+               0,
+               { &asn_OER_memb_slotFormatCombToReleaseList_constr_6, &asn_PER_memb_slotFormatCombToReleaseList_constr_6,  memb_slotFormatCombToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "slotFormatCombToReleaseList"
+               },
+};
+static const int asn_MAP_SlotFormatIndicator_oms_1[] = { 2, 3 };
+static const ber_tlv_tag_t asn_DEF_SlotFormatIndicator_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SlotFormatIndicator_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sfi-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dci-PayloadSize */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* slotFormatCombToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* slotFormatCombToReleaseList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SlotFormatIndicator_specs_1 = {
+       sizeof(struct SlotFormatIndicator),
+       offsetof(struct SlotFormatIndicator, _asn_ctx),
+       asn_MAP_SlotFormatIndicator_tag2el_1,
+       4,      /* Count of tags in the map */
+       asn_MAP_SlotFormatIndicator_oms_1,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       4,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SlotFormatIndicator = {
+       "SlotFormatIndicator",
+       "SlotFormatIndicator",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SlotFormatIndicator_tags_1,
+       sizeof(asn_DEF_SlotFormatIndicator_tags_1)
+               /sizeof(asn_DEF_SlotFormatIndicator_tags_1[0]), /* 1 */
+       asn_DEF_SlotFormatIndicator_tags_1,     /* Same as above */
+       sizeof(asn_DEF_SlotFormatIndicator_tags_1)
+               /sizeof(asn_DEF_SlotFormatIndicator_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SlotFormatIndicator_1,
+       4,      /* Elements count */
+       &asn_SPC_SlotFormatIndicator_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SlotFormatIndicator.h b/src/codec_utils/RRC/SlotFormatIndicator.h
new file mode 100644 (file)
index 0000000..6367679
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SlotFormatIndicator_H_
+#define        _SlotFormatIndicator_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RNTI-Value.h"
+#include <NativeInteger.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "ServCellIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct SlotFormatCombinationsPerCell;
+
+/* SlotFormatIndicator */
+typedef struct SlotFormatIndicator {
+       RNTI_Value_t     sfi_RNTI;
+       long     dci_PayloadSize;
+       struct SlotFormatIndicator__slotFormatCombToAddModList {
+               A_SEQUENCE_OF(struct SlotFormatCombinationsPerCell) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotFormatCombToAddModList;
+       struct SlotFormatIndicator__slotFormatCombToReleaseList {
+               A_SEQUENCE_OF(ServCellIndex_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotFormatCombToReleaseList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SlotFormatIndicator_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlotFormatIndicator;
+extern asn_SEQUENCE_specifics_t asn_SPC_SlotFormatIndicator_specs_1;
+extern asn_TYPE_member_t asn_MBR_SlotFormatIndicator_1[4];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SlotFormatIndicator_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SpCellConfig.c b/src/codec_utils/RRC/SpCellConfig.c
new file mode 100644 (file)
index 0000000..a3d566d
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SpCellConfig.h"
+
+#include "ReconfigurationWithSync.h"
+#include "ServingCellConfig.h"
+#include "RLF-TimersAndConstants.h"
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_rlf_TimersAndConstants_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rlf_TimersAndConstants_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rlmInSyncOutOfSyncThreshold_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_rlmInSyncOutOfSyncThreshold_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_rlf_TimersAndConstants_4[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SpCellConfig__rlf_TimersAndConstants, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct SpCellConfig__rlf_TimersAndConstants, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RLF_TimersAndConstants,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_rlf_TimersAndConstants_tag2el_4[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_rlf_TimersAndConstants_specs_4 = {
+       sizeof(struct SpCellConfig__rlf_TimersAndConstants),
+       offsetof(struct SpCellConfig__rlf_TimersAndConstants, _asn_ctx),
+       offsetof(struct SpCellConfig__rlf_TimersAndConstants, present),
+       sizeof(((struct SpCellConfig__rlf_TimersAndConstants *)0)->present),
+       asn_MAP_rlf_TimersAndConstants_tag2el_4,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_rlf_TimersAndConstants_4 = {
+       "rlf-TimersAndConstants",
+       "rlf-TimersAndConstants",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_rlf_TimersAndConstants_constr_4, &asn_PER_type_rlf_TimersAndConstants_constr_4, CHOICE_constraint },
+       asn_MBR_rlf_TimersAndConstants_4,
+       2,      /* Elements count */
+       &asn_SPC_rlf_TimersAndConstants_specs_4 /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_rlmInSyncOutOfSyncThreshold_value2enum_7[] = {
+       { 0,    2,      "n1" }
+};
+static const unsigned int asn_MAP_rlmInSyncOutOfSyncThreshold_enum2value_7[] = {
+       0       /* n1(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_rlmInSyncOutOfSyncThreshold_specs_7 = {
+       asn_MAP_rlmInSyncOutOfSyncThreshold_value2enum_7,       /* "tag" => N; sorted by tag */
+       asn_MAP_rlmInSyncOutOfSyncThreshold_enum2value_7,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7[] = {
+       (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_rlmInSyncOutOfSyncThreshold_7 = {
+       "rlmInSyncOutOfSyncThreshold",
+       "rlmInSyncOutOfSyncThreshold",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7,
+       sizeof(asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7)
+               /sizeof(asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7[0]) - 1, /* 1 */
+       asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7,     /* Same as above */
+       sizeof(asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7)
+               /sizeof(asn_DEF_rlmInSyncOutOfSyncThreshold_tags_7[0]), /* 2 */
+       { &asn_OER_type_rlmInSyncOutOfSyncThreshold_constr_7, &asn_PER_type_rlmInSyncOutOfSyncThreshold_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_rlmInSyncOutOfSyncThreshold_specs_7    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SpCellConfig_1[] = {
+       { ATF_POINTER, 5, offsetof(struct SpCellConfig, servCellIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servCellIndex"
+               },
+       { ATF_POINTER, 4, offsetof(struct SpCellConfig, reconfigurationWithSync),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReconfigurationWithSync,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reconfigurationWithSync"
+               },
+       { ATF_POINTER, 3, offsetof(struct SpCellConfig, rlf_TimersAndConstants),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_rlf_TimersAndConstants_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rlf-TimersAndConstants"
+               },
+       { ATF_POINTER, 2, offsetof(struct SpCellConfig, rlmInSyncOutOfSyncThreshold),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_rlmInSyncOutOfSyncThreshold_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rlmInSyncOutOfSyncThreshold"
+               },
+       { ATF_POINTER, 1, offsetof(struct SpCellConfig, spCellConfigDedicated),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServingCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spCellConfigDedicated"
+               },
+};
+static const int asn_MAP_SpCellConfig_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_SpCellConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SpCellConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servCellIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* reconfigurationWithSync */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlf-TimersAndConstants */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rlmInSyncOutOfSyncThreshold */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* spCellConfigDedicated */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SpCellConfig_specs_1 = {
+       sizeof(struct SpCellConfig),
+       offsetof(struct SpCellConfig, _asn_ctx),
+       asn_MAP_SpCellConfig_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_SpCellConfig_oms_1,     /* Optional members */
+       5, 0,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SpCellConfig = {
+       "SpCellConfig",
+       "SpCellConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SpCellConfig_tags_1,
+       sizeof(asn_DEF_SpCellConfig_tags_1)
+               /sizeof(asn_DEF_SpCellConfig_tags_1[0]), /* 1 */
+       asn_DEF_SpCellConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_SpCellConfig_tags_1)
+               /sizeof(asn_DEF_SpCellConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SpCellConfig_1,
+       5,      /* Elements count */
+       &asn_SPC_SpCellConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SpCellConfig.h b/src/codec_utils/RRC/SpCellConfig.h
new file mode 100644 (file)
index 0000000..95ff175
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SpCellConfig_H_
+#define        _SpCellConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include <NativeEnumerated.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SpCellConfig__rlf_TimersAndConstants_PR {
+       SpCellConfig__rlf_TimersAndConstants_PR_NOTHING,        /* No components present */
+       SpCellConfig__rlf_TimersAndConstants_PR_release,
+       SpCellConfig__rlf_TimersAndConstants_PR_setup
+} SpCellConfig__rlf_TimersAndConstants_PR;
+typedef enum SpCellConfig__rlmInSyncOutOfSyncThreshold {
+       SpCellConfig__rlmInSyncOutOfSyncThreshold_n1    = 0
+} e_SpCellConfig__rlmInSyncOutOfSyncThreshold;
+
+/* Forward declarations */
+struct ReconfigurationWithSync;
+struct ServingCellConfig;
+struct RLF_TimersAndConstants;
+
+/* SpCellConfig */
+typedef struct SpCellConfig {
+       ServCellIndex_t *servCellIndex; /* OPTIONAL */
+       struct ReconfigurationWithSync  *reconfigurationWithSync;       /* OPTIONAL */
+       struct SpCellConfig__rlf_TimersAndConstants {
+               SpCellConfig__rlf_TimersAndConstants_PR present;
+               union SpCellConfig__rlf_TimersAndConstants_u {
+                       NULL_t   release;
+                       struct RLF_TimersAndConstants   *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *rlf_TimersAndConstants;
+       long    *rlmInSyncOutOfSyncThreshold;   /* OPTIONAL */
+       struct ServingCellConfig        *spCellConfigDedicated; /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SpCellConfig_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_rlmInSyncOutOfSyncThreshold_7; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SpCellConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SpCellConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SpCellConfig_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SpCellConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SpeedStateScaleFactors.c b/src/codec_utils/RRC/SpeedStateScaleFactors.c
new file mode 100644 (file)
index 0000000..35cbc68
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SpeedStateScaleFactors.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.
+ */
+static asn_oer_constraints_t asn_OER_type_sf_Medium_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sf_Medium_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sf_High_constr_7 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_sf_High_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_sf_Medium_value2enum_2[] = {
+       { 0,    6,      "oDot25" },
+       { 1,    5,      "oDot5" },
+       { 2,    6,      "oDot75" },
+       { 3,    5,      "lDot0" }
+};
+static const unsigned int asn_MAP_sf_Medium_enum2value_2[] = {
+       3,      /* lDot0(3) */
+       0,      /* oDot25(0) */
+       1,      /* oDot5(1) */
+       2       /* oDot75(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sf_Medium_specs_2 = {
+       asn_MAP_sf_Medium_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_sf_Medium_enum2value_2, /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sf_Medium_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_sf_Medium_2 = {
+       "sf-Medium",
+       "sf-Medium",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sf_Medium_tags_2,
+       sizeof(asn_DEF_sf_Medium_tags_2)
+               /sizeof(asn_DEF_sf_Medium_tags_2[0]) - 1, /* 1 */
+       asn_DEF_sf_Medium_tags_2,       /* Same as above */
+       sizeof(asn_DEF_sf_Medium_tags_2)
+               /sizeof(asn_DEF_sf_Medium_tags_2[0]), /* 2 */
+       { &asn_OER_type_sf_Medium_constr_2, &asn_PER_type_sf_Medium_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sf_Medium_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_sf_High_value2enum_7[] = {
+       { 0,    6,      "oDot25" },
+       { 1,    5,      "oDot5" },
+       { 2,    6,      "oDot75" },
+       { 3,    5,      "lDot0" }
+};
+static const unsigned int asn_MAP_sf_High_enum2value_7[] = {
+       3,      /* lDot0(3) */
+       0,      /* oDot25(0) */
+       1,      /* oDot5(1) */
+       2       /* oDot75(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_sf_High_specs_7 = {
+       asn_MAP_sf_High_value2enum_7,   /* "tag" => N; sorted by tag */
+       asn_MAP_sf_High_enum2value_7,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_sf_High_tags_7[] = {
+       (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_sf_High_7 = {
+       "sf-High",
+       "sf-High",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_sf_High_tags_7,
+       sizeof(asn_DEF_sf_High_tags_7)
+               /sizeof(asn_DEF_sf_High_tags_7[0]) - 1, /* 1 */
+       asn_DEF_sf_High_tags_7, /* Same as above */
+       sizeof(asn_DEF_sf_High_tags_7)
+               /sizeof(asn_DEF_sf_High_tags_7[0]), /* 2 */
+       { &asn_OER_type_sf_High_constr_7, &asn_PER_type_sf_High_constr_7, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_sf_High_specs_7        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SpeedStateScaleFactors_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SpeedStateScaleFactors, sf_Medium),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sf_Medium_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sf-Medium"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SpeedStateScaleFactors, sf_High),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_sf_High_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sf-High"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SpeedStateScaleFactors_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SpeedStateScaleFactors_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sf-Medium */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* sf-High */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SpeedStateScaleFactors_specs_1 = {
+       sizeof(struct SpeedStateScaleFactors),
+       offsetof(struct SpeedStateScaleFactors, _asn_ctx),
+       asn_MAP_SpeedStateScaleFactors_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SpeedStateScaleFactors = {
+       "SpeedStateScaleFactors",
+       "SpeedStateScaleFactors",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SpeedStateScaleFactors_tags_1,
+       sizeof(asn_DEF_SpeedStateScaleFactors_tags_1)
+               /sizeof(asn_DEF_SpeedStateScaleFactors_tags_1[0]), /* 1 */
+       asn_DEF_SpeedStateScaleFactors_tags_1,  /* Same as above */
+       sizeof(asn_DEF_SpeedStateScaleFactors_tags_1)
+               /sizeof(asn_DEF_SpeedStateScaleFactors_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SpeedStateScaleFactors_1,
+       2,      /* Elements count */
+       &asn_SPC_SpeedStateScaleFactors_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SpeedStateScaleFactors.h b/src/codec_utils/RRC/SpeedStateScaleFactors.h
new file mode 100644 (file)
index 0000000..c4bde62
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SpeedStateScaleFactors_H_
+#define        _SpeedStateScaleFactors_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SpeedStateScaleFactors__sf_Medium {
+       SpeedStateScaleFactors__sf_Medium_oDot25        = 0,
+       SpeedStateScaleFactors__sf_Medium_oDot5 = 1,
+       SpeedStateScaleFactors__sf_Medium_oDot75        = 2,
+       SpeedStateScaleFactors__sf_Medium_lDot0 = 3
+} e_SpeedStateScaleFactors__sf_Medium;
+typedef enum SpeedStateScaleFactors__sf_High {
+       SpeedStateScaleFactors__sf_High_oDot25  = 0,
+       SpeedStateScaleFactors__sf_High_oDot5   = 1,
+       SpeedStateScaleFactors__sf_High_oDot75  = 2,
+       SpeedStateScaleFactors__sf_High_lDot0   = 3
+} e_SpeedStateScaleFactors__sf_High;
+
+/* SpeedStateScaleFactors */
+typedef struct SpeedStateScaleFactors {
+       long     sf_Medium;
+       long     sf_High;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SpeedStateScaleFactors_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_sf_Medium_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_sf_High_7;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SpeedStateScaleFactors;
+extern asn_SEQUENCE_specifics_t asn_SPC_SpeedStateScaleFactors_specs_1;
+extern asn_TYPE_member_t asn_MBR_SpeedStateScaleFactors_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SpeedStateScaleFactors_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SubcarrierSpacing.c b/src/codec_utils/RRC/SubcarrierSpacing.c
new file mode 100644 (file)
index 0000000..d95292b
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SubcarrierSpacing.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_SubcarrierSpacing_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SubcarrierSpacing_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_SubcarrierSpacing_value2enum_1[] = {
+       { 0,    5,      "kHz15" },
+       { 1,    5,      "kHz30" },
+       { 2,    5,      "kHz60" },
+       { 3,    6,      "kHz120" },
+       { 4,    6,      "kHz240" },
+       { 5,    6,      "spare3" },
+       { 6,    6,      "spare2" },
+       { 7,    6,      "spare1" }
+};
+static const unsigned int asn_MAP_SubcarrierSpacing_enum2value_1[] = {
+       3,      /* kHz120(3) */
+       0,      /* kHz15(0) */
+       4,      /* kHz240(4) */
+       1,      /* kHz30(1) */
+       2,      /* kHz60(2) */
+       7,      /* spare1(7) */
+       6,      /* spare2(6) */
+       5       /* spare3(5) */
+};
+const asn_INTEGER_specifics_t asn_SPC_SubcarrierSpacing_specs_1 = {
+       asn_MAP_SubcarrierSpacing_value2enum_1, /* "tag" => N; sorted by tag */
+       asn_MAP_SubcarrierSpacing_enum2value_1, /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_SubcarrierSpacing_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SubcarrierSpacing = {
+       "SubcarrierSpacing",
+       "SubcarrierSpacing",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_SubcarrierSpacing_tags_1,
+       sizeof(asn_DEF_SubcarrierSpacing_tags_1)
+               /sizeof(asn_DEF_SubcarrierSpacing_tags_1[0]), /* 1 */
+       asn_DEF_SubcarrierSpacing_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SubcarrierSpacing_tags_1)
+               /sizeof(asn_DEF_SubcarrierSpacing_tags_1[0]), /* 1 */
+       { &asn_OER_type_SubcarrierSpacing_constr_1, &asn_PER_type_SubcarrierSpacing_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_SubcarrierSpacing_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SubcarrierSpacing.h b/src/codec_utils/RRC/SubcarrierSpacing.h
new file mode 100644 (file)
index 0000000..28f8208
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SubcarrierSpacing_H_
+#define        _SubcarrierSpacing_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SubcarrierSpacing {
+       SubcarrierSpacing_kHz15 = 0,
+       SubcarrierSpacing_kHz30 = 1,
+       SubcarrierSpacing_kHz60 = 2,
+       SubcarrierSpacing_kHz120        = 3,
+       SubcarrierSpacing_kHz240        = 4,
+       SubcarrierSpacing_spare3        = 5,
+       SubcarrierSpacing_spare2        = 6,
+       SubcarrierSpacing_spare1        = 7
+} e_SubcarrierSpacing;
+
+/* SubcarrierSpacing */
+typedef long    SubcarrierSpacing_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_SubcarrierSpacing_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_SubcarrierSpacing;
+extern const asn_INTEGER_specifics_t asn_SPC_SubcarrierSpacing_specs_1;
+asn_struct_free_f SubcarrierSpacing_free;
+asn_struct_print_f SubcarrierSpacing_print;
+asn_constr_check_f SubcarrierSpacing_constraint;
+ber_type_decoder_f SubcarrierSpacing_decode_ber;
+der_type_encoder_f SubcarrierSpacing_encode_der;
+xer_type_decoder_f SubcarrierSpacing_decode_xer;
+xer_type_encoder_f SubcarrierSpacing_encode_xer;
+oer_type_decoder_f SubcarrierSpacing_decode_oer;
+oer_type_encoder_f SubcarrierSpacing_encode_oer;
+per_type_decoder_f SubcarrierSpacing_decode_uper;
+per_type_encoder_f SubcarrierSpacing_encode_uper;
+per_type_decoder_f SubcarrierSpacing_decode_aper;
+per_type_encoder_f SubcarrierSpacing_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SubcarrierSpacing_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SupportedBandwidth.c b/src/codec_utils/RRC/SupportedBandwidth.c
new file mode 100644 (file)
index 0000000..050ab9e
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SupportedBandwidth.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.
+ */
+static asn_oer_constraints_t asn_OER_type_fr1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fr1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_fr2_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_fr2_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_SupportedBandwidth_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_SupportedBandwidth_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_fr1_value2enum_2[] = {
+       { 0,    4,      "mhz5" },
+       { 1,    5,      "mhz10" },
+       { 2,    5,      "mhz15" },
+       { 3,    5,      "mhz20" },
+       { 4,    5,      "mhz25" },
+       { 5,    5,      "mhz30" },
+       { 6,    5,      "mhz40" },
+       { 7,    5,      "mhz50" },
+       { 8,    5,      "mhz60" },
+       { 9,    5,      "mhz80" },
+       { 10,   6,      "mhz100" }
+};
+static const unsigned int asn_MAP_fr1_enum2value_2[] = {
+       1,      /* mhz10(1) */
+       10,     /* mhz100(10) */
+       2,      /* mhz15(2) */
+       3,      /* mhz20(3) */
+       4,      /* mhz25(4) */
+       5,      /* mhz30(5) */
+       6,      /* mhz40(6) */
+       0,      /* mhz5(0) */
+       7,      /* mhz50(7) */
+       8,      /* mhz60(8) */
+       9       /* mhz80(9) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fr1_specs_2 = {
+       asn_MAP_fr1_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_fr1_enum2value_2,       /* N => "tag"; sorted by N */
+       11,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fr1_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_fr1_2 = {
+       "fr1",
+       "fr1",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fr1_tags_2,
+       sizeof(asn_DEF_fr1_tags_2)
+               /sizeof(asn_DEF_fr1_tags_2[0]) - 1, /* 1 */
+       asn_DEF_fr1_tags_2,     /* Same as above */
+       sizeof(asn_DEF_fr1_tags_2)
+               /sizeof(asn_DEF_fr1_tags_2[0]), /* 2 */
+       { &asn_OER_type_fr1_constr_2, &asn_PER_type_fr1_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fr1_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_fr2_value2enum_14[] = {
+       { 0,    5,      "mhz50" },
+       { 1,    6,      "mhz100" },
+       { 2,    6,      "mhz200" },
+       { 3,    6,      "mhz400" }
+};
+static const unsigned int asn_MAP_fr2_enum2value_14[] = {
+       1,      /* mhz100(1) */
+       2,      /* mhz200(2) */
+       3,      /* mhz400(3) */
+       0       /* mhz50(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_fr2_specs_14 = {
+       asn_MAP_fr2_value2enum_14,      /* "tag" => N; sorted by tag */
+       asn_MAP_fr2_enum2value_14,      /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_fr2_tags_14[] = {
+       (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_fr2_14 = {
+       "fr2",
+       "fr2",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_fr2_tags_14,
+       sizeof(asn_DEF_fr2_tags_14)
+               /sizeof(asn_DEF_fr2_tags_14[0]) - 1, /* 1 */
+       asn_DEF_fr2_tags_14,    /* Same as above */
+       sizeof(asn_DEF_fr2_tags_14)
+               /sizeof(asn_DEF_fr2_tags_14[0]), /* 2 */
+       { &asn_OER_type_fr2_constr_14, &asn_PER_type_fr2_constr_14, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_fr2_specs_14   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SupportedBandwidth_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SupportedBandwidth, choice.fr1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fr1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SupportedBandwidth, choice.fr2),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_fr2_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr2"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_SupportedBandwidth_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fr1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* fr2 */
+};
+asn_CHOICE_specifics_t asn_SPC_SupportedBandwidth_specs_1 = {
+       sizeof(struct SupportedBandwidth),
+       offsetof(struct SupportedBandwidth, _asn_ctx),
+       offsetof(struct SupportedBandwidth, present),
+       sizeof(((struct SupportedBandwidth *)0)->present),
+       asn_MAP_SupportedBandwidth_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_SupportedBandwidth = {
+       "SupportedBandwidth",
+       "SupportedBandwidth",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_SupportedBandwidth_constr_1, &asn_PER_type_SupportedBandwidth_constr_1, CHOICE_constraint },
+       asn_MBR_SupportedBandwidth_1,
+       2,      /* Elements count */
+       &asn_SPC_SupportedBandwidth_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SupportedBandwidth.h b/src/codec_utils/RRC/SupportedBandwidth.h
new file mode 100644 (file)
index 0000000..820bf8a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SupportedBandwidth_H_
+#define        _SupportedBandwidth_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SupportedBandwidth_PR {
+       SupportedBandwidth_PR_NOTHING,  /* No components present */
+       SupportedBandwidth_PR_fr1,
+       SupportedBandwidth_PR_fr2
+} SupportedBandwidth_PR;
+typedef enum SupportedBandwidth__fr1 {
+       SupportedBandwidth__fr1_mhz5    = 0,
+       SupportedBandwidth__fr1_mhz10   = 1,
+       SupportedBandwidth__fr1_mhz15   = 2,
+       SupportedBandwidth__fr1_mhz20   = 3,
+       SupportedBandwidth__fr1_mhz25   = 4,
+       SupportedBandwidth__fr1_mhz30   = 5,
+       SupportedBandwidth__fr1_mhz40   = 6,
+       SupportedBandwidth__fr1_mhz50   = 7,
+       SupportedBandwidth__fr1_mhz60   = 8,
+       SupportedBandwidth__fr1_mhz80   = 9,
+       SupportedBandwidth__fr1_mhz100  = 10
+} e_SupportedBandwidth__fr1;
+typedef enum SupportedBandwidth__fr2 {
+       SupportedBandwidth__fr2_mhz50   = 0,
+       SupportedBandwidth__fr2_mhz100  = 1,
+       SupportedBandwidth__fr2_mhz200  = 2,
+       SupportedBandwidth__fr2_mhz400  = 3
+} e_SupportedBandwidth__fr2;
+
+/* SupportedBandwidth */
+typedef struct SupportedBandwidth {
+       SupportedBandwidth_PR present;
+       union SupportedBandwidth_u {
+               long     fr1;
+               long     fr2;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SupportedBandwidth_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_fr1_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_fr2_14;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_SupportedBandwidth;
+extern asn_CHOICE_specifics_t asn_SPC_SupportedBandwidth_specs_1;
+extern asn_TYPE_member_t asn_MBR_SupportedBandwidth_1[2];
+extern asn_per_constraints_t asn_PER_type_SupportedBandwidth_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SupportedBandwidth_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SuspendConfig.c b/src/codec_utils/RRC/SuspendConfig.c
new file mode 100644 (file)
index 0000000..7713fe6
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SuspendConfig.h"
+
+#include "RAN-NotificationAreaInfo.h"
+asn_TYPE_member_t asn_MBR_SuspendConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SuspendConfig, fullI_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_I_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fullI-RNTI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SuspendConfig, shortI_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ShortI_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shortI-RNTI"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SuspendConfig, ran_PagingCycle),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PagingCycle,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-PagingCycle"
+               },
+       { ATF_POINTER, 2, offsetof(struct SuspendConfig, ran_NotificationAreaInfo),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_RAN_NotificationAreaInfo,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ran-NotificationAreaInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct SuspendConfig, t380),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PeriodicRNAU_TimerValue,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t380"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct SuspendConfig, nextHopChainingCount),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NextHopChainingCount,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nextHopChainingCount"
+               },
+};
+static const int asn_MAP_SuspendConfig_oms_1[] = { 3, 4 };
+static const ber_tlv_tag_t asn_DEF_SuspendConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SuspendConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* fullI-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shortI-RNTI */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ran-PagingCycle */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* ran-NotificationAreaInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* t380 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* nextHopChainingCount */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SuspendConfig_specs_1 = {
+       sizeof(struct SuspendConfig),
+       offsetof(struct SuspendConfig, _asn_ctx),
+       asn_MAP_SuspendConfig_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_SuspendConfig_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SuspendConfig = {
+       "SuspendConfig",
+       "SuspendConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SuspendConfig_tags_1,
+       sizeof(asn_DEF_SuspendConfig_tags_1)
+               /sizeof(asn_DEF_SuspendConfig_tags_1[0]), /* 1 */
+       asn_DEF_SuspendConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SuspendConfig_tags_1)
+               /sizeof(asn_DEF_SuspendConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SuspendConfig_1,
+       6,      /* Elements count */
+       &asn_SPC_SuspendConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SuspendConfig.h b/src/codec_utils/RRC/SuspendConfig.h
new file mode 100644 (file)
index 0000000..8863cf2
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SuspendConfig_H_
+#define        _SuspendConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "I-RNTI-Value.h"
+#include "ShortI-RNTI-Value.h"
+#include "PagingCycle.h"
+#include "PeriodicRNAU-TimerValue.h"
+#include "NextHopChainingCount.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RAN_NotificationAreaInfo;
+
+/* SuspendConfig */
+typedef struct SuspendConfig {
+       I_RNTI_Value_t   fullI_RNTI;
+       ShortI_RNTI_Value_t      shortI_RNTI;
+       PagingCycle_t    ran_PagingCycle;
+       struct RAN_NotificationAreaInfo *ran_NotificationAreaInfo;      /* OPTIONAL */
+       PeriodicRNAU_TimerValue_t       *t380;  /* OPTIONAL */
+       NextHopChainingCount_t   nextHopChainingCount;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SuspendConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SuspendConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_SuspendConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_SuspendConfig_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SuspendConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SystemInformation-IEs.c b/src/codec_utils/RRC/SystemInformation-IEs.c
new file mode 100644 (file)
index 0000000..750a19e
--- /dev/null
@@ -0,0 +1,304 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SystemInformation-IEs.h"
+
+#include "SIB2.h"
+#include "SIB3.h"
+#include "SIB4.h"
+#include "SIB5.h"
+#include "SIB6.h"
+#include "SIB7.h"
+#include "SIB8.h"
+#include "SIB9.h"
+static int
+memb_sib_TypeAndInfo_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 <= 32)) {
+               /* 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_Member_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_Member_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }    /* (0..7,...) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_sib_TypeAndInfo_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_type_sib_TypeAndInfo_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_sib_TypeAndInfo_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+static asn_per_constraints_t asn_PER_memb_sib_TypeAndInfo_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_Member_3[] = {
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib2),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib2"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib3"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib4),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib4"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib5),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib5"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib6),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib6"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib7),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib7"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib8),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib8"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, choice.sib9),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SIB9,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sib9"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_Member_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sib2 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sib3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sib4 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sib5 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sib6 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sib7 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sib8 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sib9 */
+};
+static asn_CHOICE_specifics_t asn_SPC_Member_specs_3 = {
+       sizeof(struct SystemInformation_IEs__sib_TypeAndInfo__Member),
+       offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, _asn_ctx),
+       offsetof(struct SystemInformation_IEs__sib_TypeAndInfo__Member, present),
+       sizeof(((struct SystemInformation_IEs__sib_TypeAndInfo__Member *)0)->present),
+       asn_MAP_Member_tag2el_3,
+       8,      /* Count of tags in the map */
+       0, 0,
+       8       /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_Member_3 = {
+       "CHOICE",
+       "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_Member_constr_3, &asn_PER_type_Member_constr_3, CHOICE_constraint },
+       asn_MBR_Member_3,
+       8,      /* Elements count */
+       &asn_SPC_Member_specs_3 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_sib_TypeAndInfo_2[] = {
+       { ATF_POINTER, 0, 0,
+               -1 /* Ambiguous tag (CHOICE?) */,
+               0,
+               &asn_DEF_Member_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_sib_TypeAndInfo_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_sib_TypeAndInfo_specs_2 = {
+       sizeof(struct SystemInformation_IEs__sib_TypeAndInfo),
+       offsetof(struct SystemInformation_IEs__sib_TypeAndInfo, _asn_ctx),
+       2,      /* XER encoding is XMLValueList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_sib_TypeAndInfo_2 = {
+       "sib-TypeAndInfo",
+       "sib-TypeAndInfo",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_sib_TypeAndInfo_tags_2,
+       sizeof(asn_DEF_sib_TypeAndInfo_tags_2)
+               /sizeof(asn_DEF_sib_TypeAndInfo_tags_2[0]) - 1, /* 1 */
+       asn_DEF_sib_TypeAndInfo_tags_2, /* Same as above */
+       sizeof(asn_DEF_sib_TypeAndInfo_tags_2)
+               /sizeof(asn_DEF_sib_TypeAndInfo_tags_2[0]), /* 2 */
+       { &asn_OER_type_sib_TypeAndInfo_constr_2, &asn_PER_type_sib_TypeAndInfo_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_sib_TypeAndInfo_2,
+       1,      /* Single element */
+       &asn_SPC_sib_TypeAndInfo_specs_2        /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_14 = {
+       sizeof(struct SystemInformation_IEs__nonCriticalExtension),
+       offsetof(struct SystemInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_14 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_14,
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_14,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_14  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SystemInformation_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SystemInformation_IEs, sib_TypeAndInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_sib_TypeAndInfo_2,
+               0,
+               { &asn_OER_memb_sib_TypeAndInfo_constr_2, &asn_PER_memb_sib_TypeAndInfo_constr_2,  memb_sib_TypeAndInfo_constraint_1 },
+               0, 0, /* No default value */
+               "sib-TypeAndInfo"
+               },
+       { ATF_POINTER, 2, offsetof(struct SystemInformation_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct SystemInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_SystemInformation_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_SystemInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SystemInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sib-TypeAndInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SystemInformation_IEs_specs_1 = {
+       sizeof(struct SystemInformation_IEs),
+       offsetof(struct SystemInformation_IEs, _asn_ctx),
+       asn_MAP_SystemInformation_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_SystemInformation_IEs_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_SystemInformation_IEs = {
+       "SystemInformation-IEs",
+       "SystemInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SystemInformation_IEs_tags_1,
+       sizeof(asn_DEF_SystemInformation_IEs_tags_1)
+               /sizeof(asn_DEF_SystemInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_SystemInformation_IEs_tags_1,   /* Same as above */
+       sizeof(asn_DEF_SystemInformation_IEs_tags_1)
+               /sizeof(asn_DEF_SystemInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SystemInformation_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_SystemInformation_IEs_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SystemInformation-IEs.h b/src/codec_utils/RRC/SystemInformation-IEs.h
new file mode 100644 (file)
index 0000000..7c3c180
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SystemInformation_IEs_H_
+#define        _SystemInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SystemInformation_IEs__sib_TypeAndInfo__Member_PR {
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_NOTHING,      /* No components present */
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib2,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib3,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib4,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib5,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib6,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib7,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib8,
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR_sib9
+       /* Extensions may appear below */
+       
+} SystemInformation_IEs__sib_TypeAndInfo__Member_PR;
+
+/* Forward declarations */
+struct SIB2;
+struct SIB3;
+struct SIB4;
+struct SIB5;
+struct SIB6;
+struct SIB7;
+struct SIB8;
+struct SIB9;
+
+/* Forward definitions */
+typedef struct SystemInformation_IEs__sib_TypeAndInfo__Member {
+       SystemInformation_IEs__sib_TypeAndInfo__Member_PR present;
+       union SystemInformation_IEs__sib_TypeAndInfo__Member_u {
+               struct SIB2     *sib2;
+               struct SIB3     *sib3;
+               struct SIB4     *sib4;
+               struct SIB5     *sib5;
+               struct SIB6     *sib6;
+               struct SIB7     *sib7;
+               struct SIB8     *sib8;
+               struct SIB9     *sib9;
+               /*
+                * This type is extensible,
+                * possible extensions are below.
+                */
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SystemInformation_IEs__sib_TypeAndInfo__Member;
+
+/* SystemInformation-IEs */
+typedef struct SystemInformation_IEs {
+       struct SystemInformation_IEs__sib_TypeAndInfo {
+               A_SEQUENCE_OF(SystemInformation_IEs__sib_TypeAndInfo__Member) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } sib_TypeAndInfo;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct SystemInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SystemInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SystemInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SystemInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_SystemInformation_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SystemInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/SystemInformation.c b/src/codec_utils/RRC/SystemInformation.c
new file mode 100644 (file)
index 0000000..d616920
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "SystemInformation.h"
+
+#include "SystemInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct SystemInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct SystemInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct SystemInformation__criticalExtensions, choice.systemInformation_r15),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SystemInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "systemInformation-r15"
+               },
+       { ATF_POINTER, 0, offsetof(struct SystemInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* systemInformation-r15 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct SystemInformation__criticalExtensions),
+       offsetof(struct SystemInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct SystemInformation__criticalExtensions, present),
+       sizeof(((struct SystemInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_SystemInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct SystemInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_SystemInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_SystemInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_SystemInformation_specs_1 = {
+       sizeof(struct SystemInformation),
+       offsetof(struct SystemInformation, _asn_ctx),
+       asn_MAP_SystemInformation_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_SystemInformation = {
+       "SystemInformation",
+       "SystemInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_SystemInformation_tags_1,
+       sizeof(asn_DEF_SystemInformation_tags_1)
+               /sizeof(asn_DEF_SystemInformation_tags_1[0]), /* 1 */
+       asn_DEF_SystemInformation_tags_1,       /* Same as above */
+       sizeof(asn_DEF_SystemInformation_tags_1)
+               /sizeof(asn_DEF_SystemInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_SystemInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_SystemInformation_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/SystemInformation.h b/src/codec_utils/RRC/SystemInformation.h
new file mode 100644 (file)
index 0000000..567caf4
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _SystemInformation_H_
+#define        _SystemInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SystemInformation__criticalExtensions_PR {
+       SystemInformation__criticalExtensions_PR_NOTHING,       /* No components present */
+       SystemInformation__criticalExtensions_PR_systemInformation_r15,
+       SystemInformation__criticalExtensions_PR_criticalExtensionsFuture
+} SystemInformation__criticalExtensions_PR;
+
+/* Forward declarations */
+struct SystemInformation_IEs;
+
+/* SystemInformation */
+typedef struct SystemInformation {
+       struct SystemInformation__criticalExtensions {
+               SystemInformation__criticalExtensions_PR present;
+               union SystemInformation__criticalExtensions_u {
+                       struct SystemInformation_IEs    *systemInformation_r15;
+                       struct SystemInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} SystemInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SystemInformation;
+extern asn_SEQUENCE_specifics_t asn_SPC_SystemInformation_specs_1;
+extern asn_TYPE_member_t asn_MBR_SystemInformation_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SystemInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/T-PollRetransmit.c b/src/codec_utils/RRC/T-PollRetransmit.c
new file mode 100644 (file)
index 0000000..61bf3b4
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "T-PollRetransmit.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_T_PollRetransmit_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_T_PollRetransmit_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_T_PollRetransmit_value2enum_1[] = {
+       { 0,    3,      "ms5" },
+       { 1,    4,      "ms10" },
+       { 2,    4,      "ms15" },
+       { 3,    4,      "ms20" },
+       { 4,    4,      "ms25" },
+       { 5,    4,      "ms30" },
+       { 6,    4,      "ms35" },
+       { 7,    4,      "ms40" },
+       { 8,    4,      "ms45" },
+       { 9,    4,      "ms50" },
+       { 10,   4,      "ms55" },
+       { 11,   4,      "ms60" },
+       { 12,   4,      "ms65" },
+       { 13,   4,      "ms70" },
+       { 14,   4,      "ms75" },
+       { 15,   4,      "ms80" },
+       { 16,   4,      "ms85" },
+       { 17,   4,      "ms90" },
+       { 18,   4,      "ms95" },
+       { 19,   5,      "ms100" },
+       { 20,   5,      "ms105" },
+       { 21,   5,      "ms110" },
+       { 22,   5,      "ms115" },
+       { 23,   5,      "ms120" },
+       { 24,   5,      "ms125" },
+       { 25,   5,      "ms130" },
+       { 26,   5,      "ms135" },
+       { 27,   5,      "ms140" },
+       { 28,   5,      "ms145" },
+       { 29,   5,      "ms150" },
+       { 30,   5,      "ms155" },
+       { 31,   5,      "ms160" },
+       { 32,   5,      "ms165" },
+       { 33,   5,      "ms170" },
+       { 34,   5,      "ms175" },
+       { 35,   5,      "ms180" },
+       { 36,   5,      "ms185" },
+       { 37,   5,      "ms190" },
+       { 38,   5,      "ms195" },
+       { 39,   5,      "ms200" },
+       { 40,   5,      "ms205" },
+       { 41,   5,      "ms210" },
+       { 42,   5,      "ms215" },
+       { 43,   5,      "ms220" },
+       { 44,   5,      "ms225" },
+       { 45,   5,      "ms230" },
+       { 46,   5,      "ms235" },
+       { 47,   5,      "ms240" },
+       { 48,   5,      "ms245" },
+       { 49,   5,      "ms250" },
+       { 50,   5,      "ms300" },
+       { 51,   5,      "ms350" },
+       { 52,   5,      "ms400" },
+       { 53,   5,      "ms450" },
+       { 54,   5,      "ms500" },
+       { 55,   5,      "ms800" },
+       { 56,   6,      "ms1000" },
+       { 57,   6,      "ms2000" },
+       { 58,   6,      "ms4000" },
+       { 59,   6,      "spare5" },
+       { 60,   6,      "spare4" },
+       { 61,   6,      "spare3" },
+       { 62,   6,      "spare2" },
+       { 63,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_T_PollRetransmit_enum2value_1[] = {
+       1,      /* ms10(1) */
+       19,     /* ms100(19) */
+       56,     /* ms1000(56) */
+       20,     /* ms105(20) */
+       21,     /* ms110(21) */
+       22,     /* ms115(22) */
+       23,     /* ms120(23) */
+       24,     /* ms125(24) */
+       25,     /* ms130(25) */
+       26,     /* ms135(26) */
+       27,     /* ms140(27) */
+       28,     /* ms145(28) */
+       2,      /* ms15(2) */
+       29,     /* ms150(29) */
+       30,     /* ms155(30) */
+       31,     /* ms160(31) */
+       32,     /* ms165(32) */
+       33,     /* ms170(33) */
+       34,     /* ms175(34) */
+       35,     /* ms180(35) */
+       36,     /* ms185(36) */
+       37,     /* ms190(37) */
+       38,     /* ms195(38) */
+       3,      /* ms20(3) */
+       39,     /* ms200(39) */
+       57,     /* ms2000(57) */
+       40,     /* ms205(40) */
+       41,     /* ms210(41) */
+       42,     /* ms215(42) */
+       43,     /* ms220(43) */
+       44,     /* ms225(44) */
+       45,     /* ms230(45) */
+       46,     /* ms235(46) */
+       47,     /* ms240(47) */
+       48,     /* ms245(48) */
+       4,      /* ms25(4) */
+       49,     /* ms250(49) */
+       5,      /* ms30(5) */
+       50,     /* ms300(50) */
+       6,      /* ms35(6) */
+       51,     /* ms350(51) */
+       7,      /* ms40(7) */
+       52,     /* ms400(52) */
+       58,     /* ms4000(58) */
+       8,      /* ms45(8) */
+       53,     /* ms450(53) */
+       0,      /* ms5(0) */
+       9,      /* ms50(9) */
+       54,     /* ms500(54) */
+       10,     /* ms55(10) */
+       11,     /* ms60(11) */
+       12,     /* ms65(12) */
+       13,     /* ms70(13) */
+       14,     /* ms75(14) */
+       15,     /* ms80(15) */
+       55,     /* ms800(55) */
+       16,     /* ms85(16) */
+       17,     /* ms90(17) */
+       18,     /* ms95(18) */
+       63,     /* spare1(63) */
+       62,     /* spare2(62) */
+       61,     /* spare3(61) */
+       60,     /* spare4(60) */
+       59      /* spare5(59) */
+};
+const asn_INTEGER_specifics_t asn_SPC_T_PollRetransmit_specs_1 = {
+       asn_MAP_T_PollRetransmit_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_T_PollRetransmit_enum2value_1,  /* N => "tag"; sorted by N */
+       64,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_T_PollRetransmit_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_T_PollRetransmit = {
+       "T-PollRetransmit",
+       "T-PollRetransmit",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_T_PollRetransmit_tags_1,
+       sizeof(asn_DEF_T_PollRetransmit_tags_1)
+               /sizeof(asn_DEF_T_PollRetransmit_tags_1[0]), /* 1 */
+       asn_DEF_T_PollRetransmit_tags_1,        /* Same as above */
+       sizeof(asn_DEF_T_PollRetransmit_tags_1)
+               /sizeof(asn_DEF_T_PollRetransmit_tags_1[0]), /* 1 */
+       { &asn_OER_type_T_PollRetransmit_constr_1, &asn_PER_type_T_PollRetransmit_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_T_PollRetransmit_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/T-PollRetransmit.h b/src/codec_utils/RRC/T-PollRetransmit.h
new file mode 100644 (file)
index 0000000..fdb19ee
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _T_PollRetransmit_H_
+#define        _T_PollRetransmit_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum T_PollRetransmit {
+       T_PollRetransmit_ms5    = 0,
+       T_PollRetransmit_ms10   = 1,
+       T_PollRetransmit_ms15   = 2,
+       T_PollRetransmit_ms20   = 3,
+       T_PollRetransmit_ms25   = 4,
+       T_PollRetransmit_ms30   = 5,
+       T_PollRetransmit_ms35   = 6,
+       T_PollRetransmit_ms40   = 7,
+       T_PollRetransmit_ms45   = 8,
+       T_PollRetransmit_ms50   = 9,
+       T_PollRetransmit_ms55   = 10,
+       T_PollRetransmit_ms60   = 11,
+       T_PollRetransmit_ms65   = 12,
+       T_PollRetransmit_ms70   = 13,
+       T_PollRetransmit_ms75   = 14,
+       T_PollRetransmit_ms80   = 15,
+       T_PollRetransmit_ms85   = 16,
+       T_PollRetransmit_ms90   = 17,
+       T_PollRetransmit_ms95   = 18,
+       T_PollRetransmit_ms100  = 19,
+       T_PollRetransmit_ms105  = 20,
+       T_PollRetransmit_ms110  = 21,
+       T_PollRetransmit_ms115  = 22,
+       T_PollRetransmit_ms120  = 23,
+       T_PollRetransmit_ms125  = 24,
+       T_PollRetransmit_ms130  = 25,
+       T_PollRetransmit_ms135  = 26,
+       T_PollRetransmit_ms140  = 27,
+       T_PollRetransmit_ms145  = 28,
+       T_PollRetransmit_ms150  = 29,
+       T_PollRetransmit_ms155  = 30,
+       T_PollRetransmit_ms160  = 31,
+       T_PollRetransmit_ms165  = 32,
+       T_PollRetransmit_ms170  = 33,
+       T_PollRetransmit_ms175  = 34,
+       T_PollRetransmit_ms180  = 35,
+       T_PollRetransmit_ms185  = 36,
+       T_PollRetransmit_ms190  = 37,
+       T_PollRetransmit_ms195  = 38,
+       T_PollRetransmit_ms200  = 39,
+       T_PollRetransmit_ms205  = 40,
+       T_PollRetransmit_ms210  = 41,
+       T_PollRetransmit_ms215  = 42,
+       T_PollRetransmit_ms220  = 43,
+       T_PollRetransmit_ms225  = 44,
+       T_PollRetransmit_ms230  = 45,
+       T_PollRetransmit_ms235  = 46,
+       T_PollRetransmit_ms240  = 47,
+       T_PollRetransmit_ms245  = 48,
+       T_PollRetransmit_ms250  = 49,
+       T_PollRetransmit_ms300  = 50,
+       T_PollRetransmit_ms350  = 51,
+       T_PollRetransmit_ms400  = 52,
+       T_PollRetransmit_ms450  = 53,
+       T_PollRetransmit_ms500  = 54,
+       T_PollRetransmit_ms800  = 55,
+       T_PollRetransmit_ms1000 = 56,
+       T_PollRetransmit_ms2000 = 57,
+       T_PollRetransmit_ms4000 = 58,
+       T_PollRetransmit_spare5 = 59,
+       T_PollRetransmit_spare4 = 60,
+       T_PollRetransmit_spare3 = 61,
+       T_PollRetransmit_spare2 = 62,
+       T_PollRetransmit_spare1 = 63
+} e_T_PollRetransmit;
+
+/* T-PollRetransmit */
+typedef long    T_PollRetransmit_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_T_PollRetransmit_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_T_PollRetransmit;
+extern const asn_INTEGER_specifics_t asn_SPC_T_PollRetransmit_specs_1;
+asn_struct_free_f T_PollRetransmit_free;
+asn_struct_print_f T_PollRetransmit_print;
+asn_constr_check_f T_PollRetransmit_constraint;
+ber_type_decoder_f T_PollRetransmit_decode_ber;
+der_type_encoder_f T_PollRetransmit_encode_der;
+xer_type_decoder_f T_PollRetransmit_decode_xer;
+xer_type_encoder_f T_PollRetransmit_encode_xer;
+oer_type_decoder_f T_PollRetransmit_decode_oer;
+oer_type_encoder_f T_PollRetransmit_encode_oer;
+per_type_decoder_f T_PollRetransmit_decode_uper;
+per_type_encoder_f T_PollRetransmit_encode_uper;
+per_type_decoder_f T_PollRetransmit_decode_aper;
+per_type_encoder_f T_PollRetransmit_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _T_PollRetransmit_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/T-Reassembly.c b/src/codec_utils/RRC/T-Reassembly.c
new file mode 100644 (file)
index 0000000..381d351
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "T-Reassembly.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_T_Reassembly_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_T_Reassembly_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_T_Reassembly_value2enum_1[] = {
+       { 0,    3,      "ms0" },
+       { 1,    3,      "ms5" },
+       { 2,    4,      "ms10" },
+       { 3,    4,      "ms15" },
+       { 4,    4,      "ms20" },
+       { 5,    4,      "ms25" },
+       { 6,    4,      "ms30" },
+       { 7,    4,      "ms35" },
+       { 8,    4,      "ms40" },
+       { 9,    4,      "ms45" },
+       { 10,   4,      "ms50" },
+       { 11,   4,      "ms55" },
+       { 12,   4,      "ms60" },
+       { 13,   4,      "ms65" },
+       { 14,   4,      "ms70" },
+       { 15,   4,      "ms75" },
+       { 16,   4,      "ms80" },
+       { 17,   4,      "ms85" },
+       { 18,   4,      "ms90" },
+       { 19,   4,      "ms95" },
+       { 20,   5,      "ms100" },
+       { 21,   5,      "ms110" },
+       { 22,   5,      "ms120" },
+       { 23,   5,      "ms130" },
+       { 24,   5,      "ms140" },
+       { 25,   5,      "ms150" },
+       { 26,   5,      "ms160" },
+       { 27,   5,      "ms170" },
+       { 28,   5,      "ms180" },
+       { 29,   5,      "ms190" },
+       { 30,   5,      "ms200" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_T_Reassembly_enum2value_1[] = {
+       0,      /* ms0(0) */
+       2,      /* ms10(2) */
+       20,     /* ms100(20) */
+       21,     /* ms110(21) */
+       22,     /* ms120(22) */
+       23,     /* ms130(23) */
+       24,     /* ms140(24) */
+       3,      /* ms15(3) */
+       25,     /* ms150(25) */
+       26,     /* ms160(26) */
+       27,     /* ms170(27) */
+       28,     /* ms180(28) */
+       29,     /* ms190(29) */
+       4,      /* ms20(4) */
+       30,     /* ms200(30) */
+       5,      /* ms25(5) */
+       6,      /* ms30(6) */
+       7,      /* ms35(7) */
+       8,      /* ms40(8) */
+       9,      /* ms45(9) */
+       1,      /* ms5(1) */
+       10,     /* ms50(10) */
+       11,     /* ms55(11) */
+       12,     /* ms60(12) */
+       13,     /* ms65(13) */
+       14,     /* ms70(14) */
+       15,     /* ms75(15) */
+       16,     /* ms80(16) */
+       17,     /* ms85(17) */
+       18,     /* ms90(18) */
+       19,     /* ms95(19) */
+       31      /* spare1(31) */
+};
+const asn_INTEGER_specifics_t asn_SPC_T_Reassembly_specs_1 = {
+       asn_MAP_T_Reassembly_value2enum_1,      /* "tag" => N; sorted by tag */
+       asn_MAP_T_Reassembly_enum2value_1,      /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_T_Reassembly_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_T_Reassembly = {
+       "T-Reassembly",
+       "T-Reassembly",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_T_Reassembly_tags_1,
+       sizeof(asn_DEF_T_Reassembly_tags_1)
+               /sizeof(asn_DEF_T_Reassembly_tags_1[0]), /* 1 */
+       asn_DEF_T_Reassembly_tags_1,    /* Same as above */
+       sizeof(asn_DEF_T_Reassembly_tags_1)
+               /sizeof(asn_DEF_T_Reassembly_tags_1[0]), /* 1 */
+       { &asn_OER_type_T_Reassembly_constr_1, &asn_PER_type_T_Reassembly_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_T_Reassembly_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/T-Reassembly.h b/src/codec_utils/RRC/T-Reassembly.h
new file mode 100644 (file)
index 0000000..62a7e6a
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _T_Reassembly_H_
+#define        _T_Reassembly_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum T_Reassembly {
+       T_Reassembly_ms0        = 0,
+       T_Reassembly_ms5        = 1,
+       T_Reassembly_ms10       = 2,
+       T_Reassembly_ms15       = 3,
+       T_Reassembly_ms20       = 4,
+       T_Reassembly_ms25       = 5,
+       T_Reassembly_ms30       = 6,
+       T_Reassembly_ms35       = 7,
+       T_Reassembly_ms40       = 8,
+       T_Reassembly_ms45       = 9,
+       T_Reassembly_ms50       = 10,
+       T_Reassembly_ms55       = 11,
+       T_Reassembly_ms60       = 12,
+       T_Reassembly_ms65       = 13,
+       T_Reassembly_ms70       = 14,
+       T_Reassembly_ms75       = 15,
+       T_Reassembly_ms80       = 16,
+       T_Reassembly_ms85       = 17,
+       T_Reassembly_ms90       = 18,
+       T_Reassembly_ms95       = 19,
+       T_Reassembly_ms100      = 20,
+       T_Reassembly_ms110      = 21,
+       T_Reassembly_ms120      = 22,
+       T_Reassembly_ms130      = 23,
+       T_Reassembly_ms140      = 24,
+       T_Reassembly_ms150      = 25,
+       T_Reassembly_ms160      = 26,
+       T_Reassembly_ms170      = 27,
+       T_Reassembly_ms180      = 28,
+       T_Reassembly_ms190      = 29,
+       T_Reassembly_ms200      = 30,
+       T_Reassembly_spare1     = 31
+} e_T_Reassembly;
+
+/* T-Reassembly */
+typedef long    T_Reassembly_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_T_Reassembly_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_T_Reassembly;
+extern const asn_INTEGER_specifics_t asn_SPC_T_Reassembly_specs_1;
+asn_struct_free_f T_Reassembly_free;
+asn_struct_print_f T_Reassembly_print;
+asn_constr_check_f T_Reassembly_constraint;
+ber_type_decoder_f T_Reassembly_decode_ber;
+der_type_encoder_f T_Reassembly_encode_der;
+xer_type_decoder_f T_Reassembly_decode_xer;
+xer_type_encoder_f T_Reassembly_encode_xer;
+oer_type_decoder_f T_Reassembly_decode_oer;
+oer_type_encoder_f T_Reassembly_encode_oer;
+per_type_decoder_f T_Reassembly_decode_uper;
+per_type_encoder_f T_Reassembly_encode_uper;
+per_type_decoder_f T_Reassembly_decode_aper;
+per_type_encoder_f T_Reassembly_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _T_Reassembly_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/T-Reselection.c b/src/codec_utils/RRC/T-Reselection.c
new file mode 100644 (file)
index 0000000..b42e1a6
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "T-Reselection.h"
+
+int
+T_Reselection_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 <= 7)) {
+               /* 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_T_Reselection_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..7) */,
+       -1};
+asn_per_constraints_t asn_PER_type_T_Reselection_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_T_Reselection_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_T_Reselection = {
+       "T-Reselection",
+       "T-Reselection",
+       &asn_OP_NativeInteger,
+       asn_DEF_T_Reselection_tags_1,
+       sizeof(asn_DEF_T_Reselection_tags_1)
+               /sizeof(asn_DEF_T_Reselection_tags_1[0]), /* 1 */
+       asn_DEF_T_Reselection_tags_1,   /* Same as above */
+       sizeof(asn_DEF_T_Reselection_tags_1)
+               /sizeof(asn_DEF_T_Reselection_tags_1[0]), /* 1 */
+       { &asn_OER_type_T_Reselection_constr_1, &asn_PER_type_T_Reselection_constr_1, T_Reselection_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/T-Reselection.h b/src/codec_utils/RRC/T-Reselection.h
new file mode 100644 (file)
index 0000000..37e83a9
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _T_Reselection_H_
+#define        _T_Reselection_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* T-Reselection */
+typedef long    T_Reselection_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_T_Reselection_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_T_Reselection;
+asn_struct_free_f T_Reselection_free;
+asn_struct_print_f T_Reselection_print;
+asn_constr_check_f T_Reselection_constraint;
+ber_type_decoder_f T_Reselection_decode_ber;
+der_type_encoder_f T_Reselection_encode_der;
+xer_type_decoder_f T_Reselection_decode_xer;
+xer_type_encoder_f T_Reselection_encode_xer;
+oer_type_decoder_f T_Reselection_decode_oer;
+oer_type_encoder_f T_Reselection_encode_oer;
+per_type_decoder_f T_Reselection_decode_uper;
+per_type_encoder_f T_Reselection_encode_uper;
+per_type_decoder_f T_Reselection_decode_aper;
+per_type_encoder_f T_Reselection_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _T_Reselection_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/T-StatusProhibit.c b/src/codec_utils/RRC/T-StatusProhibit.c
new file mode 100644 (file)
index 0000000..dda569c
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "T-StatusProhibit.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_T_StatusProhibit_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_T_StatusProhibit_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_T_StatusProhibit_value2enum_1[] = {
+       { 0,    3,      "ms0" },
+       { 1,    3,      "ms5" },
+       { 2,    4,      "ms10" },
+       { 3,    4,      "ms15" },
+       { 4,    4,      "ms20" },
+       { 5,    4,      "ms25" },
+       { 6,    4,      "ms30" },
+       { 7,    4,      "ms35" },
+       { 8,    4,      "ms40" },
+       { 9,    4,      "ms45" },
+       { 10,   4,      "ms50" },
+       { 11,   4,      "ms55" },
+       { 12,   4,      "ms60" },
+       { 13,   4,      "ms65" },
+       { 14,   4,      "ms70" },
+       { 15,   4,      "ms75" },
+       { 16,   4,      "ms80" },
+       { 17,   4,      "ms85" },
+       { 18,   4,      "ms90" },
+       { 19,   4,      "ms95" },
+       { 20,   5,      "ms100" },
+       { 21,   5,      "ms105" },
+       { 22,   5,      "ms110" },
+       { 23,   5,      "ms115" },
+       { 24,   5,      "ms120" },
+       { 25,   5,      "ms125" },
+       { 26,   5,      "ms130" },
+       { 27,   5,      "ms135" },
+       { 28,   5,      "ms140" },
+       { 29,   5,      "ms145" },
+       { 30,   5,      "ms150" },
+       { 31,   5,      "ms155" },
+       { 32,   5,      "ms160" },
+       { 33,   5,      "ms165" },
+       { 34,   5,      "ms170" },
+       { 35,   5,      "ms175" },
+       { 36,   5,      "ms180" },
+       { 37,   5,      "ms185" },
+       { 38,   5,      "ms190" },
+       { 39,   5,      "ms195" },
+       { 40,   5,      "ms200" },
+       { 41,   5,      "ms205" },
+       { 42,   5,      "ms210" },
+       { 43,   5,      "ms215" },
+       { 44,   5,      "ms220" },
+       { 45,   5,      "ms225" },
+       { 46,   5,      "ms230" },
+       { 47,   5,      "ms235" },
+       { 48,   5,      "ms240" },
+       { 49,   5,      "ms245" },
+       { 50,   5,      "ms250" },
+       { 51,   5,      "ms300" },
+       { 52,   5,      "ms350" },
+       { 53,   5,      "ms400" },
+       { 54,   5,      "ms450" },
+       { 55,   5,      "ms500" },
+       { 56,   5,      "ms800" },
+       { 57,   6,      "ms1000" },
+       { 58,   6,      "ms1200" },
+       { 59,   6,      "ms1600" },
+       { 60,   6,      "ms2000" },
+       { 61,   6,      "ms2400" },
+       { 62,   6,      "spare2" },
+       { 63,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_T_StatusProhibit_enum2value_1[] = {
+       0,      /* ms0(0) */
+       2,      /* ms10(2) */
+       20,     /* ms100(20) */
+       57,     /* ms1000(57) */
+       21,     /* ms105(21) */
+       22,     /* ms110(22) */
+       23,     /* ms115(23) */
+       24,     /* ms120(24) */
+       58,     /* ms1200(58) */
+       25,     /* ms125(25) */
+       26,     /* ms130(26) */
+       27,     /* ms135(27) */
+       28,     /* ms140(28) */
+       29,     /* ms145(29) */
+       3,      /* ms15(3) */
+       30,     /* ms150(30) */
+       31,     /* ms155(31) */
+       32,     /* ms160(32) */
+       59,     /* ms1600(59) */
+       33,     /* ms165(33) */
+       34,     /* ms170(34) */
+       35,     /* ms175(35) */
+       36,     /* ms180(36) */
+       37,     /* ms185(37) */
+       38,     /* ms190(38) */
+       39,     /* ms195(39) */
+       4,      /* ms20(4) */
+       40,     /* ms200(40) */
+       60,     /* ms2000(60) */
+       41,     /* ms205(41) */
+       42,     /* ms210(42) */
+       43,     /* ms215(43) */
+       44,     /* ms220(44) */
+       45,     /* ms225(45) */
+       46,     /* ms230(46) */
+       47,     /* ms235(47) */
+       48,     /* ms240(48) */
+       61,     /* ms2400(61) */
+       49,     /* ms245(49) */
+       5,      /* ms25(5) */
+       50,     /* ms250(50) */
+       6,      /* ms30(6) */
+       51,     /* ms300(51) */
+       7,      /* ms35(7) */
+       52,     /* ms350(52) */
+       8,      /* ms40(8) */
+       53,     /* ms400(53) */
+       9,      /* ms45(9) */
+       54,     /* ms450(54) */
+       1,      /* ms5(1) */
+       10,     /* ms50(10) */
+       55,     /* ms500(55) */
+       11,     /* ms55(11) */
+       12,     /* ms60(12) */
+       13,     /* ms65(13) */
+       14,     /* ms70(14) */
+       15,     /* ms75(15) */
+       16,     /* ms80(16) */
+       56,     /* ms800(56) */
+       17,     /* ms85(17) */
+       18,     /* ms90(18) */
+       19,     /* ms95(19) */
+       63,     /* spare1(63) */
+       62      /* spare2(62) */
+};
+const asn_INTEGER_specifics_t asn_SPC_T_StatusProhibit_specs_1 = {
+       asn_MAP_T_StatusProhibit_value2enum_1,  /* "tag" => N; sorted by tag */
+       asn_MAP_T_StatusProhibit_enum2value_1,  /* N => "tag"; sorted by N */
+       64,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_T_StatusProhibit_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_T_StatusProhibit = {
+       "T-StatusProhibit",
+       "T-StatusProhibit",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_T_StatusProhibit_tags_1,
+       sizeof(asn_DEF_T_StatusProhibit_tags_1)
+               /sizeof(asn_DEF_T_StatusProhibit_tags_1[0]), /* 1 */
+       asn_DEF_T_StatusProhibit_tags_1,        /* Same as above */
+       sizeof(asn_DEF_T_StatusProhibit_tags_1)
+               /sizeof(asn_DEF_T_StatusProhibit_tags_1[0]), /* 1 */
+       { &asn_OER_type_T_StatusProhibit_constr_1, &asn_PER_type_T_StatusProhibit_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_T_StatusProhibit_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/T-StatusProhibit.h b/src/codec_utils/RRC/T-StatusProhibit.h
new file mode 100644 (file)
index 0000000..528dac0
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _T_StatusProhibit_H_
+#define        _T_StatusProhibit_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum T_StatusProhibit {
+       T_StatusProhibit_ms0    = 0,
+       T_StatusProhibit_ms5    = 1,
+       T_StatusProhibit_ms10   = 2,
+       T_StatusProhibit_ms15   = 3,
+       T_StatusProhibit_ms20   = 4,
+       T_StatusProhibit_ms25   = 5,
+       T_StatusProhibit_ms30   = 6,
+       T_StatusProhibit_ms35   = 7,
+       T_StatusProhibit_ms40   = 8,
+       T_StatusProhibit_ms45   = 9,
+       T_StatusProhibit_ms50   = 10,
+       T_StatusProhibit_ms55   = 11,
+       T_StatusProhibit_ms60   = 12,
+       T_StatusProhibit_ms65   = 13,
+       T_StatusProhibit_ms70   = 14,
+       T_StatusProhibit_ms75   = 15,
+       T_StatusProhibit_ms80   = 16,
+       T_StatusProhibit_ms85   = 17,
+       T_StatusProhibit_ms90   = 18,
+       T_StatusProhibit_ms95   = 19,
+       T_StatusProhibit_ms100  = 20,
+       T_StatusProhibit_ms105  = 21,
+       T_StatusProhibit_ms110  = 22,
+       T_StatusProhibit_ms115  = 23,
+       T_StatusProhibit_ms120  = 24,
+       T_StatusProhibit_ms125  = 25,
+       T_StatusProhibit_ms130  = 26,
+       T_StatusProhibit_ms135  = 27,
+       T_StatusProhibit_ms140  = 28,
+       T_StatusProhibit_ms145  = 29,
+       T_StatusProhibit_ms150  = 30,
+       T_StatusProhibit_ms155  = 31,
+       T_StatusProhibit_ms160  = 32,
+       T_StatusProhibit_ms165  = 33,
+       T_StatusProhibit_ms170  = 34,
+       T_StatusProhibit_ms175  = 35,
+       T_StatusProhibit_ms180  = 36,
+       T_StatusProhibit_ms185  = 37,
+       T_StatusProhibit_ms190  = 38,
+       T_StatusProhibit_ms195  = 39,
+       T_StatusProhibit_ms200  = 40,
+       T_StatusProhibit_ms205  = 41,
+       T_StatusProhibit_ms210  = 42,
+       T_StatusProhibit_ms215  = 43,
+       T_StatusProhibit_ms220  = 44,
+       T_StatusProhibit_ms225  = 45,
+       T_StatusProhibit_ms230  = 46,
+       T_StatusProhibit_ms235  = 47,
+       T_StatusProhibit_ms240  = 48,
+       T_StatusProhibit_ms245  = 49,
+       T_StatusProhibit_ms250  = 50,
+       T_StatusProhibit_ms300  = 51,
+       T_StatusProhibit_ms350  = 52,
+       T_StatusProhibit_ms400  = 53,
+       T_StatusProhibit_ms450  = 54,
+       T_StatusProhibit_ms500  = 55,
+       T_StatusProhibit_ms800  = 56,
+       T_StatusProhibit_ms1000 = 57,
+       T_StatusProhibit_ms1200 = 58,
+       T_StatusProhibit_ms1600 = 59,
+       T_StatusProhibit_ms2000 = 60,
+       T_StatusProhibit_ms2400 = 61,
+       T_StatusProhibit_spare2 = 62,
+       T_StatusProhibit_spare1 = 63
+} e_T_StatusProhibit;
+
+/* T-StatusProhibit */
+typedef long    T_StatusProhibit_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_T_StatusProhibit_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_T_StatusProhibit;
+extern const asn_INTEGER_specifics_t asn_SPC_T_StatusProhibit_specs_1;
+asn_struct_free_f T_StatusProhibit_free;
+asn_struct_print_f T_StatusProhibit_print;
+asn_constr_check_f T_StatusProhibit_constraint;
+ber_type_decoder_f T_StatusProhibit_decode_ber;
+der_type_encoder_f T_StatusProhibit_encode_der;
+xer_type_decoder_f T_StatusProhibit_decode_xer;
+xer_type_encoder_f T_StatusProhibit_encode_xer;
+oer_type_decoder_f T_StatusProhibit_decode_oer;
+oer_type_encoder_f T_StatusProhibit_encode_oer;
+per_type_decoder_f T_StatusProhibit_decode_uper;
+per_type_encoder_f T_StatusProhibit_encode_uper;
+per_type_decoder_f T_StatusProhibit_decode_aper;
+per_type_encoder_f T_StatusProhibit_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _T_StatusProhibit_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TAG-Config.c b/src/codec_utils/RRC/TAG-Config.c
new file mode 100644 (file)
index 0000000..906f5f8
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TAG-Config.h"
+
+#include "TAG.h"
+static int
+memb_tag_ToReleaseList_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 <= 4)) {
+               /* 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_tag_ToAddModList_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 <= 4)) {
+               /* 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_tag_ToReleaseList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_tag_ToReleaseList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_tag_ToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_tag_ToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tag_ToReleaseList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_tag_ToReleaseList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_tag_ToAddModList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_tag_ToAddModList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_tag_ToReleaseList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TAG_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tag_ToReleaseList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tag_ToReleaseList_specs_2 = {
+       sizeof(struct TAG_Config__tag_ToReleaseList),
+       offsetof(struct TAG_Config__tag_ToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tag_ToReleaseList_2 = {
+       "tag-ToReleaseList",
+       "tag-ToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tag_ToReleaseList_tags_2,
+       sizeof(asn_DEF_tag_ToReleaseList_tags_2)
+               /sizeof(asn_DEF_tag_ToReleaseList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_tag_ToReleaseList_tags_2,       /* Same as above */
+       sizeof(asn_DEF_tag_ToReleaseList_tags_2)
+               /sizeof(asn_DEF_tag_ToReleaseList_tags_2[0]), /* 2 */
+       { &asn_OER_type_tag_ToReleaseList_constr_2, &asn_PER_type_tag_ToReleaseList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_tag_ToReleaseList_2,
+       1,      /* Single element */
+       &asn_SPC_tag_ToReleaseList_specs_2      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_tag_ToAddModList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TAG,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_tag_ToAddModList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_tag_ToAddModList_specs_4 = {
+       sizeof(struct TAG_Config__tag_ToAddModList),
+       offsetof(struct TAG_Config__tag_ToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_tag_ToAddModList_4 = {
+       "tag-ToAddModList",
+       "tag-ToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_tag_ToAddModList_tags_4,
+       sizeof(asn_DEF_tag_ToAddModList_tags_4)
+               /sizeof(asn_DEF_tag_ToAddModList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_tag_ToAddModList_tags_4,        /* Same as above */
+       sizeof(asn_DEF_tag_ToAddModList_tags_4)
+               /sizeof(asn_DEF_tag_ToAddModList_tags_4[0]), /* 2 */
+       { &asn_OER_type_tag_ToAddModList_constr_4, &asn_PER_type_tag_ToAddModList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_tag_ToAddModList_4,
+       1,      /* Single element */
+       &asn_SPC_tag_ToAddModList_specs_4       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TAG_Config_1[] = {
+       { ATF_POINTER, 2, offsetof(struct TAG_Config, tag_ToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_tag_ToReleaseList_2,
+               0,
+               { &asn_OER_memb_tag_ToReleaseList_constr_2, &asn_PER_memb_tag_ToReleaseList_constr_2,  memb_tag_ToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "tag-ToReleaseList"
+               },
+       { ATF_POINTER, 1, offsetof(struct TAG_Config, tag_ToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_tag_ToAddModList_4,
+               0,
+               { &asn_OER_memb_tag_ToAddModList_constr_4, &asn_PER_memb_tag_ToAddModList_constr_4,  memb_tag_ToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "tag-ToAddModList"
+               },
+};
+static const int asn_MAP_TAG_Config_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_TAG_Config_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TAG_Config_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tag-ToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* tag-ToAddModList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TAG_Config_specs_1 = {
+       sizeof(struct TAG_Config),
+       offsetof(struct TAG_Config, _asn_ctx),
+       asn_MAP_TAG_Config_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_TAG_Config_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TAG_Config = {
+       "TAG-Config",
+       "TAG-Config",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TAG_Config_tags_1,
+       sizeof(asn_DEF_TAG_Config_tags_1)
+               /sizeof(asn_DEF_TAG_Config_tags_1[0]), /* 1 */
+       asn_DEF_TAG_Config_tags_1,      /* Same as above */
+       sizeof(asn_DEF_TAG_Config_tags_1)
+               /sizeof(asn_DEF_TAG_Config_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TAG_Config_1,
+       2,      /* Elements count */
+       &asn_SPC_TAG_Config_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TAG-Config.h b/src/codec_utils/RRC/TAG-Config.h
new file mode 100644 (file)
index 0000000..6c126ef
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TAG_Config_H_
+#define        _TAG_Config_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TAG-Id.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct TAG;
+
+/* TAG-Config */
+typedef struct TAG_Config {
+       struct TAG_Config__tag_ToReleaseList {
+               A_SEQUENCE_OF(TAG_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tag_ToReleaseList;
+       struct TAG_Config__tag_ToAddModList {
+               A_SEQUENCE_OF(struct TAG) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *tag_ToAddModList;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TAG_Config_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TAG_Config;
+extern asn_SEQUENCE_specifics_t asn_SPC_TAG_Config_specs_1;
+extern asn_TYPE_member_t asn_MBR_TAG_Config_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TAG_Config_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TAG-Id.c b/src/codec_utils/RRC/TAG-Id.c
new file mode 100644 (file)
index 0000000..e31980a
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TAG-Id.h"
+
+int
+TAG_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TAG_Id_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..3) */,
+       -1};
+asn_per_constraints_t asn_PER_type_TAG_Id_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TAG_Id_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TAG_Id = {
+       "TAG-Id",
+       "TAG-Id",
+       &asn_OP_NativeInteger,
+       asn_DEF_TAG_Id_tags_1,
+       sizeof(asn_DEF_TAG_Id_tags_1)
+               /sizeof(asn_DEF_TAG_Id_tags_1[0]), /* 1 */
+       asn_DEF_TAG_Id_tags_1,  /* Same as above */
+       sizeof(asn_DEF_TAG_Id_tags_1)
+               /sizeof(asn_DEF_TAG_Id_tags_1[0]), /* 1 */
+       { &asn_OER_type_TAG_Id_constr_1, &asn_PER_type_TAG_Id_constr_1, TAG_Id_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/TAG-Id.h b/src/codec_utils/RRC/TAG-Id.h
new file mode 100644 (file)
index 0000000..8a4aced
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TAG_Id_H_
+#define        _TAG_Id_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TAG-Id */
+typedef long    TAG_Id_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TAG_Id_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TAG_Id;
+asn_struct_free_f TAG_Id_free;
+asn_struct_print_f TAG_Id_print;
+asn_constr_check_f TAG_Id_constraint;
+ber_type_decoder_f TAG_Id_decode_ber;
+der_type_encoder_f TAG_Id_encode_der;
+xer_type_decoder_f TAG_Id_decode_xer;
+xer_type_encoder_f TAG_Id_encode_xer;
+oer_type_decoder_f TAG_Id_decode_oer;
+oer_type_encoder_f TAG_Id_encode_oer;
+per_type_decoder_f TAG_Id_decode_uper;
+per_type_encoder_f TAG_Id_encode_uper;
+per_type_decoder_f TAG_Id_decode_aper;
+per_type_encoder_f TAG_Id_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TAG_Id_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TAG.c b/src/codec_utils/RRC/TAG.c
new file mode 100644 (file)
index 0000000..16ee8c5
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TAG.h"
+
+asn_TYPE_member_t asn_MBR_TAG_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TAG, tag_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TAG_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tag-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TAG, timeAlignmentTimer),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeAlignmentTimer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeAlignmentTimer"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_TAG_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TAG_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tag-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* timeAlignmentTimer */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TAG_specs_1 = {
+       sizeof(struct TAG),
+       offsetof(struct TAG, _asn_ctx),
+       asn_MAP_TAG_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_TAG = {
+       "TAG",
+       "TAG",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TAG_tags_1,
+       sizeof(asn_DEF_TAG_tags_1)
+               /sizeof(asn_DEF_TAG_tags_1[0]), /* 1 */
+       asn_DEF_TAG_tags_1,     /* Same as above */
+       sizeof(asn_DEF_TAG_tags_1)
+               /sizeof(asn_DEF_TAG_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TAG_1,
+       2,      /* Elements count */
+       &asn_SPC_TAG_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TAG.h b/src/codec_utils/RRC/TAG.h
new file mode 100644 (file)
index 0000000..f522ffe
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TAG_H_
+#define        _TAG_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TAG-Id.h"
+#include "TimeAlignmentTimer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TAG */
+typedef struct TAG {
+       TAG_Id_t         tag_Id;
+       TimeAlignmentTimer_t     timeAlignmentTimer;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TAG_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TAG;
+extern asn_SEQUENCE_specifics_t asn_SPC_TAG_specs_1;
+extern asn_TYPE_member_t asn_MBR_TAG_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TAG_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TCI-State.c b/src/codec_utils/RRC/TCI-State.c
new file mode 100644 (file)
index 0000000..623231a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TCI-State.h"
+
+#include "QCL-Info.h"
+asn_TYPE_member_t asn_MBR_TCI_State_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TCI_State, tci_StateId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TCI_StateId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tci-StateId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TCI_State, qcl_Type1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QCL_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qcl-Type1"
+               },
+       { ATF_POINTER, 1, offsetof(struct TCI_State, qcl_Type2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QCL_Info,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "qcl-Type2"
+               },
+};
+static const int asn_MAP_TCI_State_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_TCI_State_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TCI_State_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* tci-StateId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* qcl-Type1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* qcl-Type2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TCI_State_specs_1 = {
+       sizeof(struct TCI_State),
+       offsetof(struct TCI_State, _asn_ctx),
+       asn_MAP_TCI_State_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_TCI_State_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TCI_State = {
+       "TCI-State",
+       "TCI-State",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TCI_State_tags_1,
+       sizeof(asn_DEF_TCI_State_tags_1)
+               /sizeof(asn_DEF_TCI_State_tags_1[0]), /* 1 */
+       asn_DEF_TCI_State_tags_1,       /* Same as above */
+       sizeof(asn_DEF_TCI_State_tags_1)
+               /sizeof(asn_DEF_TCI_State_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TCI_State_1,
+       3,      /* Elements count */
+       &asn_SPC_TCI_State_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TCI-State.h b/src/codec_utils/RRC/TCI-State.h
new file mode 100644 (file)
index 0000000..1b60261
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TCI_State_H_
+#define        _TCI_State_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TCI-StateId.h"
+#include "QCL-Info.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct QCL_Info;
+
+/* TCI-State */
+typedef struct TCI_State {
+       TCI_StateId_t    tci_StateId;
+       QCL_Info_t       qcl_Type1;
+       struct QCL_Info *qcl_Type2;     /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TCI_State_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TCI_State;
+extern asn_SEQUENCE_specifics_t asn_SPC_TCI_State_specs_1;
+extern asn_TYPE_member_t asn_MBR_TCI_State_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TCI_State_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TCI-StateId.c b/src/codec_utils/RRC/TCI-StateId.c
new file mode 100644 (file)
index 0000000..25cc0f1
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TCI-StateId.h"
+
+int
+TCI_StateId_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 <= 127)) {
+               /* 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_TCI_StateId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..127) */,
+       -1};
+asn_per_constraints_t asn_PER_type_TCI_StateId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TCI_StateId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TCI_StateId = {
+       "TCI-StateId",
+       "TCI-StateId",
+       &asn_OP_NativeInteger,
+       asn_DEF_TCI_StateId_tags_1,
+       sizeof(asn_DEF_TCI_StateId_tags_1)
+               /sizeof(asn_DEF_TCI_StateId_tags_1[0]), /* 1 */
+       asn_DEF_TCI_StateId_tags_1,     /* Same as above */
+       sizeof(asn_DEF_TCI_StateId_tags_1)
+               /sizeof(asn_DEF_TCI_StateId_tags_1[0]), /* 1 */
+       { &asn_OER_type_TCI_StateId_constr_1, &asn_PER_type_TCI_StateId_constr_1, TCI_StateId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/TCI-StateId.h b/src/codec_utils/RRC/TCI-StateId.h
new file mode 100644 (file)
index 0000000..9bd7c33
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TCI_StateId_H_
+#define        _TCI_StateId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TCI-StateId */
+typedef long    TCI_StateId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TCI_StateId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TCI_StateId;
+asn_struct_free_f TCI_StateId_free;
+asn_struct_print_f TCI_StateId_print;
+asn_constr_check_f TCI_StateId_constraint;
+ber_type_decoder_f TCI_StateId_decode_ber;
+der_type_encoder_f TCI_StateId_encode_der;
+xer_type_decoder_f TCI_StateId_decode_xer;
+xer_type_encoder_f TCI_StateId_encode_xer;
+oer_type_decoder_f TCI_StateId_decode_oer;
+oer_type_encoder_f TCI_StateId_encode_oer;
+per_type_decoder_f TCI_StateId_decode_uper;
+per_type_encoder_f TCI_StateId_encode_uper;
+per_type_decoder_f TCI_StateId_decode_aper;
+per_type_encoder_f TCI_StateId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TCI_StateId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.c b/src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.c
new file mode 100644 (file)
index 0000000..2d2d32a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TDD-UL-DL-ConfigCommon.h"
+
+#include "TDD-UL-DL-Pattern.h"
+asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigCommon_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_ConfigCommon, referenceSubcarrierSpacing),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SubcarrierSpacing,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "referenceSubcarrierSpacing"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_ConfigCommon, pattern1),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_Pattern,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pattern1"
+               },
+       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_ConfigCommon, pattern2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_Pattern,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pattern2"
+               },
+};
+static const int asn_MAP_TDD_UL_DL_ConfigCommon_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_ConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* referenceSubcarrierSpacing */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pattern1 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pattern2 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigCommon_specs_1 = {
+       sizeof(struct TDD_UL_DL_ConfigCommon),
+       offsetof(struct TDD_UL_DL_ConfigCommon, _asn_ctx),
+       asn_MAP_TDD_UL_DL_ConfigCommon_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_TDD_UL_DL_ConfigCommon_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigCommon = {
+       "TDD-UL-DL-ConfigCommon",
+       "TDD-UL-DL-ConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TDD_UL_DL_ConfigCommon_tags_1,
+       sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_TDD_UL_DL_ConfigCommon_tags_1,  /* Same as above */
+       sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TDD_UL_DL_ConfigCommon_1,
+       3,      /* Elements count */
+       &asn_SPC_TDD_UL_DL_ConfigCommon_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.h b/src/codec_utils/RRC/TDD-UL-DL-ConfigCommon.h
new file mode 100644 (file)
index 0000000..92b7410
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TDD_UL_DL_ConfigCommon_H_
+#define        _TDD_UL_DL_ConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SubcarrierSpacing.h"
+#include "TDD-UL-DL-Pattern.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct TDD_UL_DL_Pattern;
+
+/* TDD-UL-DL-ConfigCommon */
+typedef struct TDD_UL_DL_ConfigCommon {
+       SubcarrierSpacing_t      referenceSubcarrierSpacing;
+       TDD_UL_DL_Pattern_t      pattern1;
+       struct TDD_UL_DL_Pattern        *pattern2;      /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TDD_UL_DL_ConfigCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigCommon_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TDD_UL_DL_ConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.c b/src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.c
new file mode 100644 (file)
index 0000000..fda5068
--- /dev/null
@@ -0,0 +1,221 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TDD-UL-DL-ConfigDedicated.h"
+
+#include "TDD-UL-DL-SlotConfig.h"
+static int
+memb_slotSpecificConfigurationsToAddModList_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 <= 320)) {
+               /* 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_slotSpecificConfigurationsToreleaseList_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 <= 320)) {
+               /* 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_slotSpecificConfigurationsToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..320)) */};
+static asn_per_constraints_t asn_PER_type_slotSpecificConfigurationsToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  320 }      /* (SIZE(1..320)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_slotSpecificConfigurationsToreleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..320)) */};
+static asn_per_constraints_t asn_PER_type_slotSpecificConfigurationsToreleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  320 }      /* (SIZE(1..320)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotSpecificConfigurationsToAddModList_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..320)) */};
+static asn_per_constraints_t asn_PER_memb_slotSpecificConfigurationsToAddModList_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  320 }      /* (SIZE(1..320)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_slotSpecificConfigurationsToreleaseList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..320)) */};
+static asn_per_constraints_t asn_PER_memb_slotSpecificConfigurationsToreleaseList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       9,  9,  1,  320 }      /* (SIZE(1..320)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_slotSpecificConfigurationsToAddModList_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_TDD_UL_DL_SlotConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotSpecificConfigurationsToAddModList_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotSpecificConfigurationsToAddModList_specs_2 = {
+       sizeof(struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToAddModList),
+       offsetof(struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotSpecificConfigurationsToAddModList_2 = {
+       "slotSpecificConfigurationsToAddModList",
+       "slotSpecificConfigurationsToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotSpecificConfigurationsToAddModList_tags_2,
+       sizeof(asn_DEF_slotSpecificConfigurationsToAddModList_tags_2)
+               /sizeof(asn_DEF_slotSpecificConfigurationsToAddModList_tags_2[0]) - 1, /* 1 */
+       asn_DEF_slotSpecificConfigurationsToAddModList_tags_2,  /* Same as above */
+       sizeof(asn_DEF_slotSpecificConfigurationsToAddModList_tags_2)
+               /sizeof(asn_DEF_slotSpecificConfigurationsToAddModList_tags_2[0]), /* 2 */
+       { &asn_OER_type_slotSpecificConfigurationsToAddModList_constr_2, &asn_PER_type_slotSpecificConfigurationsToAddModList_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_slotSpecificConfigurationsToAddModList_2,
+       1,      /* Single element */
+       &asn_SPC_slotSpecificConfigurationsToAddModList_specs_2 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_slotSpecificConfigurationsToreleaseList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_TDD_UL_DL_SlotIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_slotSpecificConfigurationsToreleaseList_specs_4 = {
+       sizeof(struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToreleaseList),
+       offsetof(struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToreleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_slotSpecificConfigurationsToreleaseList_4 = {
+       "slotSpecificConfigurationsToreleaseList",
+       "slotSpecificConfigurationsToreleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4,
+       sizeof(asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4)
+               /sizeof(asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4, /* Same as above */
+       sizeof(asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4)
+               /sizeof(asn_DEF_slotSpecificConfigurationsToreleaseList_tags_4[0]), /* 2 */
+       { &asn_OER_type_slotSpecificConfigurationsToreleaseList_constr_4, &asn_PER_type_slotSpecificConfigurationsToreleaseList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_slotSpecificConfigurationsToreleaseList_4,
+       1,      /* Single element */
+       &asn_SPC_slotSpecificConfigurationsToreleaseList_specs_4        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigDedicated_1[] = {
+       { ATF_POINTER, 2, offsetof(struct TDD_UL_DL_ConfigDedicated, slotSpecificConfigurationsToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_slotSpecificConfigurationsToAddModList_2,
+               0,
+               { &asn_OER_memb_slotSpecificConfigurationsToAddModList_constr_2, &asn_PER_memb_slotSpecificConfigurationsToAddModList_constr_2,  memb_slotSpecificConfigurationsToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "slotSpecificConfigurationsToAddModList"
+               },
+       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_ConfigDedicated, slotSpecificConfigurationsToreleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_slotSpecificConfigurationsToreleaseList_4,
+               0,
+               { &asn_OER_memb_slotSpecificConfigurationsToreleaseList_constr_4, &asn_PER_memb_slotSpecificConfigurationsToreleaseList_constr_4,  memb_slotSpecificConfigurationsToreleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "slotSpecificConfigurationsToreleaseList"
+               },
+};
+static const int asn_MAP_TDD_UL_DL_ConfigDedicated_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_ConfigDedicated_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* slotSpecificConfigurationsToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* slotSpecificConfigurationsToreleaseList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigDedicated_specs_1 = {
+       sizeof(struct TDD_UL_DL_ConfigDedicated),
+       offsetof(struct TDD_UL_DL_ConfigDedicated, _asn_ctx),
+       asn_MAP_TDD_UL_DL_ConfigDedicated_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_TDD_UL_DL_ConfigDedicated_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigDedicated = {
+       "TDD-UL-DL-ConfigDedicated",
+       "TDD-UL-DL-ConfigDedicated",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1,
+       sizeof(asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1[0]), /* 1 */
+       asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1,       /* Same as above */
+       sizeof(asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_ConfigDedicated_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TDD_UL_DL_ConfigDedicated_1,
+       2,      /* Elements count */
+       &asn_SPC_TDD_UL_DL_ConfigDedicated_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.h b/src/codec_utils/RRC/TDD-UL-DL-ConfigDedicated.h
new file mode 100644 (file)
index 0000000..6f9291b
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TDD_UL_DL_ConfigDedicated_H_
+#define        _TDD_UL_DL_ConfigDedicated_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include "TDD-UL-DL-SlotIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct TDD_UL_DL_SlotConfig;
+
+/* TDD-UL-DL-ConfigDedicated */
+typedef struct TDD_UL_DL_ConfigDedicated {
+       struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToAddModList {
+               A_SEQUENCE_OF(struct TDD_UL_DL_SlotConfig) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotSpecificConfigurationsToAddModList;
+       struct TDD_UL_DL_ConfigDedicated__slotSpecificConfigurationsToreleaseList {
+               A_SEQUENCE_OF(TDD_UL_DL_SlotIndex_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *slotSpecificConfigurationsToreleaseList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TDD_UL_DL_ConfigDedicated_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigDedicated;
+extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigDedicated_specs_1;
+extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigDedicated_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TDD_UL_DL_ConfigDedicated_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TDD-UL-DL-Pattern.c b/src/codec_utils/RRC/TDD-UL-DL-Pattern.c
new file mode 100644 (file)
index 0000000..7fb3bc5
--- /dev/null
@@ -0,0 +1,389 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TDD-UL-DL-Pattern.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.
+ */
+static int
+memb_nrofDownlinkSlots_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 >= 0 && value <= 320)) {
+               /* 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_nrofDownlinkSymbols_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 >= 0 && value <= 13)) {
+               /* 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_nrofUplinkSlots_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 >= 0 && value <= 320)) {
+               /* 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_nrofUplinkSymbols_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 >= 0 && value <= 13)) {
+               /* 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_dl_UL_TransmissionPeriodicity_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dl_UL_TransmissionPeriodicity_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_nrofDownlinkSlots_constr_11 CC_NOTUSED = {
+       { 2, 1 }        /* (0..320) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofDownlinkSlots_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  320 }      /* (0..320) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofDownlinkSymbols_constr_12 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofDownlinkSymbols_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofUplinkSlots_constr_13 CC_NOTUSED = {
+       { 2, 1 }        /* (0..320) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofUplinkSlots_constr_13 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  320 }      /* (0..320) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofUplinkSymbols_constr_14 CC_NOTUSED = {
+       { 1, 1 }        /* (0..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofUplinkSymbols_constr_14 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_dl_UL_TransmissionPeriodicity_value2enum_2[] = {
+       { 0,    5,      "ms0p5" },
+       { 1,    7,      "ms0p625" },
+       { 2,    3,      "ms1" },
+       { 3,    6,      "ms1p25" },
+       { 4,    3,      "ms2" },
+       { 5,    5,      "ms2p5" },
+       { 6,    3,      "ms5" },
+       { 7,    4,      "ms10" }
+};
+static const unsigned int asn_MAP_dl_UL_TransmissionPeriodicity_enum2value_2[] = {
+       0,      /* ms0p5(0) */
+       1,      /* ms0p625(1) */
+       2,      /* ms1(2) */
+       7,      /* ms10(7) */
+       3,      /* ms1p25(3) */
+       4,      /* ms2(4) */
+       5,      /* ms2p5(5) */
+       6       /* ms5(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dl_UL_TransmissionPeriodicity_specs_2 = {
+       asn_MAP_dl_UL_TransmissionPeriodicity_value2enum_2,     /* "tag" => N; sorted by tag */
+       asn_MAP_dl_UL_TransmissionPeriodicity_enum2value_2,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dl_UL_TransmissionPeriodicity_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_dl_UL_TransmissionPeriodicity_2 = {
+       "dl-UL-TransmissionPeriodicity",
+       "dl-UL-TransmissionPeriodicity",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dl_UL_TransmissionPeriodicity_tags_2,
+       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2)
+               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2[0]) - 1, /* 1 */
+       asn_DEF_dl_UL_TransmissionPeriodicity_tags_2,   /* Same as above */
+       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2)
+               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2[0]), /* 2 */
+       { &asn_OER_type_dl_UL_TransmissionPeriodicity_constr_2, &asn_PER_type_dl_UL_TransmissionPeriodicity_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dl_UL_TransmissionPeriodicity_specs_2  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_dl_UL_TransmissionPeriodicity_v1530_value2enum_17[] = {
+       { 0,    3,      "ms3" },
+       { 1,    3,      "ms4" }
+};
+static const unsigned int asn_MAP_dl_UL_TransmissionPeriodicity_v1530_enum2value_17[] = {
+       0,      /* ms3(0) */
+       1       /* ms4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_dl_UL_TransmissionPeriodicity_v1530_specs_17 = {
+       asn_MAP_dl_UL_TransmissionPeriodicity_v1530_value2enum_17,      /* "tag" => N; sorted by tag */
+       asn_MAP_dl_UL_TransmissionPeriodicity_v1530_enum2value_17,      /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[] = {
+       (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_dl_UL_TransmissionPeriodicity_v1530_17 = {
+       "dl-UL-TransmissionPeriodicity-v1530",
+       "dl-UL-TransmissionPeriodicity-v1530",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17,
+       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17)
+               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[0]) - 1, /* 1 */
+       asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17,    /* Same as above */
+       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17)
+               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[0]), /* 2 */
+       { &asn_OER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17, &asn_PER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_dl_UL_TransmissionPeriodicity_v1530_specs_17   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_16[] = {
+       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_Pattern__ext1, dl_UL_TransmissionPeriodicity_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dl_UL_TransmissionPeriodicity_v1530_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-UL-TransmissionPeriodicity-v1530"
+               },
+};
+static const int asn_MAP_ext1_oms_16[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_16[] = {
+       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_16[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dl-UL-TransmissionPeriodicity-v1530 */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_16 = {
+       sizeof(struct TDD_UL_DL_Pattern__ext1),
+       offsetof(struct TDD_UL_DL_Pattern__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_16,
+       1,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_16,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_16 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_16,
+       sizeof(asn_DEF_ext1_tags_16)
+               /sizeof(asn_DEF_ext1_tags_16[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_16,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_16)
+               /sizeof(asn_DEF_ext1_tags_16[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_16,
+       1,      /* Elements count */
+       &asn_SPC_ext1_specs_16  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TDD_UL_DL_Pattern_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, dl_UL_TransmissionPeriodicity),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_dl_UL_TransmissionPeriodicity_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dl-UL-TransmissionPeriodicity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofDownlinkSlots),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofDownlinkSlots_constr_11, &asn_PER_memb_nrofDownlinkSlots_constr_11,  memb_nrofDownlinkSlots_constraint_1 },
+               0, 0, /* No default value */
+               "nrofDownlinkSlots"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofDownlinkSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofDownlinkSymbols_constr_12, &asn_PER_memb_nrofDownlinkSymbols_constr_12,  memb_nrofDownlinkSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofDownlinkSymbols"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofUplinkSlots),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofUplinkSlots_constr_13, &asn_PER_memb_nrofUplinkSlots_constr_13,  memb_nrofUplinkSlots_constraint_1 },
+               0, 0, /* No default value */
+               "nrofUplinkSlots"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofUplinkSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofUplinkSymbols_constr_14, &asn_PER_memb_nrofUplinkSymbols_constr_14,  memb_nrofUplinkSymbols_constraint_1 },
+               0, 0, /* No default value */
+               "nrofUplinkSymbols"
+               },
+       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_Pattern, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               0,
+               &asn_DEF_ext1_16,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_TDD_UL_DL_Pattern_oms_1[] = { 5 };
+static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_Pattern_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_Pattern_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-UL-TransmissionPeriodicity */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofDownlinkSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrofDownlinkSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrofUplinkSlots */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nrofUplinkSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_Pattern_specs_1 = {
+       sizeof(struct TDD_UL_DL_Pattern),
+       offsetof(struct TDD_UL_DL_Pattern, _asn_ctx),
+       asn_MAP_TDD_UL_DL_Pattern_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_TDD_UL_DL_Pattern_oms_1,        /* Optional members */
+       0, 1,   /* Root/Additions */
+       5,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_Pattern = {
+       "TDD-UL-DL-Pattern",
+       "TDD-UL-DL-Pattern",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TDD_UL_DL_Pattern_tags_1,
+       sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1[0]), /* 1 */
+       asn_DEF_TDD_UL_DL_Pattern_tags_1,       /* Same as above */
+       sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TDD_UL_DL_Pattern_1,
+       6,      /* Elements count */
+       &asn_SPC_TDD_UL_DL_Pattern_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TDD-UL-DL-Pattern.h b/src/codec_utils/RRC/TDD-UL-DL-Pattern.h
new file mode 100644 (file)
index 0000000..7ada6b0
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TDD_UL_DL_Pattern_H_
+#define        _TDD_UL_DL_Pattern_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity {
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p5  = 0,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p625        = 1,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1    = 2,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1p25 = 3,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2    = 4,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2p5  = 5,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5    = 6,
+       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms10   = 7
+} e_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity;
+typedef enum TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530 {
+       TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530_ms3        = 0,
+       TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530_ms4        = 1
+} e_TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530;
+
+/* TDD-UL-DL-Pattern */
+typedef struct TDD_UL_DL_Pattern {
+       long     dl_UL_TransmissionPeriodicity;
+       long     nrofDownlinkSlots;
+       long     nrofDownlinkSymbols;
+       long     nrofUplinkSlots;
+       long     nrofUplinkSymbols;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct TDD_UL_DL_Pattern__ext1 {
+               long    *dl_UL_TransmissionPeriodicity_v1530;   /* OPTIONAL */
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TDD_UL_DL_Pattern_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_dl_UL_TransmissionPeriodicity_2;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_dl_UL_TransmissionPeriodicity_v1530_17;        // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_Pattern;
+extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_Pattern_specs_1;
+extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_Pattern_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TDD_UL_DL_Pattern_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TDD-UL-DL-SlotConfig.c b/src/codec_utils/RRC/TDD-UL-DL-SlotConfig.c
new file mode 100644 (file)
index 0000000..d905f56
--- /dev/null
@@ -0,0 +1,248 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TDD-UL-DL-SlotConfig.h"
+
+static int
+memb_nrofDownlinkSymbols_constraint_6(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 <= 13)) {
+               /* 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_nrofUplinkSymbols_constraint_6(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 <= 13)) {
+               /* 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_nrofDownlinkSymbols_constr_7 CC_NOTUSED = {
+       { 1, 1 }        /* (1..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofDownlinkSymbols_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  13 }       /* (1..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_nrofUplinkSymbols_constr_8 CC_NOTUSED = {
+       { 1, 1 }        /* (1..13) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_nrofUplinkSymbols_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  13 }       /* (1..13) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_symbols_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_symbols_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_explicit_6[] = {
+       { ATF_POINTER, 2, offsetof(struct TDD_UL_DL_SlotConfig__symbols__explicit, nrofDownlinkSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofDownlinkSymbols_constr_7, &asn_PER_memb_nrofDownlinkSymbols_constr_7,  memb_nrofDownlinkSymbols_constraint_6 },
+               0, 0, /* No default value */
+               "nrofDownlinkSymbols"
+               },
+       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_SlotConfig__symbols__explicit, nrofUplinkSymbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_nrofUplinkSymbols_constr_8, &asn_PER_memb_nrofUplinkSymbols_constr_8,  memb_nrofUplinkSymbols_constraint_6 },
+               0, 0, /* No default value */
+               "nrofUplinkSymbols"
+               },
+};
+static const int asn_MAP_explicit_oms_6[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_explicit_tags_6[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_explicit_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* nrofDownlinkSymbols */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nrofUplinkSymbols */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_explicit_specs_6 = {
+       sizeof(struct TDD_UL_DL_SlotConfig__symbols__explicit),
+       offsetof(struct TDD_UL_DL_SlotConfig__symbols__explicit, _asn_ctx),
+       asn_MAP_explicit_tag2el_6,
+       2,      /* Count of tags in the map */
+       asn_MAP_explicit_oms_6, /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_explicit_6 = {
+       "explicit",
+       "explicit",
+       &asn_OP_SEQUENCE,
+       asn_DEF_explicit_tags_6,
+       sizeof(asn_DEF_explicit_tags_6)
+               /sizeof(asn_DEF_explicit_tags_6[0]) - 1, /* 1 */
+       asn_DEF_explicit_tags_6,        /* Same as above */
+       sizeof(asn_DEF_explicit_tags_6)
+               /sizeof(asn_DEF_explicit_tags_6[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_explicit_6,
+       2,      /* Elements count */
+       &asn_SPC_explicit_specs_6       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_symbols_3[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_SlotConfig__symbols, choice.allDownlink),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "allDownlink"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_SlotConfig__symbols, choice.allUplink),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "allUplink"
+               },
+       { ATF_POINTER, 0, offsetof(struct TDD_UL_DL_SlotConfig__symbols, choice.Explicit),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_explicit_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "explicit"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_symbols_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* allDownlink */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* allUplink */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* explicit */
+};
+static asn_CHOICE_specifics_t asn_SPC_symbols_specs_3 = {
+       sizeof(struct TDD_UL_DL_SlotConfig__symbols),
+       offsetof(struct TDD_UL_DL_SlotConfig__symbols, _asn_ctx),
+       offsetof(struct TDD_UL_DL_SlotConfig__symbols, present),
+       sizeof(((struct TDD_UL_DL_SlotConfig__symbols *)0)->present),
+       asn_MAP_symbols_tag2el_3,
+       3,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_symbols_3 = {
+       "symbols",
+       "symbols",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_symbols_constr_3, &asn_PER_type_symbols_constr_3, CHOICE_constraint },
+       asn_MBR_symbols_3,
+       3,      /* Elements count */
+       &asn_SPC_symbols_specs_3        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TDD_UL_DL_SlotConfig_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_SlotConfig, slotIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TDD_UL_DL_SlotIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "slotIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_SlotConfig, symbols),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_symbols_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "symbols"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_SlotConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_SlotConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* slotIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* symbols */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_SlotConfig_specs_1 = {
+       sizeof(struct TDD_UL_DL_SlotConfig),
+       offsetof(struct TDD_UL_DL_SlotConfig, _asn_ctx),
+       asn_MAP_TDD_UL_DL_SlotConfig_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_SlotConfig = {
+       "TDD-UL-DL-SlotConfig",
+       "TDD-UL-DL-SlotConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TDD_UL_DL_SlotConfig_tags_1,
+       sizeof(asn_DEF_TDD_UL_DL_SlotConfig_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_SlotConfig_tags_1[0]), /* 1 */
+       asn_DEF_TDD_UL_DL_SlotConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_TDD_UL_DL_SlotConfig_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_SlotConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TDD_UL_DL_SlotConfig_1,
+       2,      /* Elements count */
+       &asn_SPC_TDD_UL_DL_SlotConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TDD-UL-DL-SlotConfig.h b/src/codec_utils/RRC/TDD-UL-DL-SlotConfig.h
new file mode 100644 (file)
index 0000000..7428183
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TDD_UL_DL_SlotConfig_H_
+#define        _TDD_UL_DL_SlotConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TDD-UL-DL-SlotIndex.h"
+#include <NULL.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TDD_UL_DL_SlotConfig__symbols_PR {
+       TDD_UL_DL_SlotConfig__symbols_PR_NOTHING,       /* No components present */
+       TDD_UL_DL_SlotConfig__symbols_PR_allDownlink,
+       TDD_UL_DL_SlotConfig__symbols_PR_allUplink,
+       TDD_UL_DL_SlotConfig__symbols_PR_explicit
+} TDD_UL_DL_SlotConfig__symbols_PR;
+
+/* TDD-UL-DL-SlotConfig */
+typedef struct TDD_UL_DL_SlotConfig {
+       TDD_UL_DL_SlotIndex_t    slotIndex;
+       struct TDD_UL_DL_SlotConfig__symbols {
+               TDD_UL_DL_SlotConfig__symbols_PR present;
+               union TDD_UL_DL_SlotConfig__symbols_u {
+                       NULL_t   allDownlink;
+                       NULL_t   allUplink;
+                       struct TDD_UL_DL_SlotConfig__symbols__explicit {
+                               long    *nrofDownlinkSymbols;   /* OPTIONAL */
+                               long    *nrofUplinkSymbols;     /* OPTIONAL */
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *Explicit;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } symbols;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TDD_UL_DL_SlotConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_SlotConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_SlotConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_SlotConfig_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TDD_UL_DL_SlotConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TDD-UL-DL-SlotIndex.c b/src/codec_utils/RRC/TDD-UL-DL-SlotIndex.c
new file mode 100644 (file)
index 0000000..ab0e877
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TDD-UL-DL-SlotIndex.h"
+
+int
+TDD_UL_DL_SlotIndex_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 <= 319)) {
+               /* 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_TDD_UL_DL_SlotIndex_constr_1 CC_NOTUSED = {
+       { 2, 1 }        /* (0..319) */,
+       -1};
+asn_per_constraints_t asn_PER_type_TDD_UL_DL_SlotIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_SlotIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_SlotIndex = {
+       "TDD-UL-DL-SlotIndex",
+       "TDD-UL-DL-SlotIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_TDD_UL_DL_SlotIndex_tags_1,
+       sizeof(asn_DEF_TDD_UL_DL_SlotIndex_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_SlotIndex_tags_1[0]), /* 1 */
+       asn_DEF_TDD_UL_DL_SlotIndex_tags_1,     /* Same as above */
+       sizeof(asn_DEF_TDD_UL_DL_SlotIndex_tags_1)
+               /sizeof(asn_DEF_TDD_UL_DL_SlotIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_TDD_UL_DL_SlotIndex_constr_1, &asn_PER_type_TDD_UL_DL_SlotIndex_constr_1, TDD_UL_DL_SlotIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/TDD-UL-DL-SlotIndex.h b/src/codec_utils/RRC/TDD-UL-DL-SlotIndex.h
new file mode 100644 (file)
index 0000000..92e29db
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TDD_UL_DL_SlotIndex_H_
+#define        _TDD_UL_DL_SlotIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TDD-UL-DL-SlotIndex */
+typedef long    TDD_UL_DL_SlotIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TDD_UL_DL_SlotIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_SlotIndex;
+asn_struct_free_f TDD_UL_DL_SlotIndex_free;
+asn_struct_print_f TDD_UL_DL_SlotIndex_print;
+asn_constr_check_f TDD_UL_DL_SlotIndex_constraint;
+ber_type_decoder_f TDD_UL_DL_SlotIndex_decode_ber;
+der_type_encoder_f TDD_UL_DL_SlotIndex_encode_der;
+xer_type_decoder_f TDD_UL_DL_SlotIndex_decode_xer;
+xer_type_encoder_f TDD_UL_DL_SlotIndex_encode_xer;
+oer_type_decoder_f TDD_UL_DL_SlotIndex_decode_oer;
+oer_type_encoder_f TDD_UL_DL_SlotIndex_encode_oer;
+per_type_decoder_f TDD_UL_DL_SlotIndex_decode_uper;
+per_type_encoder_f TDD_UL_DL_SlotIndex_encode_uper;
+per_type_decoder_f TDD_UL_DL_SlotIndex_decode_aper;
+per_type_encoder_f TDD_UL_DL_SlotIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TDD_UL_DL_SlotIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ThresholdNR.c b/src/codec_utils/RRC/ThresholdNR.c
new file mode 100644 (file)
index 0000000..cc0ad6f
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ThresholdNR.h"
+
+asn_TYPE_member_t asn_MBR_ThresholdNR_1[] = {
+       { ATF_POINTER, 3, offsetof(struct ThresholdNR, thresholdRSRP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "thresholdRSRP"
+               },
+       { ATF_POINTER, 2, offsetof(struct ThresholdNR, thresholdRSRQ),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRQ_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "thresholdRSRQ"
+               },
+       { ATF_POINTER, 1, offsetof(struct ThresholdNR, thresholdSINR),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SINR_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "thresholdSINR"
+               },
+};
+static const int asn_MAP_ThresholdNR_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_ThresholdNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ThresholdNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* thresholdRSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* thresholdRSRQ */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* thresholdSINR */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ThresholdNR_specs_1 = {
+       sizeof(struct ThresholdNR),
+       offsetof(struct ThresholdNR, _asn_ctx),
+       asn_MAP_ThresholdNR_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_ThresholdNR_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ThresholdNR = {
+       "ThresholdNR",
+       "ThresholdNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ThresholdNR_tags_1,
+       sizeof(asn_DEF_ThresholdNR_tags_1)
+               /sizeof(asn_DEF_ThresholdNR_tags_1[0]), /* 1 */
+       asn_DEF_ThresholdNR_tags_1,     /* Same as above */
+       sizeof(asn_DEF_ThresholdNR_tags_1)
+               /sizeof(asn_DEF_ThresholdNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ThresholdNR_1,
+       3,      /* Elements count */
+       &asn_SPC_ThresholdNR_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ThresholdNR.h b/src/codec_utils/RRC/ThresholdNR.h
new file mode 100644 (file)
index 0000000..d11177d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ThresholdNR_H_
+#define        _ThresholdNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include "RSRQ-Range.h"
+#include "SINR-Range.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ThresholdNR */
+typedef struct ThresholdNR {
+       RSRP_Range_t    *thresholdRSRP; /* OPTIONAL */
+       RSRQ_Range_t    *thresholdRSRQ; /* OPTIONAL */
+       SINR_Range_t    *thresholdSINR; /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ThresholdNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ThresholdNR;
+extern asn_SEQUENCE_specifics_t asn_SPC_ThresholdNR_specs_1;
+extern asn_TYPE_member_t asn_MBR_ThresholdNR_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ThresholdNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TimeAlignmentTimer.c b/src/codec_utils/RRC/TimeAlignmentTimer.c
new file mode 100644 (file)
index 0000000..fec69a4
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TimeAlignmentTimer.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TimeAlignmentTimer_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_TimeAlignmentTimer_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TimeAlignmentTimer_value2enum_1[] = {
+       { 0,    5,      "ms500" },
+       { 1,    5,      "ms750" },
+       { 2,    6,      "ms1280" },
+       { 3,    6,      "ms1920" },
+       { 4,    6,      "ms2560" },
+       { 5,    6,      "ms5120" },
+       { 6,    7,      "ms10240" },
+       { 7,    8,      "infinity" }
+};
+static const unsigned int asn_MAP_TimeAlignmentTimer_enum2value_1[] = {
+       7,      /* infinity(7) */
+       6,      /* ms10240(6) */
+       2,      /* ms1280(2) */
+       3,      /* ms1920(3) */
+       4,      /* ms2560(4) */
+       0,      /* ms500(0) */
+       5,      /* ms5120(5) */
+       1       /* ms750(1) */
+};
+const asn_INTEGER_specifics_t asn_SPC_TimeAlignmentTimer_specs_1 = {
+       asn_MAP_TimeAlignmentTimer_value2enum_1,        /* "tag" => N; sorted by tag */
+       asn_MAP_TimeAlignmentTimer_enum2value_1,        /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_TimeAlignmentTimer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TimeAlignmentTimer = {
+       "TimeAlignmentTimer",
+       "TimeAlignmentTimer",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_TimeAlignmentTimer_tags_1,
+       sizeof(asn_DEF_TimeAlignmentTimer_tags_1)
+               /sizeof(asn_DEF_TimeAlignmentTimer_tags_1[0]), /* 1 */
+       asn_DEF_TimeAlignmentTimer_tags_1,      /* Same as above */
+       sizeof(asn_DEF_TimeAlignmentTimer_tags_1)
+               /sizeof(asn_DEF_TimeAlignmentTimer_tags_1[0]), /* 1 */
+       { &asn_OER_type_TimeAlignmentTimer_constr_1, &asn_PER_type_TimeAlignmentTimer_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_TimeAlignmentTimer_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TimeAlignmentTimer.h b/src/codec_utils/RRC/TimeAlignmentTimer.h
new file mode 100644 (file)
index 0000000..fb14c20
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TimeAlignmentTimer_H_
+#define        _TimeAlignmentTimer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TimeAlignmentTimer {
+       TimeAlignmentTimer_ms500        = 0,
+       TimeAlignmentTimer_ms750        = 1,
+       TimeAlignmentTimer_ms1280       = 2,
+       TimeAlignmentTimer_ms1920       = 3,
+       TimeAlignmentTimer_ms2560       = 4,
+       TimeAlignmentTimer_ms5120       = 5,
+       TimeAlignmentTimer_ms10240      = 6,
+       TimeAlignmentTimer_infinity     = 7
+} e_TimeAlignmentTimer;
+
+/* TimeAlignmentTimer */
+typedef long    TimeAlignmentTimer_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TimeAlignmentTimer_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TimeAlignmentTimer;
+extern const asn_INTEGER_specifics_t asn_SPC_TimeAlignmentTimer_specs_1;
+asn_struct_free_f TimeAlignmentTimer_free;
+asn_struct_print_f TimeAlignmentTimer_print;
+asn_constr_check_f TimeAlignmentTimer_constraint;
+ber_type_decoder_f TimeAlignmentTimer_decode_ber;
+der_type_encoder_f TimeAlignmentTimer_encode_der;
+xer_type_decoder_f TimeAlignmentTimer_decode_xer;
+xer_type_encoder_f TimeAlignmentTimer_encode_xer;
+oer_type_decoder_f TimeAlignmentTimer_decode_oer;
+oer_type_encoder_f TimeAlignmentTimer_encode_oer;
+per_type_decoder_f TimeAlignmentTimer_decode_uper;
+per_type_encoder_f TimeAlignmentTimer_encode_uper;
+per_type_decoder_f TimeAlignmentTimer_decode_aper;
+per_type_encoder_f TimeAlignmentTimer_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TimeAlignmentTimer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TimeToTrigger.c b/src/codec_utils/RRC/TimeToTrigger.c
new file mode 100644 (file)
index 0000000..996dbae
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TimeToTrigger.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_TimeToTrigger_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_TimeToTrigger_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_TimeToTrigger_value2enum_1[] = {
+       { 0,    3,      "ms0" },
+       { 1,    4,      "ms40" },
+       { 2,    4,      "ms64" },
+       { 3,    4,      "ms80" },
+       { 4,    5,      "ms100" },
+       { 5,    5,      "ms128" },
+       { 6,    5,      "ms160" },
+       { 7,    5,      "ms256" },
+       { 8,    5,      "ms320" },
+       { 9,    5,      "ms480" },
+       { 10,   5,      "ms512" },
+       { 11,   5,      "ms640" },
+       { 12,   6,      "ms1024" },
+       { 13,   6,      "ms1280" },
+       { 14,   6,      "ms2560" },
+       { 15,   6,      "ms5120" }
+};
+static const unsigned int asn_MAP_TimeToTrigger_enum2value_1[] = {
+       0,      /* ms0(0) */
+       4,      /* ms100(4) */
+       12,     /* ms1024(12) */
+       5,      /* ms128(5) */
+       13,     /* ms1280(13) */
+       6,      /* ms160(6) */
+       7,      /* ms256(7) */
+       14,     /* ms2560(14) */
+       8,      /* ms320(8) */
+       1,      /* ms40(1) */
+       9,      /* ms480(9) */
+       10,     /* ms512(10) */
+       15,     /* ms5120(15) */
+       2,      /* ms64(2) */
+       11,     /* ms640(11) */
+       3       /* ms80(3) */
+};
+const asn_INTEGER_specifics_t asn_SPC_TimeToTrigger_specs_1 = {
+       asn_MAP_TimeToTrigger_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_TimeToTrigger_enum2value_1,     /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_TimeToTrigger_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TimeToTrigger = {
+       "TimeToTrigger",
+       "TimeToTrigger",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_TimeToTrigger_tags_1,
+       sizeof(asn_DEF_TimeToTrigger_tags_1)
+               /sizeof(asn_DEF_TimeToTrigger_tags_1[0]), /* 1 */
+       asn_DEF_TimeToTrigger_tags_1,   /* Same as above */
+       sizeof(asn_DEF_TimeToTrigger_tags_1)
+               /sizeof(asn_DEF_TimeToTrigger_tags_1[0]), /* 1 */
+       { &asn_OER_type_TimeToTrigger_constr_1, &asn_PER_type_TimeToTrigger_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_TimeToTrigger_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TimeToTrigger.h b/src/codec_utils/RRC/TimeToTrigger.h
new file mode 100644 (file)
index 0000000..51bc980
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TimeToTrigger_H_
+#define        _TimeToTrigger_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TimeToTrigger {
+       TimeToTrigger_ms0       = 0,
+       TimeToTrigger_ms40      = 1,
+       TimeToTrigger_ms64      = 2,
+       TimeToTrigger_ms80      = 3,
+       TimeToTrigger_ms100     = 4,
+       TimeToTrigger_ms128     = 5,
+       TimeToTrigger_ms160     = 6,
+       TimeToTrigger_ms256     = 7,
+       TimeToTrigger_ms320     = 8,
+       TimeToTrigger_ms480     = 9,
+       TimeToTrigger_ms512     = 10,
+       TimeToTrigger_ms640     = 11,
+       TimeToTrigger_ms1024    = 12,
+       TimeToTrigger_ms1280    = 13,
+       TimeToTrigger_ms2560    = 14,
+       TimeToTrigger_ms5120    = 15
+} e_TimeToTrigger;
+
+/* TimeToTrigger */
+typedef long    TimeToTrigger_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TimeToTrigger_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TimeToTrigger;
+extern const asn_INTEGER_specifics_t asn_SPC_TimeToTrigger_specs_1;
+asn_struct_free_f TimeToTrigger_free;
+asn_struct_print_f TimeToTrigger_print;
+asn_constr_check_f TimeToTrigger_constraint;
+ber_type_decoder_f TimeToTrigger_decode_ber;
+der_type_encoder_f TimeToTrigger_encode_der;
+xer_type_decoder_f TimeToTrigger_decode_xer;
+xer_type_encoder_f TimeToTrigger_encode_xer;
+oer_type_decoder_f TimeToTrigger_decode_oer;
+oer_type_encoder_f TimeToTrigger_encode_oer;
+per_type_decoder_f TimeToTrigger_decode_uper;
+per_type_encoder_f TimeToTrigger_encode_uper;
+per_type_decoder_f TimeToTrigger_decode_aper;
+per_type_encoder_f TimeToTrigger_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TimeToTrigger_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TrackingAreaCode.c b/src/codec_utils/RRC/TrackingAreaCode.c
new file mode 100644 (file)
index 0000000..f5f319e
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TrackingAreaCode.h"
+
+int
+TrackingAreaCode_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 == 24)) {
+               /* 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_TrackingAreaCode_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       24      /* (SIZE(24..24)) */};
+asn_per_constraints_t asn_PER_type_TrackingAreaCode_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_TrackingAreaCode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_TrackingAreaCode = {
+       "TrackingAreaCode",
+       "TrackingAreaCode",
+       &asn_OP_BIT_STRING,
+       asn_DEF_TrackingAreaCode_tags_1,
+       sizeof(asn_DEF_TrackingAreaCode_tags_1)
+               /sizeof(asn_DEF_TrackingAreaCode_tags_1[0]), /* 1 */
+       asn_DEF_TrackingAreaCode_tags_1,        /* Same as above */
+       sizeof(asn_DEF_TrackingAreaCode_tags_1)
+               /sizeof(asn_DEF_TrackingAreaCode_tags_1[0]), /* 1 */
+       { &asn_OER_type_TrackingAreaCode_constr_1, &asn_PER_type_TrackingAreaCode_constr_1, TrackingAreaCode_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_BIT_STRING_specs       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TrackingAreaCode.h b/src/codec_utils/RRC/TrackingAreaCode.h
new file mode 100644 (file)
index 0000000..4fa5cef
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TrackingAreaCode_H_
+#define        _TrackingAreaCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BIT_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TrackingAreaCode */
+typedef BIT_STRING_t    TrackingAreaCode_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_TrackingAreaCode_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_TrackingAreaCode;
+asn_struct_free_f TrackingAreaCode_free;
+asn_struct_print_f TrackingAreaCode_print;
+asn_constr_check_f TrackingAreaCode_constraint;
+ber_type_decoder_f TrackingAreaCode_decode_ber;
+der_type_encoder_f TrackingAreaCode_encode_der;
+xer_type_decoder_f TrackingAreaCode_decode_xer;
+xer_type_encoder_f TrackingAreaCode_encode_xer;
+oer_type_decoder_f TrackingAreaCode_decode_oer;
+oer_type_encoder_f TrackingAreaCode_encode_oer;
+per_type_decoder_f TrackingAreaCode_decode_uper;
+per_type_encoder_f TrackingAreaCode_encode_uper;
+per_type_decoder_f TrackingAreaCode_decode_aper;
+per_type_encoder_f TrackingAreaCode_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TrackingAreaCode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TypeI-MultiPanelCodebook.c b/src/codec_utils/RRC/TypeI-MultiPanelCodebook.c
new file mode 100644 (file)
index 0000000..d45872e
--- /dev/null
@@ -0,0 +1,350 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TypeI-MultiPanelCodebook.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.
+ */
+static int
+memb_maxNumberResources_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 <= 64)) {
+               /* 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_totalNumberTxPorts_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 >= 2 && value <= 256)) {
+               /* 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_maxNumberCSI_RS_PerResourceSet_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 <= 8)) {
+               /* 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_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_supportedCodebookMode_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedCodebookMode_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_supportedNumberPanels_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedNumberPanels_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_maxNumberResources_constr_6 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberResources_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_totalNumberTxPorts_constr_7 CC_NOTUSED = {
+       { 2, 1 }        /* (2..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberTxPorts_constr_7 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  2,  256 }      /* (2..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberTxPortsPerResource_value2enum_2[] = {
+       { 0,    2,      "p8" },
+       { 1,    3,      "p16" },
+       { 2,    3,      "p32" }
+};
+static const unsigned int asn_MAP_maxNumberTxPortsPerResource_enum2value_2[] = {
+       1,      /* p16(1) */
+       2,      /* p32(2) */
+       0       /* p8(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberTxPortsPerResource_specs_2 = {
+       asn_MAP_maxNumberTxPortsPerResource_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberTxPortsPerResource_enum2value_2,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberTxPortsPerResource_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_maxNumberTxPortsPerResource_2 = {
+       "maxNumberTxPortsPerResource",
+       "maxNumberTxPortsPerResource",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberTxPortsPerResource_constr_2, &asn_PER_type_maxNumberTxPortsPerResource_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberTxPortsPerResource_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedCodebookMode_value2enum_8[] = {
+       { 0,    5,      "mode1" },
+       { 1,    5,      "mode2" },
+       { 2,    4,      "both" }
+};
+static const unsigned int asn_MAP_supportedCodebookMode_enum2value_8[] = {
+       2,      /* both(2) */
+       0,      /* mode1(0) */
+       1       /* mode2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedCodebookMode_specs_8 = {
+       asn_MAP_supportedCodebookMode_value2enum_8,     /* "tag" => N; sorted by tag */
+       asn_MAP_supportedCodebookMode_enum2value_8,     /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedCodebookMode_tags_8[] = {
+       (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_supportedCodebookMode_8 = {
+       "supportedCodebookMode",
+       "supportedCodebookMode",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedCodebookMode_tags_8,
+       sizeof(asn_DEF_supportedCodebookMode_tags_8)
+               /sizeof(asn_DEF_supportedCodebookMode_tags_8[0]) - 1, /* 1 */
+       asn_DEF_supportedCodebookMode_tags_8,   /* Same as above */
+       sizeof(asn_DEF_supportedCodebookMode_tags_8)
+               /sizeof(asn_DEF_supportedCodebookMode_tags_8[0]), /* 2 */
+       { &asn_OER_type_supportedCodebookMode_constr_8, &asn_PER_type_supportedCodebookMode_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedCodebookMode_specs_8  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedNumberPanels_value2enum_12[] = {
+       { 0,    2,      "n2" },
+       { 1,    2,      "n4" }
+};
+static const unsigned int asn_MAP_supportedNumberPanels_enum2value_12[] = {
+       0,      /* n2(0) */
+       1       /* n4(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedNumberPanels_specs_12 = {
+       asn_MAP_supportedNumberPanels_value2enum_12,    /* "tag" => N; sorted by tag */
+       asn_MAP_supportedNumberPanels_enum2value_12,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedNumberPanels_tags_12[] = {
+       (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_supportedNumberPanels_12 = {
+       "supportedNumberPanels",
+       "supportedNumberPanels",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedNumberPanels_tags_12,
+       sizeof(asn_DEF_supportedNumberPanels_tags_12)
+               /sizeof(asn_DEF_supportedNumberPanels_tags_12[0]) - 1, /* 1 */
+       asn_DEF_supportedNumberPanels_tags_12,  /* Same as above */
+       sizeof(asn_DEF_supportedNumberPanels_tags_12)
+               /sizeof(asn_DEF_supportedNumberPanels_tags_12[0]), /* 2 */
+       { &asn_OER_type_supportedNumberPanels_constr_12, &asn_PER_type_supportedNumberPanels_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedNumberPanels_specs_12 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TypeI_MultiPanelCodebook_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, maxNumberTxPortsPerResource),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberTxPortsPerResource_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberTxPortsPerResource"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, maxNumberResources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberResources_constr_6, &asn_PER_memb_maxNumberResources_constr_6,  memb_maxNumberResources_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberResources"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, totalNumberTxPorts),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberTxPorts_constr_7, &asn_PER_memb_totalNumberTxPorts_constr_7,  memb_totalNumberTxPorts_constraint_1 },
+               0, 0, /* No default value */
+               "totalNumberTxPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, supportedCodebookMode),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedCodebookMode_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedCodebookMode"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, supportedNumberPanels),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedNumberPanels_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedNumberPanels"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_MultiPanelCodebook, maxNumberCSI_RS_PerResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15, &asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15,  memb_maxNumberCSI_RS_PerResourceSet_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-PerResourceSet"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_TypeI_MultiPanelCodebook_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TypeI_MultiPanelCodebook_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberTxPortsPerResource */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberResources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* totalNumberTxPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* supportedCodebookMode */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* supportedNumberPanels */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* maxNumberCSI-RS-PerResourceSet */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TypeI_MultiPanelCodebook_specs_1 = {
+       sizeof(struct TypeI_MultiPanelCodebook),
+       offsetof(struct TypeI_MultiPanelCodebook, _asn_ctx),
+       asn_MAP_TypeI_MultiPanelCodebook_tag2el_1,
+       6,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TypeI_MultiPanelCodebook = {
+       "TypeI-MultiPanelCodebook",
+       "TypeI-MultiPanelCodebook",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TypeI_MultiPanelCodebook_tags_1,
+       sizeof(asn_DEF_TypeI_MultiPanelCodebook_tags_1)
+               /sizeof(asn_DEF_TypeI_MultiPanelCodebook_tags_1[0]), /* 1 */
+       asn_DEF_TypeI_MultiPanelCodebook_tags_1,        /* Same as above */
+       sizeof(asn_DEF_TypeI_MultiPanelCodebook_tags_1)
+               /sizeof(asn_DEF_TypeI_MultiPanelCodebook_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TypeI_MultiPanelCodebook_1,
+       6,      /* Elements count */
+       &asn_SPC_TypeI_MultiPanelCodebook_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TypeI-MultiPanelCodebook.h b/src/codec_utils/RRC/TypeI-MultiPanelCodebook.h
new file mode 100644 (file)
index 0000000..fdd9fde
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TypeI_MultiPanelCodebook_H_
+#define        _TypeI_MultiPanelCodebook_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TypeI_MultiPanelCodebook__maxNumberTxPortsPerResource {
+       TypeI_MultiPanelCodebook__maxNumberTxPortsPerResource_p8        = 0,
+       TypeI_MultiPanelCodebook__maxNumberTxPortsPerResource_p16       = 1,
+       TypeI_MultiPanelCodebook__maxNumberTxPortsPerResource_p32       = 2
+} e_TypeI_MultiPanelCodebook__maxNumberTxPortsPerResource;
+typedef enum TypeI_MultiPanelCodebook__supportedCodebookMode {
+       TypeI_MultiPanelCodebook__supportedCodebookMode_mode1   = 0,
+       TypeI_MultiPanelCodebook__supportedCodebookMode_mode2   = 1,
+       TypeI_MultiPanelCodebook__supportedCodebookMode_both    = 2
+} e_TypeI_MultiPanelCodebook__supportedCodebookMode;
+typedef enum TypeI_MultiPanelCodebook__supportedNumberPanels {
+       TypeI_MultiPanelCodebook__supportedNumberPanels_n2      = 0,
+       TypeI_MultiPanelCodebook__supportedNumberPanels_n4      = 1
+} e_TypeI_MultiPanelCodebook__supportedNumberPanels;
+
+/* TypeI-MultiPanelCodebook */
+typedef struct TypeI_MultiPanelCodebook {
+       long     maxNumberTxPortsPerResource;
+       long     maxNumberResources;
+       long     totalNumberTxPorts;
+       long     supportedCodebookMode;
+       long     supportedNumberPanels;
+       long     maxNumberCSI_RS_PerResourceSet;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TypeI_MultiPanelCodebook_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberTxPortsPerResource_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedCodebookMode_8;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedNumberPanels_12;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TypeI_MultiPanelCodebook;
+extern asn_SEQUENCE_specifics_t asn_SPC_TypeI_MultiPanelCodebook_specs_1;
+extern asn_TYPE_member_t asn_MBR_TypeI_MultiPanelCodebook_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TypeI_MultiPanelCodebook_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TypeI-SinglePanelCodebook.c b/src/codec_utils/RRC/TypeI-SinglePanelCodebook.c
new file mode 100644 (file)
index 0000000..ac5910b
--- /dev/null
@@ -0,0 +1,297 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TypeI-SinglePanelCodebook.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.
+ */
+static int
+memb_maxNumberResources_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 <= 64)) {
+               /* 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_totalNumberTxPorts_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 >= 2 && value <= 256)) {
+               /* 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_maxNumberCSI_RS_PerResourceSet_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 <= 8)) {
+               /* 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_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_supportedCodebookMode_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_supportedCodebookMode_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_maxNumberResources_constr_10 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberResources_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_totalNumberTxPorts_constr_11 CC_NOTUSED = {
+       { 2, 1 }        /* (2..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberTxPorts_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  2,  256 }      /* (2..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberTxPortsPerResource_value2enum_2[] = {
+       { 0,    2,      "p2" },
+       { 1,    2,      "p4" },
+       { 2,    2,      "p8" },
+       { 3,    3,      "p12" },
+       { 4,    3,      "p16" },
+       { 5,    3,      "p24" },
+       { 6,    3,      "p32" }
+};
+static const unsigned int asn_MAP_maxNumberTxPortsPerResource_enum2value_2[] = {
+       3,      /* p12(3) */
+       4,      /* p16(4) */
+       0,      /* p2(0) */
+       5,      /* p24(5) */
+       6,      /* p32(6) */
+       1,      /* p4(1) */
+       2       /* p8(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberTxPortsPerResource_specs_2 = {
+       asn_MAP_maxNumberTxPortsPerResource_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberTxPortsPerResource_enum2value_2,       /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberTxPortsPerResource_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_maxNumberTxPortsPerResource_2 = {
+       "maxNumberTxPortsPerResource",
+       "maxNumberTxPortsPerResource",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberTxPortsPerResource_constr_2, &asn_PER_type_maxNumberTxPortsPerResource_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberTxPortsPerResource_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_supportedCodebookMode_value2enum_12[] = {
+       { 0,    5,      "mode1" },
+       { 1,    13,     "mode1AndMode2" }
+};
+static const unsigned int asn_MAP_supportedCodebookMode_enum2value_12[] = {
+       0,      /* mode1(0) */
+       1       /* mode1AndMode2(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_supportedCodebookMode_specs_12 = {
+       asn_MAP_supportedCodebookMode_value2enum_12,    /* "tag" => N; sorted by tag */
+       asn_MAP_supportedCodebookMode_enum2value_12,    /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_supportedCodebookMode_tags_12[] = {
+       (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_supportedCodebookMode_12 = {
+       "supportedCodebookMode",
+       "supportedCodebookMode",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_supportedCodebookMode_tags_12,
+       sizeof(asn_DEF_supportedCodebookMode_tags_12)
+               /sizeof(asn_DEF_supportedCodebookMode_tags_12[0]) - 1, /* 1 */
+       asn_DEF_supportedCodebookMode_tags_12,  /* Same as above */
+       sizeof(asn_DEF_supportedCodebookMode_tags_12)
+               /sizeof(asn_DEF_supportedCodebookMode_tags_12[0]), /* 2 */
+       { &asn_OER_type_supportedCodebookMode_constr_12, &asn_PER_type_supportedCodebookMode_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_supportedCodebookMode_specs_12 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TypeI_SinglePanelCodebook_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_SinglePanelCodebook, maxNumberTxPortsPerResource),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberTxPortsPerResource_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberTxPortsPerResource"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_SinglePanelCodebook, maxNumberResources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberResources_constr_10, &asn_PER_memb_maxNumberResources_constr_10,  memb_maxNumberResources_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberResources"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_SinglePanelCodebook, totalNumberTxPorts),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberTxPorts_constr_11, &asn_PER_memb_totalNumberTxPorts_constr_11,  memb_totalNumberTxPorts_constraint_1 },
+               0, 0, /* No default value */
+               "totalNumberTxPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_SinglePanelCodebook, supportedCodebookMode),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_supportedCodebookMode_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "supportedCodebookMode"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeI_SinglePanelCodebook, maxNumberCSI_RS_PerResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15, &asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15,  memb_maxNumberCSI_RS_PerResourceSet_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-PerResourceSet"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_TypeI_SinglePanelCodebook_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TypeI_SinglePanelCodebook_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberTxPortsPerResource */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberResources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* totalNumberTxPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* supportedCodebookMode */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* maxNumberCSI-RS-PerResourceSet */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TypeI_SinglePanelCodebook_specs_1 = {
+       sizeof(struct TypeI_SinglePanelCodebook),
+       offsetof(struct TypeI_SinglePanelCodebook, _asn_ctx),
+       asn_MAP_TypeI_SinglePanelCodebook_tag2el_1,
+       5,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TypeI_SinglePanelCodebook = {
+       "TypeI-SinglePanelCodebook",
+       "TypeI-SinglePanelCodebook",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TypeI_SinglePanelCodebook_tags_1,
+       sizeof(asn_DEF_TypeI_SinglePanelCodebook_tags_1)
+               /sizeof(asn_DEF_TypeI_SinglePanelCodebook_tags_1[0]), /* 1 */
+       asn_DEF_TypeI_SinglePanelCodebook_tags_1,       /* Same as above */
+       sizeof(asn_DEF_TypeI_SinglePanelCodebook_tags_1)
+               /sizeof(asn_DEF_TypeI_SinglePanelCodebook_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TypeI_SinglePanelCodebook_1,
+       5,      /* Elements count */
+       &asn_SPC_TypeI_SinglePanelCodebook_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TypeI-SinglePanelCodebook.h b/src/codec_utils/RRC/TypeI-SinglePanelCodebook.h
new file mode 100644 (file)
index 0000000..d2c3348
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TypeI_SinglePanelCodebook_H_
+#define        _TypeI_SinglePanelCodebook_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource {
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p2       = 0,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p4       = 1,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p8       = 2,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p12      = 3,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p16      = 4,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p24      = 5,
+       TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource_p32      = 6
+} e_TypeI_SinglePanelCodebook__maxNumberTxPortsPerResource;
+typedef enum TypeI_SinglePanelCodebook__supportedCodebookMode {
+       TypeI_SinglePanelCodebook__supportedCodebookMode_mode1  = 0,
+       TypeI_SinglePanelCodebook__supportedCodebookMode_mode1AndMode2  = 1
+} e_TypeI_SinglePanelCodebook__supportedCodebookMode;
+
+/* TypeI-SinglePanelCodebook */
+typedef struct TypeI_SinglePanelCodebook {
+       long     maxNumberTxPortsPerResource;
+       long     maxNumberResources;
+       long     totalNumberTxPorts;
+       long     supportedCodebookMode;
+       long     maxNumberCSI_RS_PerResourceSet;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TypeI_SinglePanelCodebook_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberTxPortsPerResource_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_supportedCodebookMode_12;      // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TypeI_SinglePanelCodebook;
+extern asn_SEQUENCE_specifics_t asn_SPC_TypeI_SinglePanelCodebook_specs_1;
+extern asn_TYPE_member_t asn_MBR_TypeI_SinglePanelCodebook_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TypeI_SinglePanelCodebook_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TypeII-Codebook.c b/src/codec_utils/RRC/TypeII-Codebook.c
new file mode 100644 (file)
index 0000000..cef80da
--- /dev/null
@@ -0,0 +1,397 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TypeII-Codebook.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.
+ */
+static int
+memb_maxNumberResources_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 <= 64)) {
+               /* 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_totalNumberTxPorts_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 >= 2 && value <= 256)) {
+               /* 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_parameterLx_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 >= 2 && value <= 4)) {
+               /* 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_maxNumberCSI_RS_PerResourceSet_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 <= 8)) {
+               /* 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_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_amplitudeScalingType_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_amplitudeScalingType_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_amplitudeSubsetRestriction_constr_15 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_amplitudeSubsetRestriction_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_maxNumberResources_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberResources_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_totalNumberTxPorts_constr_10 CC_NOTUSED = {
+       { 2, 1 }        /* (2..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberTxPorts_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  2,  256 }      /* (2..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_parameterLx_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (2..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_parameterLx_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  2,  4 }        /* (2..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_17 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_17 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberTxPortsPerResource_value2enum_2[] = {
+       { 0,    2,      "p4" },
+       { 1,    2,      "p8" },
+       { 2,    3,      "p12" },
+       { 3,    3,      "p16" },
+       { 4,    3,      "p24" },
+       { 5,    3,      "p32" }
+};
+static const unsigned int asn_MAP_maxNumberTxPortsPerResource_enum2value_2[] = {
+       2,      /* p12(2) */
+       3,      /* p16(3) */
+       4,      /* p24(4) */
+       5,      /* p32(5) */
+       0,      /* p4(0) */
+       1       /* p8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberTxPortsPerResource_specs_2 = {
+       asn_MAP_maxNumberTxPortsPerResource_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberTxPortsPerResource_enum2value_2,       /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberTxPortsPerResource_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_maxNumberTxPortsPerResource_2 = {
+       "maxNumberTxPortsPerResource",
+       "maxNumberTxPortsPerResource",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberTxPortsPerResource_constr_2, &asn_PER_type_maxNumberTxPortsPerResource_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberTxPortsPerResource_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_amplitudeScalingType_value2enum_12[] = {
+       { 0,    8,      "wideband" },
+       { 1,    18,     "widebandAndSubband" }
+};
+static const unsigned int asn_MAP_amplitudeScalingType_enum2value_12[] = {
+       0,      /* wideband(0) */
+       1       /* widebandAndSubband(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_amplitudeScalingType_specs_12 = {
+       asn_MAP_amplitudeScalingType_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_amplitudeScalingType_enum2value_12,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_amplitudeScalingType_tags_12[] = {
+       (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_amplitudeScalingType_12 = {
+       "amplitudeScalingType",
+       "amplitudeScalingType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_amplitudeScalingType_tags_12,
+       sizeof(asn_DEF_amplitudeScalingType_tags_12)
+               /sizeof(asn_DEF_amplitudeScalingType_tags_12[0]) - 1, /* 1 */
+       asn_DEF_amplitudeScalingType_tags_12,   /* Same as above */
+       sizeof(asn_DEF_amplitudeScalingType_tags_12)
+               /sizeof(asn_DEF_amplitudeScalingType_tags_12[0]), /* 2 */
+       { &asn_OER_type_amplitudeScalingType_constr_12, &asn_PER_type_amplitudeScalingType_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_amplitudeScalingType_specs_12  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_amplitudeSubsetRestriction_value2enum_15[] = {
+       { 0,    9,      "supported" }
+};
+static const unsigned int asn_MAP_amplitudeSubsetRestriction_enum2value_15[] = {
+       0       /* supported(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_amplitudeSubsetRestriction_specs_15 = {
+       asn_MAP_amplitudeSubsetRestriction_value2enum_15,       /* "tag" => N; sorted by tag */
+       asn_MAP_amplitudeSubsetRestriction_enum2value_15,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_amplitudeSubsetRestriction_tags_15[] = {
+       (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_amplitudeSubsetRestriction_15 = {
+       "amplitudeSubsetRestriction",
+       "amplitudeSubsetRestriction",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_amplitudeSubsetRestriction_tags_15,
+       sizeof(asn_DEF_amplitudeSubsetRestriction_tags_15)
+               /sizeof(asn_DEF_amplitudeSubsetRestriction_tags_15[0]) - 1, /* 1 */
+       asn_DEF_amplitudeSubsetRestriction_tags_15,     /* Same as above */
+       sizeof(asn_DEF_amplitudeSubsetRestriction_tags_15)
+               /sizeof(asn_DEF_amplitudeSubsetRestriction_tags_15[0]), /* 2 */
+       { &asn_OER_type_amplitudeSubsetRestriction_constr_15, &asn_PER_type_amplitudeSubsetRestriction_constr_15, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_amplitudeSubsetRestriction_specs_15    /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TypeII_Codebook_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, maxNumberTxPortsPerResource),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberTxPortsPerResource_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberTxPortsPerResource"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, maxNumberResources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberResources_constr_9, &asn_PER_memb_maxNumberResources_constr_9,  memb_maxNumberResources_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberResources"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, totalNumberTxPorts),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberTxPorts_constr_10, &asn_PER_memb_totalNumberTxPorts_constr_10,  memb_totalNumberTxPorts_constraint_1 },
+               0, 0, /* No default value */
+               "totalNumberTxPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, parameterLx),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_parameterLx_constr_11, &asn_PER_memb_parameterLx_constr_11,  memb_parameterLx_constraint_1 },
+               0, 0, /* No default value */
+               "parameterLx"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, amplitudeScalingType),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_amplitudeScalingType_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amplitudeScalingType"
+               },
+       { ATF_POINTER, 1, offsetof(struct TypeII_Codebook, amplitudeSubsetRestriction),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_amplitudeSubsetRestriction_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amplitudeSubsetRestriction"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_Codebook, maxNumberCSI_RS_PerResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_17, &asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_17,  memb_maxNumberCSI_RS_PerResourceSet_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-PerResourceSet"
+               },
+};
+static const int asn_MAP_TypeII_Codebook_oms_1[] = { 5 };
+static const ber_tlv_tag_t asn_DEF_TypeII_Codebook_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TypeII_Codebook_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberTxPortsPerResource */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberResources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* totalNumberTxPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* parameterLx */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* amplitudeScalingType */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* amplitudeSubsetRestriction */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* maxNumberCSI-RS-PerResourceSet */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TypeII_Codebook_specs_1 = {
+       sizeof(struct TypeII_Codebook),
+       offsetof(struct TypeII_Codebook, _asn_ctx),
+       asn_MAP_TypeII_Codebook_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_TypeII_Codebook_oms_1,  /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TypeII_Codebook = {
+       "TypeII-Codebook",
+       "TypeII-Codebook",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TypeII_Codebook_tags_1,
+       sizeof(asn_DEF_TypeII_Codebook_tags_1)
+               /sizeof(asn_DEF_TypeII_Codebook_tags_1[0]), /* 1 */
+       asn_DEF_TypeII_Codebook_tags_1, /* Same as above */
+       sizeof(asn_DEF_TypeII_Codebook_tags_1)
+               /sizeof(asn_DEF_TypeII_Codebook_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TypeII_Codebook_1,
+       7,      /* Elements count */
+       &asn_SPC_TypeII_Codebook_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TypeII-Codebook.h b/src/codec_utils/RRC/TypeII-Codebook.h
new file mode 100644 (file)
index 0000000..6a3cff5
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TypeII_Codebook_H_
+#define        _TypeII_Codebook_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TypeII_Codebook__maxNumberTxPortsPerResource {
+       TypeII_Codebook__maxNumberTxPortsPerResource_p4 = 0,
+       TypeII_Codebook__maxNumberTxPortsPerResource_p8 = 1,
+       TypeII_Codebook__maxNumberTxPortsPerResource_p12        = 2,
+       TypeII_Codebook__maxNumberTxPortsPerResource_p16        = 3,
+       TypeII_Codebook__maxNumberTxPortsPerResource_p24        = 4,
+       TypeII_Codebook__maxNumberTxPortsPerResource_p32        = 5
+} e_TypeII_Codebook__maxNumberTxPortsPerResource;
+typedef enum TypeII_Codebook__amplitudeScalingType {
+       TypeII_Codebook__amplitudeScalingType_wideband  = 0,
+       TypeII_Codebook__amplitudeScalingType_widebandAndSubband        = 1
+} e_TypeII_Codebook__amplitudeScalingType;
+typedef enum TypeII_Codebook__amplitudeSubsetRestriction {
+       TypeII_Codebook__amplitudeSubsetRestriction_supported   = 0
+} e_TypeII_Codebook__amplitudeSubsetRestriction;
+
+/* TypeII-Codebook */
+typedef struct TypeII_Codebook {
+       long     maxNumberTxPortsPerResource;
+       long     maxNumberResources;
+       long     totalNumberTxPorts;
+       long     parameterLx;
+       long     amplitudeScalingType;
+       long    *amplitudeSubsetRestriction;    /* OPTIONAL */
+       long     maxNumberCSI_RS_PerResourceSet;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TypeII_Codebook_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberTxPortsPerResource_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_amplitudeScalingType_12;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_amplitudeSubsetRestriction_15; // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TypeII_Codebook;
+extern asn_SEQUENCE_specifics_t asn_SPC_TypeII_Codebook_specs_1;
+extern asn_TYPE_member_t asn_MBR_TypeII_Codebook_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TypeII_Codebook_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/TypeII-CodebookPortSelection.c b/src/codec_utils/RRC/TypeII-CodebookPortSelection.c
new file mode 100644 (file)
index 0000000..38cdb40
--- /dev/null
@@ -0,0 +1,338 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "TypeII-CodebookPortSelection.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.
+ */
+static int
+memb_maxNumberResources_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 <= 64)) {
+               /* 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_totalNumberTxPorts_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 >= 2 && value <= 256)) {
+               /* 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_parameterLx_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 >= 2 && value <= 4)) {
+               /* 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_maxNumberCSI_RS_PerResourceSet_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 <= 8)) {
+               /* 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_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxNumberTxPortsPerResource_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_amplitudeScalingType_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_amplitudeScalingType_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_maxNumberResources_constr_9 CC_NOTUSED = {
+       { 1, 1 }        /* (1..64) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberResources_constr_9 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_totalNumberTxPorts_constr_10 CC_NOTUSED = {
+       { 2, 1 }        /* (2..256) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_totalNumberTxPorts_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       8,  8,  2,  256 }      /* (2..256) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_parameterLx_constr_11 CC_NOTUSED = {
+       { 1, 1 }        /* (2..4) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_parameterLx_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  2,  4 }        /* (2..4) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxNumberTxPortsPerResource_value2enum_2[] = {
+       { 0,    2,      "p4" },
+       { 1,    2,      "p8" },
+       { 2,    3,      "p12" },
+       { 3,    3,      "p16" },
+       { 4,    3,      "p24" },
+       { 5,    3,      "p32" }
+};
+static const unsigned int asn_MAP_maxNumberTxPortsPerResource_enum2value_2[] = {
+       2,      /* p12(2) */
+       3,      /* p16(3) */
+       4,      /* p24(4) */
+       5,      /* p32(5) */
+       0,      /* p4(0) */
+       1       /* p8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxNumberTxPortsPerResource_specs_2 = {
+       asn_MAP_maxNumberTxPortsPerResource_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_maxNumberTxPortsPerResource_enum2value_2,       /* N => "tag"; sorted by N */
+       6,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxNumberTxPortsPerResource_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_maxNumberTxPortsPerResource_2 = {
+       "maxNumberTxPortsPerResource",
+       "maxNumberTxPortsPerResource",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]) - 1, /* 1 */
+       asn_DEF_maxNumberTxPortsPerResource_tags_2,     /* Same as above */
+       sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2)
+               /sizeof(asn_DEF_maxNumberTxPortsPerResource_tags_2[0]), /* 2 */
+       { &asn_OER_type_maxNumberTxPortsPerResource_constr_2, &asn_PER_type_maxNumberTxPortsPerResource_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxNumberTxPortsPerResource_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_amplitudeScalingType_value2enum_12[] = {
+       { 0,    8,      "wideband" },
+       { 1,    18,     "widebandAndSubband" }
+};
+static const unsigned int asn_MAP_amplitudeScalingType_enum2value_12[] = {
+       0,      /* wideband(0) */
+       1       /* widebandAndSubband(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_amplitudeScalingType_specs_12 = {
+       asn_MAP_amplitudeScalingType_value2enum_12,     /* "tag" => N; sorted by tag */
+       asn_MAP_amplitudeScalingType_enum2value_12,     /* N => "tag"; sorted by N */
+       2,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_amplitudeScalingType_tags_12[] = {
+       (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_amplitudeScalingType_12 = {
+       "amplitudeScalingType",
+       "amplitudeScalingType",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_amplitudeScalingType_tags_12,
+       sizeof(asn_DEF_amplitudeScalingType_tags_12)
+               /sizeof(asn_DEF_amplitudeScalingType_tags_12[0]) - 1, /* 1 */
+       asn_DEF_amplitudeScalingType_tags_12,   /* Same as above */
+       sizeof(asn_DEF_amplitudeScalingType_tags_12)
+               /sizeof(asn_DEF_amplitudeScalingType_tags_12[0]), /* 2 */
+       { &asn_OER_type_amplitudeScalingType_constr_12, &asn_PER_type_amplitudeScalingType_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_amplitudeScalingType_specs_12  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_TypeII_CodebookPortSelection_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, maxNumberTxPortsPerResource),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxNumberTxPortsPerResource_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxNumberTxPortsPerResource"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, maxNumberResources),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberResources_constr_9, &asn_PER_memb_maxNumberResources_constr_9,  memb_maxNumberResources_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberResources"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, totalNumberTxPorts),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_totalNumberTxPorts_constr_10, &asn_PER_memb_totalNumberTxPorts_constr_10,  memb_totalNumberTxPorts_constraint_1 },
+               0, 0, /* No default value */
+               "totalNumberTxPorts"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, parameterLx),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_parameterLx_constr_11, &asn_PER_memb_parameterLx_constr_11,  memb_parameterLx_constraint_1 },
+               0, 0, /* No default value */
+               "parameterLx"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, amplitudeScalingType),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_amplitudeScalingType_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "amplitudeScalingType"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct TypeII_CodebookPortSelection, maxNumberCSI_RS_PerResourceSet),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_maxNumberCSI_RS_PerResourceSet_constr_15, &asn_PER_memb_maxNumberCSI_RS_PerResourceSet_constr_15,  memb_maxNumberCSI_RS_PerResourceSet_constraint_1 },
+               0, 0, /* No default value */
+               "maxNumberCSI-RS-PerResourceSet"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_TypeII_CodebookPortSelection_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_TypeII_CodebookPortSelection_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* maxNumberTxPortsPerResource */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* maxNumberResources */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* totalNumberTxPorts */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* parameterLx */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* amplitudeScalingType */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* maxNumberCSI-RS-PerResourceSet */
+};
+asn_SEQUENCE_specifics_t asn_SPC_TypeII_CodebookPortSelection_specs_1 = {
+       sizeof(struct TypeII_CodebookPortSelection),
+       offsetof(struct TypeII_CodebookPortSelection, _asn_ctx),
+       asn_MAP_TypeII_CodebookPortSelection_tag2el_1,
+       6,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_TypeII_CodebookPortSelection = {
+       "TypeII-CodebookPortSelection",
+       "TypeII-CodebookPortSelection",
+       &asn_OP_SEQUENCE,
+       asn_DEF_TypeII_CodebookPortSelection_tags_1,
+       sizeof(asn_DEF_TypeII_CodebookPortSelection_tags_1)
+               /sizeof(asn_DEF_TypeII_CodebookPortSelection_tags_1[0]), /* 1 */
+       asn_DEF_TypeII_CodebookPortSelection_tags_1,    /* Same as above */
+       sizeof(asn_DEF_TypeII_CodebookPortSelection_tags_1)
+               /sizeof(asn_DEF_TypeII_CodebookPortSelection_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_TypeII_CodebookPortSelection_1,
+       6,      /* Elements count */
+       &asn_SPC_TypeII_CodebookPortSelection_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/TypeII-CodebookPortSelection.h b/src/codec_utils/RRC/TypeII-CodebookPortSelection.h
new file mode 100644 (file)
index 0000000..007044e
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _TypeII_CodebookPortSelection_H_
+#define        _TypeII_CodebookPortSelection_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum TypeII_CodebookPortSelection__maxNumberTxPortsPerResource {
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p4    = 0,
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p8    = 1,
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p12   = 2,
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p16   = 3,
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p24   = 4,
+       TypeII_CodebookPortSelection__maxNumberTxPortsPerResource_p32   = 5
+} e_TypeII_CodebookPortSelection__maxNumberTxPortsPerResource;
+typedef enum TypeII_CodebookPortSelection__amplitudeScalingType {
+       TypeII_CodebookPortSelection__amplitudeScalingType_wideband     = 0,
+       TypeII_CodebookPortSelection__amplitudeScalingType_widebandAndSubband   = 1
+} e_TypeII_CodebookPortSelection__amplitudeScalingType;
+
+/* TypeII-CodebookPortSelection */
+typedef struct TypeII_CodebookPortSelection {
+       long     maxNumberTxPortsPerResource;
+       long     maxNumberResources;
+       long     totalNumberTxPorts;
+       long     parameterLx;
+       long     amplitudeScalingType;
+       long     maxNumberCSI_RS_PerResourceSet;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} TypeII_CodebookPortSelection_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxNumberTxPortsPerResource_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_amplitudeScalingType_12;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_TypeII_CodebookPortSelection;
+extern asn_SEQUENCE_specifics_t asn_SPC_TypeII_CodebookPortSelection_specs_1;
+extern asn_TYPE_member_t asn_MBR_TypeII_CodebookPortSelection_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _TypeII_CodebookPortSelection_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.c b/src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.c
new file mode 100644 (file)
index 0000000..5247d23
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-AccessCategory1-SelectionAssistanceInfo.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_value2enum_1[] = {
+       { 0,    1,      "a" },
+       { 1,    1,      "b" },
+       { 2,    1,      "c" }
+};
+static const unsigned int asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_enum2value_1[] = {
+       0,      /* a(0) */
+       1,      /* b(1) */
+       2       /* c(2) */
+};
+const asn_INTEGER_specifics_t asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1 = {
+       asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_value2enum_1,       /* "tag" => N; sorted by tag */
+       asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_enum2value_1,       /* N => "tag"; sorted by N */
+       3,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo = {
+       "UAC-AccessCategory1-SelectionAssistanceInfo",
+       "UAC-AccessCategory1-SelectionAssistanceInfo",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1,
+       sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1)
+               /sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[0]), /* 1 */
+       asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1)
+               /sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[0]), /* 1 */
+       { &asn_OER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1, &asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.h b/src/codec_utils/RRC/UAC-AccessCategory1-SelectionAssistanceInfo.h
new file mode 100644 (file)
index 0000000..bd16729
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_AccessCategory1_SelectionAssistanceInfo_H_
+#define        _UAC_AccessCategory1_SelectionAssistanceInfo_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UAC_AccessCategory1_SelectionAssistanceInfo {
+       UAC_AccessCategory1_SelectionAssistanceInfo_a   = 0,
+       UAC_AccessCategory1_SelectionAssistanceInfo_b   = 1,
+       UAC_AccessCategory1_SelectionAssistanceInfo_c   = 2
+} e_UAC_AccessCategory1_SelectionAssistanceInfo;
+
+/* UAC-AccessCategory1-SelectionAssistanceInfo */
+typedef long    UAC_AccessCategory1_SelectionAssistanceInfo_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo;
+extern const asn_INTEGER_specifics_t asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1;
+asn_struct_free_f UAC_AccessCategory1_SelectionAssistanceInfo_free;
+asn_struct_print_f UAC_AccessCategory1_SelectionAssistanceInfo_print;
+asn_constr_check_f UAC_AccessCategory1_SelectionAssistanceInfo_constraint;
+ber_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_ber;
+der_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_der;
+xer_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_xer;
+xer_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_xer;
+oer_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_oer;
+oer_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_oer;
+per_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_uper;
+per_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_uper;
+per_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_aper;
+per_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_AccessCategory1_SelectionAssistanceInfo_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSet.c b/src/codec_utils/RRC/UAC-BarringInfoSet.c
new file mode 100644 (file)
index 0000000..b3db4f4
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringInfoSet.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.
+ */
+static int
+memb_uac_BarringForAccessIdentity_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 == 7)) {
+               /* 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_uac_BarringFactor_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uac_BarringFactor_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_uac_BarringTime_constr_19 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uac_BarringTime_constr_19 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uac_BarringForAccessIdentity_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       7       /* (SIZE(7..7)) */};
+static asn_per_constraints_t asn_PER_memb_uac_BarringForAccessIdentity_constr_28 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  7,  7 }        /* (SIZE(7..7)) */,
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_uac_BarringFactor_value2enum_2[] = {
+       { 0,    3,      "p00" },
+       { 1,    3,      "p05" },
+       { 2,    3,      "p10" },
+       { 3,    3,      "p15" },
+       { 4,    3,      "p20" },
+       { 5,    3,      "p25" },
+       { 6,    3,      "p30" },
+       { 7,    3,      "p40" },
+       { 8,    3,      "p50" },
+       { 9,    3,      "p60" },
+       { 10,   3,      "p70" },
+       { 11,   3,      "p75" },
+       { 12,   3,      "p80" },
+       { 13,   3,      "p85" },
+       { 14,   3,      "p90" },
+       { 15,   3,      "p95" }
+};
+static const unsigned int asn_MAP_uac_BarringFactor_enum2value_2[] = {
+       0,      /* p00(0) */
+       1,      /* p05(1) */
+       2,      /* p10(2) */
+       3,      /* p15(3) */
+       4,      /* p20(4) */
+       5,      /* p25(5) */
+       6,      /* p30(6) */
+       7,      /* p40(7) */
+       8,      /* p50(8) */
+       9,      /* p60(9) */
+       10,     /* p70(10) */
+       11,     /* p75(11) */
+       12,     /* p80(12) */
+       13,     /* p85(13) */
+       14,     /* p90(14) */
+       15      /* p95(15) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_uac_BarringFactor_specs_2 = {
+       asn_MAP_uac_BarringFactor_value2enum_2, /* "tag" => N; sorted by tag */
+       asn_MAP_uac_BarringFactor_enum2value_2, /* N => "tag"; sorted by N */
+       16,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_uac_BarringFactor_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_uac_BarringFactor_2 = {
+       "uac-BarringFactor",
+       "uac-BarringFactor",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_uac_BarringFactor_tags_2,
+       sizeof(asn_DEF_uac_BarringFactor_tags_2)
+               /sizeof(asn_DEF_uac_BarringFactor_tags_2[0]) - 1, /* 1 */
+       asn_DEF_uac_BarringFactor_tags_2,       /* Same as above */
+       sizeof(asn_DEF_uac_BarringFactor_tags_2)
+               /sizeof(asn_DEF_uac_BarringFactor_tags_2[0]), /* 2 */
+       { &asn_OER_type_uac_BarringFactor_constr_2, &asn_PER_type_uac_BarringFactor_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_uac_BarringFactor_specs_2      /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_uac_BarringTime_value2enum_19[] = {
+       { 0,    2,      "s4" },
+       { 1,    2,      "s8" },
+       { 2,    3,      "s16" },
+       { 3,    3,      "s32" },
+       { 4,    3,      "s64" },
+       { 5,    4,      "s128" },
+       { 6,    4,      "s256" },
+       { 7,    4,      "s512" }
+};
+static const unsigned int asn_MAP_uac_BarringTime_enum2value_19[] = {
+       5,      /* s128(5) */
+       2,      /* s16(2) */
+       6,      /* s256(6) */
+       3,      /* s32(3) */
+       0,      /* s4(0) */
+       7,      /* s512(7) */
+       4,      /* s64(4) */
+       1       /* s8(1) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_uac_BarringTime_specs_19 = {
+       asn_MAP_uac_BarringTime_value2enum_19,  /* "tag" => N; sorted by tag */
+       asn_MAP_uac_BarringTime_enum2value_19,  /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_uac_BarringTime_tags_19[] = {
+       (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_uac_BarringTime_19 = {
+       "uac-BarringTime",
+       "uac-BarringTime",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_uac_BarringTime_tags_19,
+       sizeof(asn_DEF_uac_BarringTime_tags_19)
+               /sizeof(asn_DEF_uac_BarringTime_tags_19[0]) - 1, /* 1 */
+       asn_DEF_uac_BarringTime_tags_19,        /* Same as above */
+       sizeof(asn_DEF_uac_BarringTime_tags_19)
+               /sizeof(asn_DEF_uac_BarringTime_tags_19[0]), /* 2 */
+       { &asn_OER_type_uac_BarringTime_constr_19, &asn_PER_type_uac_BarringTime_constr_19, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_uac_BarringTime_specs_19       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UAC_BarringInfoSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringFactor),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_uac_BarringFactor_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringFactor"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringTime),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_uac_BarringTime_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-BarringTime"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringForAccessIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BIT_STRING,
+               0,
+               { &asn_OER_memb_uac_BarringForAccessIdentity_constr_28, &asn_PER_memb_uac_BarringForAccessIdentity_constr_28,  memb_uac_BarringForAccessIdentity_constraint_1 },
+               0, 0, /* No default value */
+               "uac-BarringForAccessIdentity"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringInfoSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-BarringFactor */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uac-BarringTime */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* uac-BarringForAccessIdentity */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringInfoSet_specs_1 = {
+       sizeof(struct UAC_BarringInfoSet),
+       offsetof(struct UAC_BarringInfoSet, _asn_ctx),
+       asn_MAP_UAC_BarringInfoSet_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSet = {
+       "UAC-BarringInfoSet",
+       "UAC-BarringInfoSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UAC_BarringInfoSet_tags_1,
+       sizeof(asn_DEF_UAC_BarringInfoSet_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSet_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringInfoSet_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UAC_BarringInfoSet_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UAC_BarringInfoSet_1,
+       3,      /* Elements count */
+       &asn_SPC_UAC_BarringInfoSet_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSet.h b/src/codec_utils/RRC/UAC-BarringInfoSet.h
new file mode 100644 (file)
index 0000000..e84e06b
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringInfoSet_H_
+#define        _UAC_BarringInfoSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <BIT_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UAC_BarringInfoSet__uac_BarringFactor {
+       UAC_BarringInfoSet__uac_BarringFactor_p00       = 0,
+       UAC_BarringInfoSet__uac_BarringFactor_p05       = 1,
+       UAC_BarringInfoSet__uac_BarringFactor_p10       = 2,
+       UAC_BarringInfoSet__uac_BarringFactor_p15       = 3,
+       UAC_BarringInfoSet__uac_BarringFactor_p20       = 4,
+       UAC_BarringInfoSet__uac_BarringFactor_p25       = 5,
+       UAC_BarringInfoSet__uac_BarringFactor_p30       = 6,
+       UAC_BarringInfoSet__uac_BarringFactor_p40       = 7,
+       UAC_BarringInfoSet__uac_BarringFactor_p50       = 8,
+       UAC_BarringInfoSet__uac_BarringFactor_p60       = 9,
+       UAC_BarringInfoSet__uac_BarringFactor_p70       = 10,
+       UAC_BarringInfoSet__uac_BarringFactor_p75       = 11,
+       UAC_BarringInfoSet__uac_BarringFactor_p80       = 12,
+       UAC_BarringInfoSet__uac_BarringFactor_p85       = 13,
+       UAC_BarringInfoSet__uac_BarringFactor_p90       = 14,
+       UAC_BarringInfoSet__uac_BarringFactor_p95       = 15
+} e_UAC_BarringInfoSet__uac_BarringFactor;
+typedef enum UAC_BarringInfoSet__uac_BarringTime {
+       UAC_BarringInfoSet__uac_BarringTime_s4  = 0,
+       UAC_BarringInfoSet__uac_BarringTime_s8  = 1,
+       UAC_BarringInfoSet__uac_BarringTime_s16 = 2,
+       UAC_BarringInfoSet__uac_BarringTime_s32 = 3,
+       UAC_BarringInfoSet__uac_BarringTime_s64 = 4,
+       UAC_BarringInfoSet__uac_BarringTime_s128        = 5,
+       UAC_BarringInfoSet__uac_BarringTime_s256        = 6,
+       UAC_BarringInfoSet__uac_BarringTime_s512        = 7
+} e_UAC_BarringInfoSet__uac_BarringTime;
+
+/* UAC-BarringInfoSet */
+typedef struct UAC_BarringInfoSet {
+       long     uac_BarringFactor;
+       long     uac_BarringTime;
+       BIT_STRING_t     uac_BarringForAccessIdentity;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringInfoSet_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_uac_BarringFactor_2;   // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_uac_BarringTime_19;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringInfoSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringInfoSet_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringInfoSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSetIndex.c b/src/codec_utils/RRC/UAC-BarringInfoSetIndex.c
new file mode 100644 (file)
index 0000000..b04aca9
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringInfoSetIndex.h"
+
+int
+UAC_BarringInfoSetIndex_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 <= 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 NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_UAC_BarringInfoSetIndex_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (1..8) */,
+       -1};
+asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetIndex_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSetIndex_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetIndex = {
+       "UAC-BarringInfoSetIndex",
+       "UAC-BarringInfoSetIndex",
+       &asn_OP_NativeInteger,
+       asn_DEF_UAC_BarringInfoSetIndex_tags_1,
+       sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringInfoSetIndex_tags_1, /* Same as above */
+       sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1[0]), /* 1 */
+       { &asn_OER_type_UAC_BarringInfoSetIndex_constr_1, &asn_PER_type_UAC_BarringInfoSetIndex_constr_1, UAC_BarringInfoSetIndex_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSetIndex.h b/src/codec_utils/RRC/UAC-BarringInfoSetIndex.h
new file mode 100644 (file)
index 0000000..b4032b7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringInfoSetIndex_H_
+#define        _UAC_BarringInfoSetIndex_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UAC-BarringInfoSetIndex */
+typedef long    UAC_BarringInfoSetIndex_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetIndex_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetIndex;
+asn_struct_free_f UAC_BarringInfoSetIndex_free;
+asn_struct_print_f UAC_BarringInfoSetIndex_print;
+asn_constr_check_f UAC_BarringInfoSetIndex_constraint;
+ber_type_decoder_f UAC_BarringInfoSetIndex_decode_ber;
+der_type_encoder_f UAC_BarringInfoSetIndex_encode_der;
+xer_type_decoder_f UAC_BarringInfoSetIndex_decode_xer;
+xer_type_encoder_f UAC_BarringInfoSetIndex_encode_xer;
+oer_type_decoder_f UAC_BarringInfoSetIndex_decode_oer;
+oer_type_encoder_f UAC_BarringInfoSetIndex_encode_oer;
+per_type_decoder_f UAC_BarringInfoSetIndex_decode_uper;
+per_type_encoder_f UAC_BarringInfoSetIndex_encode_uper;
+per_type_decoder_f UAC_BarringInfoSetIndex_decode_aper;
+per_type_encoder_f UAC_BarringInfoSetIndex_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringInfoSetIndex_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSetList.c b/src/codec_utils/RRC/UAC-BarringInfoSetList.c
new file mode 100644 (file)
index 0000000..aaff9c4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringInfoSetList.h"
+
+#include "UAC-BarringInfoSet.h"
+static asn_oer_constraints_t asn_OER_type_UAC_BarringInfoSetList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UAC_BarringInfoSetList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UAC_BarringInfoSet,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSetList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UAC_BarringInfoSetList_specs_1 = {
+       sizeof(struct UAC_BarringInfoSetList),
+       offsetof(struct UAC_BarringInfoSetList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetList = {
+       "UAC-BarringInfoSetList",
+       "UAC-BarringInfoSetList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UAC_BarringInfoSetList_tags_1,
+       sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringInfoSetList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1)
+               /sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UAC_BarringInfoSetList_constr_1, &asn_PER_type_UAC_BarringInfoSetList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UAC_BarringInfoSetList_1,
+       1,      /* Single element */
+       &asn_SPC_UAC_BarringInfoSetList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringInfoSetList.h b/src/codec_utils/RRC/UAC-BarringInfoSetList.h
new file mode 100644 (file)
index 0000000..862b923
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringInfoSetList_H_
+#define        _UAC_BarringInfoSetList_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 UAC_BarringInfoSet;
+
+/* UAC-BarringInfoSetList */
+typedef struct UAC_BarringInfoSetList {
+       A_SEQUENCE_OF(struct UAC_BarringInfoSet) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringInfoSetList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetList;
+extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringInfoSetList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringInfoSetList_1[1];
+extern asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringInfoSetList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringPerCat.c b/src/codec_utils/RRC/UAC-BarringPerCat.c
new file mode 100644 (file)
index 0000000..f4af99a
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringPerCat.h"
+
+static int
+memb_accessCategory_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 <= 63)) {
+               /* 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_accessCategory_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..63) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_accessCategory_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (1..63) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UAC_BarringPerCat_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerCat, accessCategory),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_accessCategory_constr_2, &asn_PER_memb_accessCategory_constr_2,  memb_accessCategory_constraint_1 },
+               0, 0, /* No default value */
+               "accessCategory"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerCat, uac_barringInfoSetIndex),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_BarringInfoSetIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-barringInfoSetIndex"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringPerCat_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringPerCat_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accessCategory */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-barringInfoSetIndex */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerCat_specs_1 = {
+       sizeof(struct UAC_BarringPerCat),
+       offsetof(struct UAC_BarringPerCat, _asn_ctx),
+       asn_MAP_UAC_BarringPerCat_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCat = {
+       "UAC-BarringPerCat",
+       "UAC-BarringPerCat",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UAC_BarringPerCat_tags_1,
+       sizeof(asn_DEF_UAC_BarringPerCat_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerCat_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringPerCat_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UAC_BarringPerCat_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerCat_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UAC_BarringPerCat_1,
+       2,      /* Elements count */
+       &asn_SPC_UAC_BarringPerCat_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringPerCat.h b/src/codec_utils/RRC/UAC-BarringPerCat.h
new file mode 100644 (file)
index 0000000..9dcad39
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringPerCat_H_
+#define        _UAC_BarringPerCat_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "UAC-BarringInfoSetIndex.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UAC-BarringPerCat */
+typedef struct UAC_BarringPerCat {
+       long     accessCategory;
+       UAC_BarringInfoSetIndex_t        uac_barringInfoSetIndex;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringPerCat_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCat;
+extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerCat_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringPerCat_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringPerCat_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringPerCatList.c b/src/codec_utils/RRC/UAC-BarringPerCatList.c
new file mode 100644 (file)
index 0000000..71fed37
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringPerCatList.h"
+
+#include "UAC-BarringPerCat.h"
+static asn_oer_constraints_t asn_OER_type_UAC_BarringPerCatList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..63)) */};
+asn_per_constraints_t asn_PER_type_UAC_BarringPerCatList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UAC_BarringPerCatList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UAC_BarringPerCat,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringPerCatList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerCatList_specs_1 = {
+       sizeof(struct UAC_BarringPerCatList),
+       offsetof(struct UAC_BarringPerCatList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCatList = {
+       "UAC-BarringPerCatList",
+       "UAC-BarringPerCatList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UAC_BarringPerCatList_tags_1,
+       sizeof(asn_DEF_UAC_BarringPerCatList_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerCatList_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringPerCatList_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UAC_BarringPerCatList_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerCatList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UAC_BarringPerCatList_constr_1, &asn_PER_type_UAC_BarringPerCatList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UAC_BarringPerCatList_1,
+       1,      /* Single element */
+       &asn_SPC_UAC_BarringPerCatList_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringPerCatList.h b/src/codec_utils/RRC/UAC-BarringPerCatList.h
new file mode 100644 (file)
index 0000000..05d0a47
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringPerCatList_H_
+#define        _UAC_BarringPerCatList_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 UAC_BarringPerCat;
+
+/* UAC-BarringPerCatList */
+typedef struct UAC_BarringPerCatList {
+       A_SEQUENCE_OF(struct UAC_BarringPerCat) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringPerCatList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCatList;
+extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerCatList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringPerCatList_1[1];
+extern asn_per_constraints_t asn_PER_type_UAC_BarringPerCatList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringPerCatList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringPerPLMN-List.c b/src/codec_utils/RRC/UAC-BarringPerPLMN-List.c
new file mode 100644 (file)
index 0000000..fae99ec
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringPerPLMN-List.h"
+
+#include "UAC-BarringPerPLMN.h"
+static asn_oer_constraints_t asn_OER_type_UAC_BarringPerPLMN_List_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..12)) */};
+asn_per_constraints_t asn_PER_type_UAC_BarringPerPLMN_List_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_List_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UAC_BarringPerPLMN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UAC_BarringPerPLMN_List_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerPLMN_List_specs_1 = {
+       sizeof(struct UAC_BarringPerPLMN_List),
+       offsetof(struct UAC_BarringPerPLMN_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN_List = {
+       "UAC-BarringPerPLMN-List",
+       "UAC-BarringPerPLMN-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UAC_BarringPerPLMN_List_tags_1,
+       sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringPerPLMN_List_tags_1, /* Same as above */
+       sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1[0]), /* 1 */
+       { &asn_OER_type_UAC_BarringPerPLMN_List_constr_1, &asn_PER_type_UAC_BarringPerPLMN_List_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UAC_BarringPerPLMN_List_1,
+       1,      /* Single element */
+       &asn_SPC_UAC_BarringPerPLMN_List_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringPerPLMN-List.h b/src/codec_utils/RRC/UAC-BarringPerPLMN-List.h
new file mode 100644 (file)
index 0000000..272ef3a
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringPerPLMN_List_H_
+#define        _UAC_BarringPerPLMN_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 UAC_BarringPerPLMN;
+
+/* UAC-BarringPerPLMN-List */
+typedef struct UAC_BarringPerPLMN_List {
+       A_SEQUENCE_OF(struct UAC_BarringPerPLMN) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringPerPLMN_List_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN_List;
+extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerPLMN_List_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_List_1[1];
+extern asn_per_constraints_t asn_PER_type_UAC_BarringPerPLMN_List_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringPerPLMN_List_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UAC-BarringPerPLMN.c b/src/codec_utils/RRC/UAC-BarringPerPLMN.c
new file mode 100644 (file)
index 0000000..ff1c4a2
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UAC-BarringPerPLMN.h"
+
+#include "UAC-BarringPerCatList.h"
+static int
+memb_uac_ImplicitACBarringList_constraint_3(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 == 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_plmn_IdentityIndex_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 <= 12)) {
+               /* 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_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       63      /* (SIZE(63..63)) */};
+static asn_per_constraints_t asn_PER_type_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  63,  63 }      /* (SIZE(63..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       63      /* (SIZE(63..63)) */};
+static asn_per_constraints_t asn_PER_memb_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  63,  63 }      /* (SIZE(63..63)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_uac_ACBarringListType_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_uac_ACBarringListType_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_memb_plmn_IdentityIndex_constr_2 CC_NOTUSED = {
+       { 1, 1 }        /* (1..12) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_plmn_IdentityIndex_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uac_ImplicitACBarringList_4[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_UAC_BarringInfoSetIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uac_ImplicitACBarringList_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uac_ImplicitACBarringList_specs_4 = {
+       sizeof(struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList),
+       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uac_ImplicitACBarringList_4 = {
+       "uac-ImplicitACBarringList",
+       "uac-ImplicitACBarringList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_uac_ImplicitACBarringList_tags_4,
+       sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4)
+               /sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4[0]) - 1, /* 1 */
+       asn_DEF_uac_ImplicitACBarringList_tags_4,       /* Same as above */
+       sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4)
+               /sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4[0]), /* 2 */
+       { &asn_OER_type_uac_ImplicitACBarringList_constr_4, &asn_PER_type_uac_ImplicitACBarringList_constr_4, SEQUENCE_OF_constraint },
+       asn_MBR_uac_ImplicitACBarringList_4,
+       1,      /* Single element */
+       &asn_SPC_uac_ImplicitACBarringList_specs_4      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uac_ACBarringListType_3[] = {
+       { ATF_POINTER, 0, offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, choice.uac_ImplicitACBarringList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_uac_ImplicitACBarringList_4,
+               0,
+               { &asn_OER_memb_uac_ImplicitACBarringList_constr_4, &asn_PER_memb_uac_ImplicitACBarringList_constr_4,  memb_uac_ImplicitACBarringList_constraint_3 },
+               0, 0, /* No default value */
+               "uac-ImplicitACBarringList"
+               },
+       { ATF_POINTER, 0, offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, choice.uac_ExplicitACBarringList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UAC_BarringPerCatList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-ExplicitACBarringList"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_uac_ACBarringListType_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-ImplicitACBarringList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-ExplicitACBarringList */
+};
+static asn_CHOICE_specifics_t asn_SPC_uac_ACBarringListType_specs_3 = {
+       sizeof(struct UAC_BarringPerPLMN__uac_ACBarringListType),
+       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, _asn_ctx),
+       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, present),
+       sizeof(((struct UAC_BarringPerPLMN__uac_ACBarringListType *)0)->present),
+       asn_MAP_uac_ACBarringListType_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uac_ACBarringListType_3 = {
+       "uac-ACBarringListType",
+       "uac-ACBarringListType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_uac_ACBarringListType_constr_3, &asn_PER_type_uac_ACBarringListType_constr_3, CHOICE_constraint },
+       asn_MBR_uac_ACBarringListType_3,
+       2,      /* Elements count */
+       &asn_SPC_uac_ACBarringListType_specs_3  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerPLMN, plmn_IdentityIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_plmn_IdentityIndex_constr_2, &asn_PER_memb_plmn_IdentityIndex_constr_2,  memb_plmn_IdentityIndex_constraint_1 },
+               0, 0, /* No default value */
+               "plmn-IdentityIndex"
+               },
+       { ATF_POINTER, 1, offsetof(struct UAC_BarringPerPLMN, uac_ACBarringListType),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_uac_ACBarringListType_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "uac-ACBarringListType"
+               },
+};
+static const int asn_MAP_UAC_BarringPerPLMN_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UAC_BarringPerPLMN_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringPerPLMN_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-ACBarringListType */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerPLMN_specs_1 = {
+       sizeof(struct UAC_BarringPerPLMN),
+       offsetof(struct UAC_BarringPerPLMN, _asn_ctx),
+       asn_MAP_UAC_BarringPerPLMN_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UAC_BarringPerPLMN_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN = {
+       "UAC-BarringPerPLMN",
+       "UAC-BarringPerPLMN",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UAC_BarringPerPLMN_tags_1,
+       sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1[0]), /* 1 */
+       asn_DEF_UAC_BarringPerPLMN_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1)
+               /sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UAC_BarringPerPLMN_1,
+       2,      /* Elements count */
+       &asn_SPC_UAC_BarringPerPLMN_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UAC-BarringPerPLMN.h b/src/codec_utils/RRC/UAC-BarringPerPLMN.h
new file mode 100644 (file)
index 0000000..b246719
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UAC_BarringPerPLMN_H_
+#define        _UAC_BarringPerPLMN_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include "UAC-BarringInfoSetIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UAC_BarringPerPLMN__uac_ACBarringListType_PR {
+       UAC_BarringPerPLMN__uac_ACBarringListType_PR_NOTHING,   /* No components present */
+       UAC_BarringPerPLMN__uac_ACBarringListType_PR_uac_ImplicitACBarringList,
+       UAC_BarringPerPLMN__uac_ACBarringListType_PR_uac_ExplicitACBarringList
+} UAC_BarringPerPLMN__uac_ACBarringListType_PR;
+
+/* Forward declarations */
+struct UAC_BarringPerCatList;
+
+/* UAC-BarringPerPLMN */
+typedef struct UAC_BarringPerPLMN {
+       long     plmn_IdentityIndex;
+       struct UAC_BarringPerPLMN__uac_ACBarringListType {
+               UAC_BarringPerPLMN__uac_ACBarringListType_PR present;
+               union UAC_BarringPerPLMN__uac_ACBarringListType_u {
+                       struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList {
+                               A_SEQUENCE_OF(UAC_BarringInfoSetIndex_t) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *uac_ImplicitACBarringList;
+                       struct UAC_BarringPerCatList    *uac_ExplicitACBarringList;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uac_ACBarringListType;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UAC_BarringPerPLMN_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN;
+extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerPLMN_specs_1;
+extern asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UAC_BarringPerPLMN_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UCI-OnPUSCH.c b/src/codec_utils/RRC/UCI-OnPUSCH.c
new file mode 100644 (file)
index 0000000..ac48932
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UCI-OnPUSCH.h"
+
+#include "BetaOffsets.h"
+static int
+memb_dynamic_constraint_2(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 == 4)) {
+               /* 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;
+       }
+}
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_dynamic_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_type_dynamic_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_dynamic_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       4       /* (SIZE(4..4)) */};
+static asn_per_constraints_t asn_PER_memb_dynamic_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       0,  0,  4,  4 }        /* (SIZE(4..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_betaOffsets_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_betaOffsets_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_scaling_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_scaling_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_dynamic_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BetaOffsets,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_dynamic_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_dynamic_specs_3 = {
+       sizeof(struct UCI_OnPUSCH__betaOffsets__dynamic),
+       offsetof(struct UCI_OnPUSCH__betaOffsets__dynamic, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_dynamic_3 = {
+       "dynamic",
+       "dynamic",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_dynamic_tags_3,
+       sizeof(asn_DEF_dynamic_tags_3)
+               /sizeof(asn_DEF_dynamic_tags_3[0]) - 1, /* 1 */
+       asn_DEF_dynamic_tags_3, /* Same as above */
+       sizeof(asn_DEF_dynamic_tags_3)
+               /sizeof(asn_DEF_dynamic_tags_3[0]), /* 2 */
+       { &asn_OER_type_dynamic_constr_3, &asn_PER_type_dynamic_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_dynamic_3,
+       1,      /* Single element */
+       &asn_SPC_dynamic_specs_3        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_betaOffsets_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UCI_OnPUSCH__betaOffsets, choice.dynamic),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_dynamic_3,
+               0,
+               { &asn_OER_memb_dynamic_constr_3, &asn_PER_memb_dynamic_constr_3,  memb_dynamic_constraint_2 },
+               0, 0, /* No default value */
+               "dynamic"
+               },
+       { ATF_POINTER, 0, offsetof(struct UCI_OnPUSCH__betaOffsets, choice.semiStatic),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BetaOffsets,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "semiStatic"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_betaOffsets_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dynamic */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* semiStatic */
+};
+static asn_CHOICE_specifics_t asn_SPC_betaOffsets_specs_2 = {
+       sizeof(struct UCI_OnPUSCH__betaOffsets),
+       offsetof(struct UCI_OnPUSCH__betaOffsets, _asn_ctx),
+       offsetof(struct UCI_OnPUSCH__betaOffsets, present),
+       sizeof(((struct UCI_OnPUSCH__betaOffsets *)0)->present),
+       asn_MAP_betaOffsets_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_betaOffsets_2 = {
+       "betaOffsets",
+       "betaOffsets",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_betaOffsets_constr_2, &asn_PER_type_betaOffsets_constr_2, CHOICE_constraint },
+       asn_MBR_betaOffsets_2,
+       2,      /* Elements count */
+       &asn_SPC_betaOffsets_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_scaling_value2enum_6[] = {
+       { 0,    4,      "f0p5" },
+       { 1,    5,      "f0p65" },
+       { 2,    4,      "f0p8" },
+       { 3,    2,      "f1" }
+};
+static const unsigned int asn_MAP_scaling_enum2value_6[] = {
+       0,      /* f0p5(0) */
+       1,      /* f0p65(1) */
+       2,      /* f0p8(2) */
+       3       /* f1(3) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_scaling_specs_6 = {
+       asn_MAP_scaling_value2enum_6,   /* "tag" => N; sorted by tag */
+       asn_MAP_scaling_enum2value_6,   /* N => "tag"; sorted by N */
+       4,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_scaling_tags_6[] = {
+       (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_scaling_6 = {
+       "scaling",
+       "scaling",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_scaling_tags_6,
+       sizeof(asn_DEF_scaling_tags_6)
+               /sizeof(asn_DEF_scaling_tags_6[0]) - 1, /* 1 */
+       asn_DEF_scaling_tags_6, /* Same as above */
+       sizeof(asn_DEF_scaling_tags_6)
+               /sizeof(asn_DEF_scaling_tags_6[0]), /* 2 */
+       { &asn_OER_type_scaling_constr_6, &asn_PER_type_scaling_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_scaling_specs_6        /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UCI_OnPUSCH_1[] = {
+       { ATF_POINTER, 1, offsetof(struct UCI_OnPUSCH, betaOffsets),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_betaOffsets_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "betaOffsets"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UCI_OnPUSCH, scaling),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_scaling_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "scaling"
+               },
+};
+static const int asn_MAP_UCI_OnPUSCH_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_UCI_OnPUSCH_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UCI_OnPUSCH_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* betaOffsets */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* scaling */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UCI_OnPUSCH_specs_1 = {
+       sizeof(struct UCI_OnPUSCH),
+       offsetof(struct UCI_OnPUSCH, _asn_ctx),
+       asn_MAP_UCI_OnPUSCH_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UCI_OnPUSCH_oms_1,      /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UCI_OnPUSCH = {
+       "UCI-OnPUSCH",
+       "UCI-OnPUSCH",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UCI_OnPUSCH_tags_1,
+       sizeof(asn_DEF_UCI_OnPUSCH_tags_1)
+               /sizeof(asn_DEF_UCI_OnPUSCH_tags_1[0]), /* 1 */
+       asn_DEF_UCI_OnPUSCH_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UCI_OnPUSCH_tags_1)
+               /sizeof(asn_DEF_UCI_OnPUSCH_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UCI_OnPUSCH_1,
+       2,      /* Elements count */
+       &asn_SPC_UCI_OnPUSCH_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UCI-OnPUSCH.h b/src/codec_utils/RRC/UCI-OnPUSCH.h
new file mode 100644 (file)
index 0000000..633bb0c
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UCI_OnPUSCH_H_
+#define        _UCI_OnPUSCH_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UCI_OnPUSCH__betaOffsets_PR {
+       UCI_OnPUSCH__betaOffsets_PR_NOTHING,    /* No components present */
+       UCI_OnPUSCH__betaOffsets_PR_dynamic,
+       UCI_OnPUSCH__betaOffsets_PR_semiStatic
+} UCI_OnPUSCH__betaOffsets_PR;
+typedef enum UCI_OnPUSCH__scaling {
+       UCI_OnPUSCH__scaling_f0p5       = 0,
+       UCI_OnPUSCH__scaling_f0p65      = 1,
+       UCI_OnPUSCH__scaling_f0p8       = 2,
+       UCI_OnPUSCH__scaling_f1 = 3
+} e_UCI_OnPUSCH__scaling;
+
+/* Forward declarations */
+struct BetaOffsets;
+
+/* UCI-OnPUSCH */
+typedef struct UCI_OnPUSCH {
+       struct UCI_OnPUSCH__betaOffsets {
+               UCI_OnPUSCH__betaOffsets_PR present;
+               union UCI_OnPUSCH__betaOffsets_u {
+                       struct UCI_OnPUSCH__betaOffsets__dynamic {
+                               A_SEQUENCE_OF(struct BetaOffsets) list;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *dynamic;
+                       struct BetaOffsets      *semiStatic;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *betaOffsets;
+       long     scaling;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UCI_OnPUSCH_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_scaling_6;     // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_UCI_OnPUSCH;
+extern asn_SEQUENCE_specifics_t asn_SPC_UCI_OnPUSCH_specs_1;
+extern asn_TYPE_member_t asn_MBR_UCI_OnPUSCH_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UCI_OnPUSCH_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-Container.c b/src/codec_utils/RRC/UE-CapabilityRAT-Container.c
new file mode 100644 (file)
index 0000000..b6279c3
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-CapabilityRAT-Container.h"
+
+asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_Container_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UE_CapabilityRAT_Container, rat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RAT_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rat-Type"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_CapabilityRAT_Container, ue_CapabilityRAT_Container),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-CapabilityRAT-Container"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UE_CapabilityRAT_Container_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_CapabilityRAT_Container_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ue-CapabilityRAT-Container */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_CapabilityRAT_Container_specs_1 = {
+       sizeof(struct UE_CapabilityRAT_Container),
+       offsetof(struct UE_CapabilityRAT_Container, _asn_ctx),
+       asn_MAP_UE_CapabilityRAT_Container_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_Container = {
+       "UE-CapabilityRAT-Container",
+       "UE-CapabilityRAT-Container",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_CapabilityRAT_Container_tags_1,
+       sizeof(asn_DEF_UE_CapabilityRAT_Container_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_Container_tags_1[0]), /* 1 */
+       asn_DEF_UE_CapabilityRAT_Container_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UE_CapabilityRAT_Container_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_Container_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_CapabilityRAT_Container_1,
+       2,      /* Elements count */
+       &asn_SPC_UE_CapabilityRAT_Container_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-Container.h b/src/codec_utils/RRC/UE-CapabilityRAT-Container.h
new file mode 100644 (file)
index 0000000..dc51176
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_CapabilityRAT_Container_H_
+#define        _UE_CapabilityRAT_Container_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RAT-Type.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UE-CapabilityRAT-Container */
+typedef struct UE_CapabilityRAT_Container {
+       RAT_Type_t       rat_Type;
+       OCTET_STRING_t   ue_CapabilityRAT_Container;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_CapabilityRAT_Container_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_Container;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_CapabilityRAT_Container_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_Container_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_CapabilityRAT_Container_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.c b/src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.c
new file mode 100644 (file)
index 0000000..a1d0a0d
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-CapabilityRAT-ContainerList.h"
+
+#include "UE-CapabilityRAT-Container.h"
+static asn_oer_constraints_t asn_OER_type_UE_CapabilityRAT_ContainerList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..8)) */};
+asn_per_constraints_t asn_PER_type_UE_CapabilityRAT_ContainerList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  0,  8 }        /* (SIZE(0..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_ContainerList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UE_CapabilityRAT_Container,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UE_CapabilityRAT_ContainerList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UE_CapabilityRAT_ContainerList_specs_1 = {
+       sizeof(struct UE_CapabilityRAT_ContainerList),
+       offsetof(struct UE_CapabilityRAT_ContainerList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_ContainerList = {
+       "UE-CapabilityRAT-ContainerList",
+       "UE-CapabilityRAT-ContainerList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UE_CapabilityRAT_ContainerList_tags_1,
+       sizeof(asn_DEF_UE_CapabilityRAT_ContainerList_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_ContainerList_tags_1[0]), /* 1 */
+       asn_DEF_UE_CapabilityRAT_ContainerList_tags_1,  /* Same as above */
+       sizeof(asn_DEF_UE_CapabilityRAT_ContainerList_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_ContainerList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UE_CapabilityRAT_ContainerList_constr_1, &asn_PER_type_UE_CapabilityRAT_ContainerList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UE_CapabilityRAT_ContainerList_1,
+       1,      /* Single element */
+       &asn_SPC_UE_CapabilityRAT_ContainerList_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.h b/src/codec_utils/RRC/UE-CapabilityRAT-ContainerList.h
new file mode 100644 (file)
index 0000000..2846b7d
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_CapabilityRAT_ContainerList_H_
+#define        _UE_CapabilityRAT_ContainerList_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 UE_CapabilityRAT_Container;
+
+/* UE-CapabilityRAT-ContainerList */
+typedef struct UE_CapabilityRAT_ContainerList {
+       A_SEQUENCE_OF(struct UE_CapabilityRAT_Container) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_CapabilityRAT_ContainerList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_ContainerList;
+extern asn_SET_OF_specifics_t asn_SPC_UE_CapabilityRAT_ContainerList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_ContainerList_1[1];
+extern asn_per_constraints_t asn_PER_type_UE_CapabilityRAT_ContainerList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_CapabilityRAT_ContainerList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-Request.c b/src/codec_utils/RRC/UE-CapabilityRAT-Request.c
new file mode 100644 (file)
index 0000000..90aee01
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-CapabilityRAT-Request.h"
+
+asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_Request_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UE_CapabilityRAT_Request, rat_Type),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RAT_Type,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rat-Type"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_CapabilityRAT_Request, capabilityRequestFilter),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "capabilityRequestFilter"
+               },
+};
+static const int asn_MAP_UE_CapabilityRAT_Request_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UE_CapabilityRAT_Request_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_CapabilityRAT_Request_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rat-Type */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* capabilityRequestFilter */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_CapabilityRAT_Request_specs_1 = {
+       sizeof(struct UE_CapabilityRAT_Request),
+       offsetof(struct UE_CapabilityRAT_Request, _asn_ctx),
+       asn_MAP_UE_CapabilityRAT_Request_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UE_CapabilityRAT_Request_oms_1, /* Optional members */
+       1, 0,   /* Root/Additions */
+       2,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_Request = {
+       "UE-CapabilityRAT-Request",
+       "UE-CapabilityRAT-Request",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_CapabilityRAT_Request_tags_1,
+       sizeof(asn_DEF_UE_CapabilityRAT_Request_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_Request_tags_1[0]), /* 1 */
+       asn_DEF_UE_CapabilityRAT_Request_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UE_CapabilityRAT_Request_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_Request_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_CapabilityRAT_Request_1,
+       2,      /* Elements count */
+       &asn_SPC_UE_CapabilityRAT_Request_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-Request.h b/src/codec_utils/RRC/UE-CapabilityRAT-Request.h
new file mode 100644 (file)
index 0000000..7dd46f3
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_CapabilityRAT_Request_H_
+#define        _UE_CapabilityRAT_Request_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RAT-Type.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UE-CapabilityRAT-Request */
+typedef struct UE_CapabilityRAT_Request {
+       RAT_Type_t       rat_Type;
+       OCTET_STRING_t  *capabilityRequestFilter;       /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_CapabilityRAT_Request_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_Request;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_CapabilityRAT_Request_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_Request_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_CapabilityRAT_Request_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-RequestList.c b/src/codec_utils/RRC/UE-CapabilityRAT-RequestList.c
new file mode 100644 (file)
index 0000000..0c4b9bc
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-CapabilityRAT-RequestList.h"
+
+#include "UE-CapabilityRAT-Request.h"
+static asn_oer_constraints_t asn_OER_type_UE_CapabilityRAT_RequestList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..8)) */};
+asn_per_constraints_t asn_PER_type_UE_CapabilityRAT_RequestList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_RequestList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UE_CapabilityRAT_Request,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UE_CapabilityRAT_RequestList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UE_CapabilityRAT_RequestList_specs_1 = {
+       sizeof(struct UE_CapabilityRAT_RequestList),
+       offsetof(struct UE_CapabilityRAT_RequestList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_RequestList = {
+       "UE-CapabilityRAT-RequestList",
+       "UE-CapabilityRAT-RequestList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UE_CapabilityRAT_RequestList_tags_1,
+       sizeof(asn_DEF_UE_CapabilityRAT_RequestList_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_RequestList_tags_1[0]), /* 1 */
+       asn_DEF_UE_CapabilityRAT_RequestList_tags_1,    /* Same as above */
+       sizeof(asn_DEF_UE_CapabilityRAT_RequestList_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRAT_RequestList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UE_CapabilityRAT_RequestList_constr_1, &asn_PER_type_UE_CapabilityRAT_RequestList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UE_CapabilityRAT_RequestList_1,
+       1,      /* Single element */
+       &asn_SPC_UE_CapabilityRAT_RequestList_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-CapabilityRAT-RequestList.h b/src/codec_utils/RRC/UE-CapabilityRAT-RequestList.h
new file mode 100644 (file)
index 0000000..babcff0
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_CapabilityRAT_RequestList_H_
+#define        _UE_CapabilityRAT_RequestList_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 UE_CapabilityRAT_Request;
+
+/* UE-CapabilityRAT-RequestList */
+typedef struct UE_CapabilityRAT_RequestList {
+       A_SEQUENCE_OF(struct UE_CapabilityRAT_Request) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_CapabilityRAT_RequestList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRAT_RequestList;
+extern asn_SET_OF_specifics_t asn_SPC_UE_CapabilityRAT_RequestList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_CapabilityRAT_RequestList_1[1];
+extern asn_per_constraints_t asn_PER_type_UE_CapabilityRAT_RequestList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_CapabilityRAT_RequestList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-CapabilityRequestFilterNR.c b/src/codec_utils/RRC/UE-CapabilityRequestFilterNR.c
new file mode 100644 (file)
index 0000000..a49b122
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-CapabilityRequestFilterNR.h"
+
+#include "FreqBandList.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct UE_CapabilityRequestFilterNR__nonCriticalExtension),
+       offsetof(struct UE_CapabilityRequestFilterNR__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UE_CapabilityRequestFilterNR_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UE_CapabilityRequestFilterNR, frequencyBandListr),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FreqBandList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyBandListr"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_CapabilityRequestFilterNR, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UE_CapabilityRequestFilterNR_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UE_CapabilityRequestFilterNR_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_CapabilityRequestFilterNR_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandListr */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UE_CapabilityRequestFilterNR_specs_1 = {
+       sizeof(struct UE_CapabilityRequestFilterNR),
+       offsetof(struct UE_CapabilityRequestFilterNR, _asn_ctx),
+       asn_MAP_UE_CapabilityRequestFilterNR_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UE_CapabilityRequestFilterNR_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRequestFilterNR = {
+       "UE-CapabilityRequestFilterNR",
+       "UE-CapabilityRequestFilterNR",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_CapabilityRequestFilterNR_tags_1,
+       sizeof(asn_DEF_UE_CapabilityRequestFilterNR_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRequestFilterNR_tags_1[0]), /* 1 */
+       asn_DEF_UE_CapabilityRequestFilterNR_tags_1,    /* Same as above */
+       sizeof(asn_DEF_UE_CapabilityRequestFilterNR_tags_1)
+               /sizeof(asn_DEF_UE_CapabilityRequestFilterNR_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_CapabilityRequestFilterNR_1,
+       2,      /* Elements count */
+       &asn_SPC_UE_CapabilityRequestFilterNR_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-CapabilityRequestFilterNR.h b/src/codec_utils/RRC/UE-CapabilityRequestFilterNR.h
new file mode 100644 (file)
index 0000000..7e55777
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_CapabilityRequestFilterNR_H_
+#define        _UE_CapabilityRequestFilterNR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FreqBandList;
+
+/* UE-CapabilityRequestFilterNR */
+typedef struct UE_CapabilityRequestFilterNR {
+       struct FreqBandList     *frequencyBandListr;    /* OPTIONAL */
+       struct UE_CapabilityRequestFilterNR__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_CapabilityRequestFilterNR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_CapabilityRequestFilterNR;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_CapabilityRequestFilterNR_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-MRDC-Capability.c b/src/codec_utils/RRC/UE-MRDC-Capability.c
new file mode 100644 (file)
index 0000000..e551bd0
--- /dev/null
@@ -0,0 +1,276 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-MRDC-Capability.h"
+
+#include "MeasAndMobParametersMRDC.h"
+#include "Phy-ParametersMRDC.h"
+#include "GeneralParametersMRDC-XDD-Diff.h"
+#include "UE-MRDC-CapabilityAddXDD-Mode.h"
+#include "UE-MRDC-CapabilityAddFRX-Mode.h"
+#include "PDCP-ParametersMRDC.h"
+#include "FeatureSetCombination.h"
+static int
+memb_featureSetCombinations_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 <= 1024)) {
+               /* 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_featureSetCombinations_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetCombinations_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetCombinations_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetCombinations_constr_10 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_featureSetCombinations_10[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetCombination,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetCombinations_tags_10[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetCombinations_specs_10 = {
+       sizeof(struct UE_MRDC_Capability__featureSetCombinations),
+       offsetof(struct UE_MRDC_Capability__featureSetCombinations, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetCombinations_10 = {
+       "featureSetCombinations",
+       "featureSetCombinations",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetCombinations_tags_10,
+       sizeof(asn_DEF_featureSetCombinations_tags_10)
+               /sizeof(asn_DEF_featureSetCombinations_tags_10[0]) - 1, /* 1 */
+       asn_DEF_featureSetCombinations_tags_10, /* Same as above */
+       sizeof(asn_DEF_featureSetCombinations_tags_10)
+               /sizeof(asn_DEF_featureSetCombinations_tags_10[0]), /* 2 */
+       { &asn_OER_type_featureSetCombinations_constr_10, &asn_PER_type_featureSetCombinations_constr_10, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetCombinations_10,
+       1,      /* Single element */
+       &asn_SPC_featureSetCombinations_specs_10        /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_14 = {
+       sizeof(struct UE_MRDC_Capability__nonCriticalExtension),
+       offsetof(struct UE_MRDC_Capability__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_14 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_14,
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_14,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_14)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_14[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_14  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UE_MRDC_Capability_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UE_MRDC_Capability, measAndMobParametersMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_MRDC_Capability, phy_ParametersMRDC_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersMRDC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersMRDC-v1530"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_MRDC_Capability, rf_ParametersMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RF_ParametersMRDC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rf-ParametersMRDC"
+               },
+       { ATF_POINTER, 9, offsetof(struct UE_MRDC_Capability, generalParametersMRDC),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GeneralParametersMRDC_XDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "generalParametersMRDC"
+               },
+       { ATF_POINTER, 8, offsetof(struct UE_MRDC_Capability, fdd_Add_UE_MRDC_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_MRDC_CapabilityAddXDD_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fdd-Add-UE-MRDC-Capabilities"
+               },
+       { ATF_POINTER, 7, offsetof(struct UE_MRDC_Capability, tdd_Add_UE_MRDC_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_MRDC_CapabilityAddXDD_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-Add-UE-MRDC-Capabilities"
+               },
+       { ATF_POINTER, 6, offsetof(struct UE_MRDC_Capability, fr1_Add_UE_MRDC_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_MRDC_CapabilityAddFRX_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr1-Add-UE-MRDC-Capabilities"
+               },
+       { ATF_POINTER, 5, offsetof(struct UE_MRDC_Capability, fr2_Add_UE_MRDC_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_MRDC_CapabilityAddFRX_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr2-Add-UE-MRDC-Capabilities"
+               },
+       { ATF_POINTER, 4, offsetof(struct UE_MRDC_Capability, featureSetCombinations),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_featureSetCombinations_10,
+               0,
+               { &asn_OER_memb_featureSetCombinations_constr_10, &asn_PER_memb_featureSetCombinations_constr_10,  memb_featureSetCombinations_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetCombinations"
+               },
+       { ATF_POINTER, 3, offsetof(struct UE_MRDC_Capability, pdcp_ParametersMRDC_v1530),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCP_ParametersMRDC,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-ParametersMRDC-v1530"
+               },
+       { ATF_POINTER, 2, offsetof(struct UE_MRDC_Capability, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_MRDC_Capability, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_14,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UE_MRDC_Capability_oms_1[] = { 0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
+static const ber_tlv_tag_t asn_DEF_UE_MRDC_Capability_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_MRDC_Capability_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measAndMobParametersMRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* phy-ParametersMRDC-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rf-ParametersMRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* generalParametersMRDC */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* fdd-Add-UE-MRDC-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* tdd-Add-UE-MRDC-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* fr1-Add-UE-MRDC-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* fr2-Add-UE-MRDC-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* featureSetCombinations */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* pdcp-ParametersMRDC-v1530 */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* nonCriticalExtension */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UE_MRDC_Capability_specs_1 = {
+       sizeof(struct UE_MRDC_Capability),
+       offsetof(struct UE_MRDC_Capability, _asn_ctx),
+       asn_MAP_UE_MRDC_Capability_tag2el_1,
+       12,     /* Count of tags in the map */
+       asn_MAP_UE_MRDC_Capability_oms_1,       /* Optional members */
+       11, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_MRDC_Capability = {
+       "UE-MRDC-Capability",
+       "UE-MRDC-Capability",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_MRDC_Capability_tags_1,
+       sizeof(asn_DEF_UE_MRDC_Capability_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_Capability_tags_1[0]), /* 1 */
+       asn_DEF_UE_MRDC_Capability_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UE_MRDC_Capability_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_Capability_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_MRDC_Capability_1,
+       12,     /* Elements count */
+       &asn_SPC_UE_MRDC_Capability_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-MRDC-Capability.h b/src/codec_utils/RRC/UE-MRDC-Capability.h
new file mode 100644 (file)
index 0000000..b80a6cb
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_MRDC_Capability_H_
+#define        _UE_MRDC_Capability_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RF-ParametersMRDC.h"
+#include <OCTET_STRING.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasAndMobParametersMRDC;
+struct Phy_ParametersMRDC;
+struct GeneralParametersMRDC_XDD_Diff;
+struct UE_MRDC_CapabilityAddXDD_Mode;
+struct UE_MRDC_CapabilityAddFRX_Mode;
+struct PDCP_ParametersMRDC;
+struct FeatureSetCombination;
+
+/* UE-MRDC-Capability */
+typedef struct UE_MRDC_Capability {
+       struct MeasAndMobParametersMRDC *measAndMobParametersMRDC;      /* OPTIONAL */
+       struct Phy_ParametersMRDC       *phy_ParametersMRDC_v1530;      /* OPTIONAL */
+       RF_ParametersMRDC_t      rf_ParametersMRDC;
+       struct GeneralParametersMRDC_XDD_Diff   *generalParametersMRDC; /* OPTIONAL */
+       struct UE_MRDC_CapabilityAddXDD_Mode    *fdd_Add_UE_MRDC_Capabilities;  /* OPTIONAL */
+       struct UE_MRDC_CapabilityAddXDD_Mode    *tdd_Add_UE_MRDC_Capabilities;  /* OPTIONAL */
+       struct UE_MRDC_CapabilityAddFRX_Mode    *fr1_Add_UE_MRDC_Capabilities;  /* OPTIONAL */
+       struct UE_MRDC_CapabilityAddFRX_Mode    *fr2_Add_UE_MRDC_Capabilities;  /* OPTIONAL */
+       struct UE_MRDC_Capability__featureSetCombinations {
+               A_SEQUENCE_OF(struct FeatureSetCombination) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetCombinations;
+       struct PDCP_ParametersMRDC      *pdcp_ParametersMRDC_v1530;     /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct UE_MRDC_Capability__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_MRDC_Capability_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_MRDC_Capability;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_MRDC_Capability_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.c b/src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.c
new file mode 100644 (file)
index 0000000..ba90f0e
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-MRDC-CapabilityAddFRX-Mode.h"
+
+asn_TYPE_member_t asn_MBR_UE_MRDC_CapabilityAddFRX_Mode_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UE_MRDC_CapabilityAddFRX_Mode, measAndMobParametersMRDC_FRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC_FRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC-FRX-Diff"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_MRDC_CapabilityAddFRX_Mode_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* measAndMobParametersMRDC-FRX-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_MRDC_CapabilityAddFRX_Mode_specs_1 = {
+       sizeof(struct UE_MRDC_CapabilityAddFRX_Mode),
+       offsetof(struct UE_MRDC_CapabilityAddFRX_Mode, _asn_ctx),
+       asn_MAP_UE_MRDC_CapabilityAddFRX_Mode_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_UE_MRDC_CapabilityAddFRX_Mode = {
+       "UE-MRDC-CapabilityAddFRX-Mode",
+       "UE-MRDC-CapabilityAddFRX-Mode",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1,
+       sizeof(asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1[0]), /* 1 */
+       asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_CapabilityAddFRX_Mode_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_MRDC_CapabilityAddFRX_Mode_1,
+       1,      /* Elements count */
+       &asn_SPC_UE_MRDC_CapabilityAddFRX_Mode_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.h b/src/codec_utils/RRC/UE-MRDC-CapabilityAddFRX-Mode.h
new file mode 100644 (file)
index 0000000..1026898
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_MRDC_CapabilityAddFRX_Mode_H_
+#define        _UE_MRDC_CapabilityAddFRX_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasAndMobParametersMRDC-FRX-Diff.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UE-MRDC-CapabilityAddFRX-Mode */
+typedef struct UE_MRDC_CapabilityAddFRX_Mode {
+       MeasAndMobParametersMRDC_FRX_Diff_t      measAndMobParametersMRDC_FRX_Diff;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_MRDC_CapabilityAddFRX_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_MRDC_CapabilityAddFRX_Mode;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_MRDC_CapabilityAddFRX_Mode_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_MRDC_CapabilityAddFRX_Mode_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_MRDC_CapabilityAddFRX_Mode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.c b/src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.c
new file mode 100644 (file)
index 0000000..8f9f69f
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-MRDC-CapabilityAddXDD-Mode.h"
+
+#include "MeasAndMobParametersMRDC-XDD-Diff.h"
+#include "GeneralParametersMRDC-XDD-Diff.h"
+asn_TYPE_member_t asn_MBR_UE_MRDC_CapabilityAddXDD_Mode_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UE_MRDC_CapabilityAddXDD_Mode, measAndMobParametersMRDC_XDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersMRDC_XDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersMRDC-XDD-Diff"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_MRDC_CapabilityAddXDD_Mode, generalParametersMRDC_XDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_GeneralParametersMRDC_XDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "generalParametersMRDC-XDD-Diff"
+               },
+};
+static const int asn_MAP_UE_MRDC_CapabilityAddXDD_Mode_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_MRDC_CapabilityAddXDD_Mode_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measAndMobParametersMRDC-XDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* generalParametersMRDC-XDD-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_MRDC_CapabilityAddXDD_Mode_specs_1 = {
+       sizeof(struct UE_MRDC_CapabilityAddXDD_Mode),
+       offsetof(struct UE_MRDC_CapabilityAddXDD_Mode, _asn_ctx),
+       asn_MAP_UE_MRDC_CapabilityAddXDD_Mode_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UE_MRDC_CapabilityAddXDD_Mode_oms_1,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_MRDC_CapabilityAddXDD_Mode = {
+       "UE-MRDC-CapabilityAddXDD-Mode",
+       "UE-MRDC-CapabilityAddXDD-Mode",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1,
+       sizeof(asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1[0]), /* 1 */
+       asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1)
+               /sizeof(asn_DEF_UE_MRDC_CapabilityAddXDD_Mode_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_MRDC_CapabilityAddXDD_Mode_1,
+       2,      /* Elements count */
+       &asn_SPC_UE_MRDC_CapabilityAddXDD_Mode_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.h b/src/codec_utils/RRC/UE-MRDC-CapabilityAddXDD-Mode.h
new file mode 100644 (file)
index 0000000..f1443ea
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_MRDC_CapabilityAddXDD_Mode_H_
+#define        _UE_MRDC_CapabilityAddXDD_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct MeasAndMobParametersMRDC_XDD_Diff;
+struct GeneralParametersMRDC_XDD_Diff;
+
+/* UE-MRDC-CapabilityAddXDD-Mode */
+typedef struct UE_MRDC_CapabilityAddXDD_Mode {
+       struct MeasAndMobParametersMRDC_XDD_Diff        *measAndMobParametersMRDC_XDD_Diff;     /* OPTIONAL */
+       struct GeneralParametersMRDC_XDD_Diff   *generalParametersMRDC_XDD_Diff;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_MRDC_CapabilityAddXDD_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_MRDC_CapabilityAddXDD_Mode;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_MRDC_CapabilityAddXDD_Mode_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_MRDC_CapabilityAddXDD_Mode_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_MRDC_CapabilityAddXDD_Mode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-NR-Capability.c b/src/codec_utils/RRC/UE-NR-Capability.c
new file mode 100644 (file)
index 0000000..81bf725
--- /dev/null
@@ -0,0 +1,306 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-NR-Capability.h"
+
+#include "RLC-Parameters.h"
+#include "MAC-Parameters.h"
+#include "MeasAndMobParameters.h"
+#include "UE-NR-CapabilityAddXDD-Mode.h"
+#include "UE-NR-CapabilityAddFRX-Mode.h"
+#include "FeatureSets.h"
+#include "FeatureSetCombination.h"
+static int
+memb_featureSetCombinations_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 <= 1024)) {
+               /* 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_featureSetCombinations_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_featureSetCombinations_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_featureSetCombinations_constr_14 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_featureSetCombinations_constr_14 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_featureSetCombinations_14[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_FeatureSetCombination,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_featureSetCombinations_tags_14[] = {
+       (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_featureSetCombinations_specs_14 = {
+       sizeof(struct UE_NR_Capability__featureSetCombinations),
+       offsetof(struct UE_NR_Capability__featureSetCombinations, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_featureSetCombinations_14 = {
+       "featureSetCombinations",
+       "featureSetCombinations",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_featureSetCombinations_tags_14,
+       sizeof(asn_DEF_featureSetCombinations_tags_14)
+               /sizeof(asn_DEF_featureSetCombinations_tags_14[0]) - 1, /* 1 */
+       asn_DEF_featureSetCombinations_tags_14, /* Same as above */
+       sizeof(asn_DEF_featureSetCombinations_tags_14)
+               /sizeof(asn_DEF_featureSetCombinations_tags_14[0]), /* 2 */
+       { &asn_OER_type_featureSetCombinations_constr_14, &asn_PER_type_featureSetCombinations_constr_14, SEQUENCE_OF_constraint },
+       asn_MBR_featureSetCombinations_14,
+       1,      /* Single element */
+       &asn_SPC_featureSetCombinations_specs_14        /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_17 = {
+       sizeof(struct UE_NR_Capability__nonCriticalExtension),
+       offsetof(struct UE_NR_Capability__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_17 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_17,
+       sizeof(asn_DEF_nonCriticalExtension_tags_17)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_17[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_17,   /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_17)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_17[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_17  /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UE_NR_Capability_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UE_NR_Capability, accessStratumRelease),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_AccessStratumRelease,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "accessStratumRelease"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_NR_Capability, pdcp_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PDCP_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pdcp-Parameters"
+               },
+       { ATF_POINTER, 2, offsetof(struct UE_NR_Capability, rlc_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RLC_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rlc-Parameters"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_NR_Capability, mac_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MAC_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-Parameters"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_NR_Capability, phy_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-Parameters"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_NR_Capability, rf_Parameters),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RF_Parameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rf-Parameters"
+               },
+       { ATF_POINTER, 9, offsetof(struct UE_NR_Capability, measAndMobParameters),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParameters,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParameters"
+               },
+       { ATF_POINTER, 8, offsetof(struct UE_NR_Capability, fdd_Add_UE_NR_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_NR_CapabilityAddXDD_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fdd-Add-UE-NR-Capabilities"
+               },
+       { ATF_POINTER, 7, offsetof(struct UE_NR_Capability, tdd_Add_UE_NR_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_NR_CapabilityAddXDD_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "tdd-Add-UE-NR-Capabilities"
+               },
+       { ATF_POINTER, 6, offsetof(struct UE_NR_Capability, fr1_Add_UE_NR_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_NR_CapabilityAddFRX_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr1-Add-UE-NR-Capabilities"
+               },
+       { ATF_POINTER, 5, offsetof(struct UE_NR_Capability, fr2_Add_UE_NR_Capabilities),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_NR_CapabilityAddFRX_Mode,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "fr2-Add-UE-NR-Capabilities"
+               },
+       { ATF_POINTER, 4, offsetof(struct UE_NR_Capability, featureSets),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FeatureSets,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "featureSets"
+               },
+       { ATF_POINTER, 3, offsetof(struct UE_NR_Capability, featureSetCombinations),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               0,
+               &asn_DEF_featureSetCombinations_14,
+               0,
+               { &asn_OER_memb_featureSetCombinations_constr_14, &asn_PER_memb_featureSetCombinations_constr_14,  memb_featureSetCombinations_constraint_1 },
+               0, 0, /* No default value */
+               "featureSetCombinations"
+               },
+       { ATF_POINTER, 2, offsetof(struct UE_NR_Capability, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_NR_Capability, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_17,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UE_NR_Capability_oms_1[] = { 2, 3, 6, 7, 8, 9, 10, 11, 12, 13, 14 };
+static const ber_tlv_tag_t asn_DEF_UE_NR_Capability_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_NR_Capability_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accessStratumRelease */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pdcp-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rlc-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* mac-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* phy-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rf-Parameters */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* measAndMobParameters */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* fdd-Add-UE-NR-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* tdd-Add-UE-NR-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* fr1-Add-UE-NR-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* fr2-Add-UE-NR-Capabilities */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* featureSets */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* featureSetCombinations */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 } /* nonCriticalExtension */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UE_NR_Capability_specs_1 = {
+       sizeof(struct UE_NR_Capability),
+       offsetof(struct UE_NR_Capability, _asn_ctx),
+       asn_MAP_UE_NR_Capability_tag2el_1,
+       15,     /* Count of tags in the map */
+       asn_MAP_UE_NR_Capability_oms_1, /* Optional members */
+       11, 0,  /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_NR_Capability = {
+       "UE-NR-Capability",
+       "UE-NR-Capability",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_NR_Capability_tags_1,
+       sizeof(asn_DEF_UE_NR_Capability_tags_1)
+               /sizeof(asn_DEF_UE_NR_Capability_tags_1[0]), /* 1 */
+       asn_DEF_UE_NR_Capability_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UE_NR_Capability_tags_1)
+               /sizeof(asn_DEF_UE_NR_Capability_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_NR_Capability_1,
+       15,     /* Elements count */
+       &asn_SPC_UE_NR_Capability_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-NR-Capability.h b/src/codec_utils/RRC/UE-NR-Capability.h
new file mode 100644 (file)
index 0000000..8a42402
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_NR_Capability_H_
+#define        _UE_NR_Capability_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "AccessStratumRelease.h"
+#include "PDCP-Parameters.h"
+#include "Phy-Parameters.h"
+#include "RF-Parameters.h"
+#include <OCTET_STRING.h>
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct RLC_Parameters;
+struct MAC_Parameters;
+struct MeasAndMobParameters;
+struct UE_NR_CapabilityAddXDD_Mode;
+struct UE_NR_CapabilityAddFRX_Mode;
+struct FeatureSets;
+struct FeatureSetCombination;
+
+/* UE-NR-Capability */
+typedef struct UE_NR_Capability {
+       AccessStratumRelease_t   accessStratumRelease;
+       PDCP_Parameters_t        pdcp_Parameters;
+       struct RLC_Parameters   *rlc_Parameters;        /* OPTIONAL */
+       struct MAC_Parameters   *mac_Parameters;        /* OPTIONAL */
+       Phy_Parameters_t         phy_Parameters;
+       RF_Parameters_t  rf_Parameters;
+       struct MeasAndMobParameters     *measAndMobParameters;  /* OPTIONAL */
+       struct UE_NR_CapabilityAddXDD_Mode      *fdd_Add_UE_NR_Capabilities;    /* OPTIONAL */
+       struct UE_NR_CapabilityAddXDD_Mode      *tdd_Add_UE_NR_Capabilities;    /* OPTIONAL */
+       struct UE_NR_CapabilityAddFRX_Mode      *fr1_Add_UE_NR_Capabilities;    /* OPTIONAL */
+       struct UE_NR_CapabilityAddFRX_Mode      *fr2_Add_UE_NR_Capabilities;    /* OPTIONAL */
+       struct FeatureSets      *featureSets;   /* OPTIONAL */
+       struct UE_NR_Capability__featureSetCombinations {
+               A_SEQUENCE_OF(struct FeatureSetCombination) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *featureSetCombinations;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct UE_NR_Capability__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_NR_Capability_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_NR_Capability;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_NR_Capability_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.c b/src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.c
new file mode 100644 (file)
index 0000000..2e21d3d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-NR-CapabilityAddFRX-Mode.h"
+
+#include "Phy-ParametersFRX-Diff.h"
+#include "MeasAndMobParametersFRX-Diff.h"
+asn_TYPE_member_t asn_MBR_UE_NR_CapabilityAddFRX_Mode_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UE_NR_CapabilityAddFRX_Mode, phy_ParametersFRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersFRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersFRX-Diff"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_NR_CapabilityAddFRX_Mode, measAndMobParametersFRX_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersFRX_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersFRX-Diff"
+               },
+};
+static const int asn_MAP_UE_NR_CapabilityAddFRX_Mode_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_NR_CapabilityAddFRX_Mode_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* phy-ParametersFRX-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* measAndMobParametersFRX-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_NR_CapabilityAddFRX_Mode_specs_1 = {
+       sizeof(struct UE_NR_CapabilityAddFRX_Mode),
+       offsetof(struct UE_NR_CapabilityAddFRX_Mode, _asn_ctx),
+       asn_MAP_UE_NR_CapabilityAddFRX_Mode_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UE_NR_CapabilityAddFRX_Mode_oms_1,      /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_NR_CapabilityAddFRX_Mode = {
+       "UE-NR-CapabilityAddFRX-Mode",
+       "UE-NR-CapabilityAddFRX-Mode",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1,
+       sizeof(asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1)
+               /sizeof(asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1[0]), /* 1 */
+       asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1)
+               /sizeof(asn_DEF_UE_NR_CapabilityAddFRX_Mode_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_NR_CapabilityAddFRX_Mode_1,
+       2,      /* Elements count */
+       &asn_SPC_UE_NR_CapabilityAddFRX_Mode_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.h b/src/codec_utils/RRC/UE-NR-CapabilityAddFRX-Mode.h
new file mode 100644 (file)
index 0000000..804f162
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_NR_CapabilityAddFRX_Mode_H_
+#define        _UE_NR_CapabilityAddFRX_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct Phy_ParametersFRX_Diff;
+struct MeasAndMobParametersFRX_Diff;
+
+/* UE-NR-CapabilityAddFRX-Mode */
+typedef struct UE_NR_CapabilityAddFRX_Mode {
+       struct Phy_ParametersFRX_Diff   *phy_ParametersFRX_Diff;        /* OPTIONAL */
+       struct MeasAndMobParametersFRX_Diff     *measAndMobParametersFRX_Diff;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_NR_CapabilityAddFRX_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_NR_CapabilityAddFRX_Mode;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_NR_CapabilityAddFRX_Mode_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_NR_CapabilityAddFRX_Mode_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_NR_CapabilityAddFRX_Mode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.c b/src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.c
new file mode 100644 (file)
index 0000000..eafb83f
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-NR-CapabilityAddXDD-Mode.h"
+
+#include "Phy-ParametersXDD-Diff.h"
+#include "MAC-ParametersXDD-Diff.h"
+#include "MeasAndMobParametersXDD-Diff.h"
+asn_TYPE_member_t asn_MBR_UE_NR_CapabilityAddXDD_Mode_1[] = {
+       { ATF_POINTER, 3, offsetof(struct UE_NR_CapabilityAddXDD_Mode, phy_ParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Phy_ParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "phy-ParametersXDD-Diff"
+               },
+       { ATF_POINTER, 2, offsetof(struct UE_NR_CapabilityAddXDD_Mode, mac_ParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MAC_ParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "mac-ParametersXDD-Diff"
+               },
+       { ATF_POINTER, 1, offsetof(struct UE_NR_CapabilityAddXDD_Mode, measAndMobParametersXDD_Diff),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasAndMobParametersXDD_Diff,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measAndMobParametersXDD-Diff"
+               },
+};
+static const int asn_MAP_UE_NR_CapabilityAddXDD_Mode_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_NR_CapabilityAddXDD_Mode_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* phy-ParametersXDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mac-ParametersXDD-Diff */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* measAndMobParametersXDD-Diff */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_NR_CapabilityAddXDD_Mode_specs_1 = {
+       sizeof(struct UE_NR_CapabilityAddXDD_Mode),
+       offsetof(struct UE_NR_CapabilityAddXDD_Mode, _asn_ctx),
+       asn_MAP_UE_NR_CapabilityAddXDD_Mode_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_UE_NR_CapabilityAddXDD_Mode_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_NR_CapabilityAddXDD_Mode = {
+       "UE-NR-CapabilityAddXDD-Mode",
+       "UE-NR-CapabilityAddXDD-Mode",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1,
+       sizeof(asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1)
+               /sizeof(asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1[0]), /* 1 */
+       asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1)
+               /sizeof(asn_DEF_UE_NR_CapabilityAddXDD_Mode_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_NR_CapabilityAddXDD_Mode_1,
+       3,      /* Elements count */
+       &asn_SPC_UE_NR_CapabilityAddXDD_Mode_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.h b/src/codec_utils/RRC/UE-NR-CapabilityAddXDD-Mode.h
new file mode 100644 (file)
index 0000000..6f8e436
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_NR_CapabilityAddXDD_Mode_H_
+#define        _UE_NR_CapabilityAddXDD_Mode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct Phy_ParametersXDD_Diff;
+struct MAC_ParametersXDD_Diff;
+struct MeasAndMobParametersXDD_Diff;
+
+/* UE-NR-CapabilityAddXDD-Mode */
+typedef struct UE_NR_CapabilityAddXDD_Mode {
+       struct Phy_ParametersXDD_Diff   *phy_ParametersXDD_Diff;        /* OPTIONAL */
+       struct MAC_ParametersXDD_Diff   *mac_ParametersXDD_Diff;        /* OPTIONAL */
+       struct MeasAndMobParametersXDD_Diff     *measAndMobParametersXDD_Diff;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_NR_CapabilityAddXDD_Mode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UE_NR_CapabilityAddXDD_Mode;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_NR_CapabilityAddXDD_Mode_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_NR_CapabilityAddXDD_Mode_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_NR_CapabilityAddXDD_Mode_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UE-TimersAndConstants.c b/src/codec_utils/RRC/UE-TimersAndConstants.c
new file mode 100644 (file)
index 0000000..cdbbc14
--- /dev/null
@@ -0,0 +1,533 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UE-TimersAndConstants.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 asn_oer_constraints_t asn_OER_type_t300_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t300_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t301_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t301_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t310_constr_20 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t310_constr_20 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n310_constr_28 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n310_constr_28 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t311_constr_37 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t311_constr_37 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_n311_constr_45 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_n311_constr_45 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_t319_constr_54 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_t319_constr_54 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_t300_value2enum_2[] = {
+       { 0,    5,      "ms100" },
+       { 1,    5,      "ms200" },
+       { 2,    5,      "ms300" },
+       { 3,    5,      "ms400" },
+       { 4,    5,      "ms600" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms1500" },
+       { 7,    6,      "ms2000" }
+};
+static const unsigned int asn_MAP_t300_enum2value_2[] = {
+       0,      /* ms100(0) */
+       5,      /* ms1000(5) */
+       6,      /* ms1500(6) */
+       1,      /* ms200(1) */
+       7,      /* ms2000(7) */
+       2,      /* ms300(2) */
+       3,      /* ms400(3) */
+       4       /* ms600(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t300_specs_2 = {
+       asn_MAP_t300_value2enum_2,      /* "tag" => N; sorted by tag */
+       asn_MAP_t300_enum2value_2,      /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t300_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_t300_2 = {
+       "t300",
+       "t300",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t300_tags_2,
+       sizeof(asn_DEF_t300_tags_2)
+               /sizeof(asn_DEF_t300_tags_2[0]) - 1, /* 1 */
+       asn_DEF_t300_tags_2,    /* Same as above */
+       sizeof(asn_DEF_t300_tags_2)
+               /sizeof(asn_DEF_t300_tags_2[0]), /* 2 */
+       { &asn_OER_type_t300_constr_2, &asn_PER_type_t300_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t300_specs_2   /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t301_value2enum_11[] = {
+       { 0,    5,      "ms100" },
+       { 1,    5,      "ms200" },
+       { 2,    5,      "ms300" },
+       { 3,    5,      "ms400" },
+       { 4,    5,      "ms600" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms1500" },
+       { 7,    6,      "ms2000" }
+};
+static const unsigned int asn_MAP_t301_enum2value_11[] = {
+       0,      /* ms100(0) */
+       5,      /* ms1000(5) */
+       6,      /* ms1500(6) */
+       1,      /* ms200(1) */
+       7,      /* ms2000(7) */
+       2,      /* ms300(2) */
+       3,      /* ms400(3) */
+       4       /* ms600(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t301_specs_11 = {
+       asn_MAP_t301_value2enum_11,     /* "tag" => N; sorted by tag */
+       asn_MAP_t301_enum2value_11,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t301_tags_11[] = {
+       (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_t301_11 = {
+       "t301",
+       "t301",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t301_tags_11,
+       sizeof(asn_DEF_t301_tags_11)
+               /sizeof(asn_DEF_t301_tags_11[0]) - 1, /* 1 */
+       asn_DEF_t301_tags_11,   /* Same as above */
+       sizeof(asn_DEF_t301_tags_11)
+               /sizeof(asn_DEF_t301_tags_11[0]), /* 2 */
+       { &asn_OER_type_t301_constr_11, &asn_PER_type_t301_constr_11, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t301_specs_11  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t310_value2enum_20[] = {
+       { 0,    3,      "ms0" },
+       { 1,    4,      "ms50" },
+       { 2,    5,      "ms100" },
+       { 3,    5,      "ms200" },
+       { 4,    5,      "ms500" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms2000" }
+};
+static const unsigned int asn_MAP_t310_enum2value_20[] = {
+       0,      /* ms0(0) */
+       2,      /* ms100(2) */
+       5,      /* ms1000(5) */
+       3,      /* ms200(3) */
+       6,      /* ms2000(6) */
+       1,      /* ms50(1) */
+       4       /* ms500(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t310_specs_20 = {
+       asn_MAP_t310_value2enum_20,     /* "tag" => N; sorted by tag */
+       asn_MAP_t310_enum2value_20,     /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t310_tags_20[] = {
+       (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_t310_20 = {
+       "t310",
+       "t310",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t310_tags_20,
+       sizeof(asn_DEF_t310_tags_20)
+               /sizeof(asn_DEF_t310_tags_20[0]) - 1, /* 1 */
+       asn_DEF_t310_tags_20,   /* Same as above */
+       sizeof(asn_DEF_t310_tags_20)
+               /sizeof(asn_DEF_t310_tags_20[0]), /* 2 */
+       { &asn_OER_type_t310_constr_20, &asn_PER_type_t310_constr_20, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t310_specs_20  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_n310_value2enum_28[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" },
+       { 4,    2,      "n6" },
+       { 5,    2,      "n8" },
+       { 6,    3,      "n10" },
+       { 7,    3,      "n20" }
+};
+static const unsigned int asn_MAP_n310_enum2value_28[] = {
+       0,      /* n1(0) */
+       6,      /* n10(6) */
+       1,      /* n2(1) */
+       7,      /* n20(7) */
+       2,      /* n3(2) */
+       3,      /* n4(3) */
+       4,      /* n6(4) */
+       5       /* n8(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n310_specs_28 = {
+       asn_MAP_n310_value2enum_28,     /* "tag" => N; sorted by tag */
+       asn_MAP_n310_enum2value_28,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n310_tags_28[] = {
+       (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_n310_28 = {
+       "n310",
+       "n310",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n310_tags_28,
+       sizeof(asn_DEF_n310_tags_28)
+               /sizeof(asn_DEF_n310_tags_28[0]) - 1, /* 1 */
+       asn_DEF_n310_tags_28,   /* Same as above */
+       sizeof(asn_DEF_n310_tags_28)
+               /sizeof(asn_DEF_n310_tags_28[0]), /* 2 */
+       { &asn_OER_type_n310_constr_28, &asn_PER_type_n310_constr_28, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n310_specs_28  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t311_value2enum_37[] = {
+       { 0,    6,      "ms1000" },
+       { 1,    6,      "ms3000" },
+       { 2,    6,      "ms5000" },
+       { 3,    7,      "ms10000" },
+       { 4,    7,      "ms15000" },
+       { 5,    7,      "ms20000" },
+       { 6,    7,      "ms30000" }
+};
+static const unsigned int asn_MAP_t311_enum2value_37[] = {
+       0,      /* ms1000(0) */
+       3,      /* ms10000(3) */
+       4,      /* ms15000(4) */
+       5,      /* ms20000(5) */
+       1,      /* ms3000(1) */
+       6,      /* ms30000(6) */
+       2       /* ms5000(2) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t311_specs_37 = {
+       asn_MAP_t311_value2enum_37,     /* "tag" => N; sorted by tag */
+       asn_MAP_t311_enum2value_37,     /* N => "tag"; sorted by N */
+       7,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t311_tags_37[] = {
+       (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_t311_37 = {
+       "t311",
+       "t311",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t311_tags_37,
+       sizeof(asn_DEF_t311_tags_37)
+               /sizeof(asn_DEF_t311_tags_37[0]) - 1, /* 1 */
+       asn_DEF_t311_tags_37,   /* Same as above */
+       sizeof(asn_DEF_t311_tags_37)
+               /sizeof(asn_DEF_t311_tags_37[0]), /* 2 */
+       { &asn_OER_type_t311_constr_37, &asn_PER_type_t311_constr_37, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t311_specs_37  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_n311_value2enum_45[] = {
+       { 0,    2,      "n1" },
+       { 1,    2,      "n2" },
+       { 2,    2,      "n3" },
+       { 3,    2,      "n4" },
+       { 4,    2,      "n5" },
+       { 5,    2,      "n6" },
+       { 6,    2,      "n8" },
+       { 7,    3,      "n10" }
+};
+static const unsigned int asn_MAP_n311_enum2value_45[] = {
+       0,      /* n1(0) */
+       7,      /* n10(7) */
+       1,      /* n2(1) */
+       2,      /* n3(2) */
+       3,      /* n4(3) */
+       4,      /* n5(4) */
+       5,      /* n6(5) */
+       6       /* n8(6) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_n311_specs_45 = {
+       asn_MAP_n311_value2enum_45,     /* "tag" => N; sorted by tag */
+       asn_MAP_n311_enum2value_45,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_n311_tags_45[] = {
+       (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_n311_45 = {
+       "n311",
+       "n311",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_n311_tags_45,
+       sizeof(asn_DEF_n311_tags_45)
+               /sizeof(asn_DEF_n311_tags_45[0]) - 1, /* 1 */
+       asn_DEF_n311_tags_45,   /* Same as above */
+       sizeof(asn_DEF_n311_tags_45)
+               /sizeof(asn_DEF_n311_tags_45[0]), /* 2 */
+       { &asn_OER_type_n311_constr_45, &asn_PER_type_n311_constr_45, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_n311_specs_45  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_t319_value2enum_54[] = {
+       { 0,    5,      "ms100" },
+       { 1,    5,      "ms200" },
+       { 2,    5,      "ms300" },
+       { 3,    5,      "ms400" },
+       { 4,    5,      "ms600" },
+       { 5,    6,      "ms1000" },
+       { 6,    6,      "ms1500" },
+       { 7,    6,      "ms2000" }
+};
+static const unsigned int asn_MAP_t319_enum2value_54[] = {
+       0,      /* ms100(0) */
+       5,      /* ms1000(5) */
+       6,      /* ms1500(6) */
+       1,      /* ms200(1) */
+       7,      /* ms2000(7) */
+       2,      /* ms300(2) */
+       3,      /* ms400(3) */
+       4       /* ms600(4) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_t319_specs_54 = {
+       asn_MAP_t319_value2enum_54,     /* "tag" => N; sorted by tag */
+       asn_MAP_t319_enum2value_54,     /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_t319_tags_54[] = {
+       (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_t319_54 = {
+       "t319",
+       "t319",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_t319_tags_54,
+       sizeof(asn_DEF_t319_tags_54)
+               /sizeof(asn_DEF_t319_tags_54[0]) - 1, /* 1 */
+       asn_DEF_t319_tags_54,   /* Same as above */
+       sizeof(asn_DEF_t319_tags_54)
+               /sizeof(asn_DEF_t319_tags_54[0]), /* 2 */
+       { &asn_OER_type_t319_constr_54, &asn_PER_type_t319_constr_54, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_t319_specs_54  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UE_TimersAndConstants_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t300),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t300_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t300"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t301),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t301_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t301"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t310),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t310_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t310"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, n310),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n310_28,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n310"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t311),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t311_37,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t311"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, n311),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_n311_45,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "n311"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t319),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_t319_54,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t319"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UE_TimersAndConstants_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UE_TimersAndConstants_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* t300 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t301 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* t310 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* n310 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* t311 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* n311 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* t319 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UE_TimersAndConstants_specs_1 = {
+       sizeof(struct UE_TimersAndConstants),
+       offsetof(struct UE_TimersAndConstants, _asn_ctx),
+       asn_MAP_UE_TimersAndConstants_tag2el_1,
+       7,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       7,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UE_TimersAndConstants = {
+       "UE-TimersAndConstants",
+       "UE-TimersAndConstants",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UE_TimersAndConstants_tags_1,
+       sizeof(asn_DEF_UE_TimersAndConstants_tags_1)
+               /sizeof(asn_DEF_UE_TimersAndConstants_tags_1[0]), /* 1 */
+       asn_DEF_UE_TimersAndConstants_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UE_TimersAndConstants_tags_1)
+               /sizeof(asn_DEF_UE_TimersAndConstants_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UE_TimersAndConstants_1,
+       7,      /* Elements count */
+       &asn_SPC_UE_TimersAndConstants_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UE-TimersAndConstants.h b/src/codec_utils/RRC/UE-TimersAndConstants.h
new file mode 100644 (file)
index 0000000..f81031e
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UE_TimersAndConstants_H_
+#define        _UE_TimersAndConstants_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UE_TimersAndConstants__t300 {
+       UE_TimersAndConstants__t300_ms100       = 0,
+       UE_TimersAndConstants__t300_ms200       = 1,
+       UE_TimersAndConstants__t300_ms300       = 2,
+       UE_TimersAndConstants__t300_ms400       = 3,
+       UE_TimersAndConstants__t300_ms600       = 4,
+       UE_TimersAndConstants__t300_ms1000      = 5,
+       UE_TimersAndConstants__t300_ms1500      = 6,
+       UE_TimersAndConstants__t300_ms2000      = 7
+} e_UE_TimersAndConstants__t300;
+typedef enum UE_TimersAndConstants__t301 {
+       UE_TimersAndConstants__t301_ms100       = 0,
+       UE_TimersAndConstants__t301_ms200       = 1,
+       UE_TimersAndConstants__t301_ms300       = 2,
+       UE_TimersAndConstants__t301_ms400       = 3,
+       UE_TimersAndConstants__t301_ms600       = 4,
+       UE_TimersAndConstants__t301_ms1000      = 5,
+       UE_TimersAndConstants__t301_ms1500      = 6,
+       UE_TimersAndConstants__t301_ms2000      = 7
+} e_UE_TimersAndConstants__t301;
+typedef enum UE_TimersAndConstants__t310 {
+       UE_TimersAndConstants__t310_ms0 = 0,
+       UE_TimersAndConstants__t310_ms50        = 1,
+       UE_TimersAndConstants__t310_ms100       = 2,
+       UE_TimersAndConstants__t310_ms200       = 3,
+       UE_TimersAndConstants__t310_ms500       = 4,
+       UE_TimersAndConstants__t310_ms1000      = 5,
+       UE_TimersAndConstants__t310_ms2000      = 6
+} e_UE_TimersAndConstants__t310;
+typedef enum UE_TimersAndConstants__n310 {
+       UE_TimersAndConstants__n310_n1  = 0,
+       UE_TimersAndConstants__n310_n2  = 1,
+       UE_TimersAndConstants__n310_n3  = 2,
+       UE_TimersAndConstants__n310_n4  = 3,
+       UE_TimersAndConstants__n310_n6  = 4,
+       UE_TimersAndConstants__n310_n8  = 5,
+       UE_TimersAndConstants__n310_n10 = 6,
+       UE_TimersAndConstants__n310_n20 = 7
+} e_UE_TimersAndConstants__n310;
+typedef enum UE_TimersAndConstants__t311 {
+       UE_TimersAndConstants__t311_ms1000      = 0,
+       UE_TimersAndConstants__t311_ms3000      = 1,
+       UE_TimersAndConstants__t311_ms5000      = 2,
+       UE_TimersAndConstants__t311_ms10000     = 3,
+       UE_TimersAndConstants__t311_ms15000     = 4,
+       UE_TimersAndConstants__t311_ms20000     = 5,
+       UE_TimersAndConstants__t311_ms30000     = 6
+} e_UE_TimersAndConstants__t311;
+typedef enum UE_TimersAndConstants__n311 {
+       UE_TimersAndConstants__n311_n1  = 0,
+       UE_TimersAndConstants__n311_n2  = 1,
+       UE_TimersAndConstants__n311_n3  = 2,
+       UE_TimersAndConstants__n311_n4  = 3,
+       UE_TimersAndConstants__n311_n5  = 4,
+       UE_TimersAndConstants__n311_n6  = 5,
+       UE_TimersAndConstants__n311_n8  = 6,
+       UE_TimersAndConstants__n311_n10 = 7
+} e_UE_TimersAndConstants__n311;
+typedef enum UE_TimersAndConstants__t319 {
+       UE_TimersAndConstants__t319_ms100       = 0,
+       UE_TimersAndConstants__t319_ms200       = 1,
+       UE_TimersAndConstants__t319_ms300       = 2,
+       UE_TimersAndConstants__t319_ms400       = 3,
+       UE_TimersAndConstants__t319_ms600       = 4,
+       UE_TimersAndConstants__t319_ms1000      = 5,
+       UE_TimersAndConstants__t319_ms1500      = 6,
+       UE_TimersAndConstants__t319_ms2000      = 7
+} e_UE_TimersAndConstants__t319;
+
+/* UE-TimersAndConstants */
+typedef struct UE_TimersAndConstants {
+       long     t300;
+       long     t301;
+       long     t310;
+       long     n310;
+       long     t311;
+       long     n311;
+       long     t319;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UE_TimersAndConstants_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_t300_2;        // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t301_11;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t310_20;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_n310_28;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t311_37;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_n311_45;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_t319_54;       // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_UE_TimersAndConstants;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_TimersAndConstants_specs_1;
+extern asn_TYPE_member_t asn_MBR_UE_TimersAndConstants_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UE_TimersAndConstants_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UEAssistanceInformation-IEs.c b/src/codec_utils/RRC/UEAssistanceInformation-IEs.c
new file mode 100644 (file)
index 0000000..bd1baaf
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEAssistanceInformation-IEs.h"
+
+#include "DelayBudgetReport.h"
+#include "UEAssistanceInformation-v1540-IEs.h"
+asn_TYPE_member_t asn_MBR_UEAssistanceInformation_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct UEAssistanceInformation_IEs, delayBudgetReport),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_DelayBudgetReport,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "delayBudgetReport"
+               },
+       { ATF_POINTER, 2, offsetof(struct UEAssistanceInformation_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEAssistanceInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEAssistanceInformation_v1540_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UEAssistanceInformation_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_UEAssistanceInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEAssistanceInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* delayBudgetReport */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_IEs_specs_1 = {
+       sizeof(struct UEAssistanceInformation_IEs),
+       offsetof(struct UEAssistanceInformation_IEs, _asn_ctx),
+       asn_MAP_UEAssistanceInformation_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_UEAssistanceInformation_IEs_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEAssistanceInformation_IEs = {
+       "UEAssistanceInformation-IEs",
+       "UEAssistanceInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEAssistanceInformation_IEs_tags_1,
+       sizeof(asn_DEF_UEAssistanceInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UEAssistanceInformation_IEs_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UEAssistanceInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEAssistanceInformation_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_UEAssistanceInformation_IEs_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UEAssistanceInformation-IEs.h b/src/codec_utils/RRC/UEAssistanceInformation-IEs.h
new file mode 100644 (file)
index 0000000..8fd76a7
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEAssistanceInformation_IEs_H_
+#define        _UEAssistanceInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct DelayBudgetReport;
+struct UEAssistanceInformation_v1540_IEs;
+
+/* UEAssistanceInformation-IEs */
+typedef struct UEAssistanceInformation_IEs {
+       struct DelayBudgetReport        *delayBudgetReport;     /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct UEAssistanceInformation_v1540_IEs        *nonCriticalExtension;  /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEAssistanceInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEAssistanceInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEAssistanceInformation_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEAssistanceInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.c b/src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.c
new file mode 100644 (file)
index 0000000..efa1536
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEAssistanceInformation-v1540-IEs.h"
+
+#include "OverheatingAssistance.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct UEAssistanceInformation_v1540_IEs__nonCriticalExtension),
+       offsetof(struct UEAssistanceInformation_v1540_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UEAssistanceInformation_v1540_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UEAssistanceInformation_v1540_IEs, overheatingAssistance),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OverheatingAssistance,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "overheatingAssistance"
+               },
+       { ATF_POINTER, 1, offsetof(struct UEAssistanceInformation_v1540_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UEAssistanceInformation_v1540_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEAssistanceInformation_v1540_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* overheatingAssistance */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_v1540_IEs_specs_1 = {
+       sizeof(struct UEAssistanceInformation_v1540_IEs),
+       offsetof(struct UEAssistanceInformation_v1540_IEs, _asn_ctx),
+       asn_MAP_UEAssistanceInformation_v1540_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UEAssistanceInformation_v1540_IEs_oms_1,        /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UEAssistanceInformation_v1540_IEs = {
+       "UEAssistanceInformation-v1540-IEs",
+       "UEAssistanceInformation-v1540-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1,
+       sizeof(asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_v1540_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEAssistanceInformation_v1540_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_UEAssistanceInformation_v1540_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.h b/src/codec_utils/RRC/UEAssistanceInformation-v1540-IEs.h
new file mode 100644 (file)
index 0000000..73c431a
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEAssistanceInformation_v1540_IEs_H_
+#define        _UEAssistanceInformation_v1540_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct OverheatingAssistance;
+
+/* UEAssistanceInformation-v1540-IEs */
+typedef struct UEAssistanceInformation_v1540_IEs {
+       struct OverheatingAssistance    *overheatingAssistance; /* OPTIONAL */
+       struct UEAssistanceInformation_v1540_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEAssistanceInformation_v1540_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEAssistanceInformation_v1540_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_v1540_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEAssistanceInformation_v1540_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEAssistanceInformation_v1540_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UEAssistanceInformation.c b/src/codec_utils/RRC/UEAssistanceInformation.c
new file mode 100644 (file)
index 0000000..5ef5450
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UEAssistanceInformation.h"
+
+#include "UEAssistanceInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct UEAssistanceInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct UEAssistanceInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UEAssistanceInformation__criticalExtensions, choice.ueAssistanceInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEAssistanceInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueAssistanceInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct UEAssistanceInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueAssistanceInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct UEAssistanceInformation__criticalExtensions),
+       offsetof(struct UEAssistanceInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct UEAssistanceInformation__criticalExtensions, present),
+       sizeof(((struct UEAssistanceInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UEAssistanceInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UEAssistanceInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UEAssistanceInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UEAssistanceInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_specs_1 = {
+       sizeof(struct UEAssistanceInformation),
+       offsetof(struct UEAssistanceInformation, _asn_ctx),
+       asn_MAP_UEAssistanceInformation_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_UEAssistanceInformation = {
+       "UEAssistanceInformation",
+       "UEAssistanceInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UEAssistanceInformation_tags_1,
+       sizeof(asn_DEF_UEAssistanceInformation_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_tags_1[0]), /* 1 */
+       asn_DEF_UEAssistanceInformation_tags_1, /* Same as above */
+       sizeof(asn_DEF_UEAssistanceInformation_tags_1)
+               /sizeof(asn_DEF_UEAssistanceInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UEAssistanceInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_UEAssistanceInformation_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UEAssistanceInformation.h b/src/codec_utils/RRC/UEAssistanceInformation.h
new file mode 100644 (file)
index 0000000..96d4d54
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UEAssistanceInformation_H_
+#define        _UEAssistanceInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UEAssistanceInformation__criticalExtensions_PR {
+       UEAssistanceInformation__criticalExtensions_PR_NOTHING, /* No components present */
+       UEAssistanceInformation__criticalExtensions_PR_ueAssistanceInformation,
+       UEAssistanceInformation__criticalExtensions_PR_criticalExtensionsFuture
+} UEAssistanceInformation__criticalExtensions_PR;
+
+/* Forward declarations */
+struct UEAssistanceInformation_IEs;
+
+/* UEAssistanceInformation */
+typedef struct UEAssistanceInformation {
+       struct UEAssistanceInformation__criticalExtensions {
+               UEAssistanceInformation__criticalExtensions_PR present;
+               union UEAssistanceInformation__criticalExtensions_u {
+                       struct UEAssistanceInformation_IEs      *ueAssistanceInformation;
+                       struct UEAssistanceInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UEAssistanceInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UEAssistanceInformation;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEAssistanceInformation_specs_1;
+extern asn_TYPE_member_t asn_MBR_UEAssistanceInformation_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UEAssistanceInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UECapabilityEnquiry-IEs.c b/src/codec_utils/RRC/UECapabilityEnquiry-IEs.c
new file mode 100644 (file)
index 0000000..4f50e42
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UECapabilityEnquiry-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct UECapabilityEnquiry_IEs__nonCriticalExtension),
+       offsetof(struct UECapabilityEnquiry_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UECapabilityEnquiry_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UECapabilityEnquiry_IEs, ue_CapabilityRAT_RequestList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_CapabilityRAT_RequestList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-CapabilityRAT-RequestList"
+               },
+       { ATF_POINTER, 2, offsetof(struct UECapabilityEnquiry_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UECapabilityEnquiry_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UECapabilityEnquiry_IEs_oms_1[] = { 1, 2 };
+static const ber_tlv_tag_t asn_DEF_UECapabilityEnquiry_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UECapabilityEnquiry_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-CapabilityRAT-RequestList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UECapabilityEnquiry_IEs_specs_1 = {
+       sizeof(struct UECapabilityEnquiry_IEs),
+       offsetof(struct UECapabilityEnquiry_IEs, _asn_ctx),
+       asn_MAP_UECapabilityEnquiry_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_UECapabilityEnquiry_IEs_oms_1,  /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UECapabilityEnquiry_IEs = {
+       "UECapabilityEnquiry-IEs",
+       "UECapabilityEnquiry-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UECapabilityEnquiry_IEs_tags_1,
+       sizeof(asn_DEF_UECapabilityEnquiry_IEs_tags_1)
+               /sizeof(asn_DEF_UECapabilityEnquiry_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UECapabilityEnquiry_IEs_tags_1, /* Same as above */
+       sizeof(asn_DEF_UECapabilityEnquiry_IEs_tags_1)
+               /sizeof(asn_DEF_UECapabilityEnquiry_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UECapabilityEnquiry_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_UECapabilityEnquiry_IEs_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UECapabilityEnquiry-IEs.h b/src/codec_utils/RRC/UECapabilityEnquiry-IEs.h
new file mode 100644 (file)
index 0000000..0b340f7
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UECapabilityEnquiry_IEs_H_
+#define        _UECapabilityEnquiry_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UE-CapabilityRAT-RequestList.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UECapabilityEnquiry-IEs */
+typedef struct UECapabilityEnquiry_IEs {
+       UE_CapabilityRAT_RequestList_t   ue_CapabilityRAT_RequestList;
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct UECapabilityEnquiry_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UECapabilityEnquiry_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UECapabilityEnquiry_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityEnquiry_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UECapabilityEnquiry_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UECapabilityEnquiry_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UECapabilityEnquiry.c b/src/codec_utils/RRC/UECapabilityEnquiry.c
new file mode 100644 (file)
index 0000000..43d95ca
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UECapabilityEnquiry.h"
+
+#include "UECapabilityEnquiry-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct UECapabilityEnquiry__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct UECapabilityEnquiry__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct UECapabilityEnquiry__criticalExtensions, choice.ueCapabilityEnquiry),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UECapabilityEnquiry_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueCapabilityEnquiry"
+               },
+       { ATF_POINTER, 0, offsetof(struct UECapabilityEnquiry__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueCapabilityEnquiry */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct UECapabilityEnquiry__criticalExtensions),
+       offsetof(struct UECapabilityEnquiry__criticalExtensions, _asn_ctx),
+       offsetof(struct UECapabilityEnquiry__criticalExtensions, present),
+       sizeof(((struct UECapabilityEnquiry__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UECapabilityEnquiry_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UECapabilityEnquiry, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UECapabilityEnquiry, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UECapabilityEnquiry_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UECapabilityEnquiry_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UECapabilityEnquiry_specs_1 = {
+       sizeof(struct UECapabilityEnquiry),
+       offsetof(struct UECapabilityEnquiry, _asn_ctx),
+       asn_MAP_UECapabilityEnquiry_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UECapabilityEnquiry = {
+       "UECapabilityEnquiry",
+       "UECapabilityEnquiry",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UECapabilityEnquiry_tags_1,
+       sizeof(asn_DEF_UECapabilityEnquiry_tags_1)
+               /sizeof(asn_DEF_UECapabilityEnquiry_tags_1[0]), /* 1 */
+       asn_DEF_UECapabilityEnquiry_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UECapabilityEnquiry_tags_1)
+               /sizeof(asn_DEF_UECapabilityEnquiry_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UECapabilityEnquiry_1,
+       2,      /* Elements count */
+       &asn_SPC_UECapabilityEnquiry_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UECapabilityEnquiry.h b/src/codec_utils/RRC/UECapabilityEnquiry.h
new file mode 100644 (file)
index 0000000..b240329
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UECapabilityEnquiry_H_
+#define        _UECapabilityEnquiry_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UECapabilityEnquiry__criticalExtensions_PR {
+       UECapabilityEnquiry__criticalExtensions_PR_NOTHING,     /* No components present */
+       UECapabilityEnquiry__criticalExtensions_PR_ueCapabilityEnquiry,
+       UECapabilityEnquiry__criticalExtensions_PR_criticalExtensionsFuture
+} UECapabilityEnquiry__criticalExtensions_PR;
+
+/* Forward declarations */
+struct UECapabilityEnquiry_IEs;
+
+/* UECapabilityEnquiry */
+typedef struct UECapabilityEnquiry {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct UECapabilityEnquiry__criticalExtensions {
+               UECapabilityEnquiry__criticalExtensions_PR present;
+               union UECapabilityEnquiry__criticalExtensions_u {
+                       struct UECapabilityEnquiry_IEs  *ueCapabilityEnquiry;
+                       struct UECapabilityEnquiry__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UECapabilityEnquiry_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UECapabilityEnquiry;
+extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityEnquiry_specs_1;
+extern asn_TYPE_member_t asn_MBR_UECapabilityEnquiry_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UECapabilityEnquiry_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UECapabilityInformation-IEs.c b/src/codec_utils/RRC/UECapabilityInformation-IEs.c
new file mode 100644 (file)
index 0000000..359bb14
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UECapabilityInformation-IEs.h"
+
+#include "UE-CapabilityRAT-ContainerList.h"
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct UECapabilityInformation_IEs__nonCriticalExtension),
+       offsetof(struct UECapabilityInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UECapabilityInformation_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct UECapabilityInformation_IEs, ue_CapabilityRAT_ContainerList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UE_CapabilityRAT_ContainerList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ue-CapabilityRAT-ContainerList"
+               },
+       { ATF_POINTER, 2, offsetof(struct UECapabilityInformation_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct UECapabilityInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UECapabilityInformation_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_UECapabilityInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UECapabilityInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-CapabilityRAT-ContainerList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInformation_IEs_specs_1 = {
+       sizeof(struct UECapabilityInformation_IEs),
+       offsetof(struct UECapabilityInformation_IEs, _asn_ctx),
+       asn_MAP_UECapabilityInformation_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_UECapabilityInformation_IEs_oms_1,      /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UECapabilityInformation_IEs = {
+       "UECapabilityInformation-IEs",
+       "UECapabilityInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UECapabilityInformation_IEs_tags_1,
+       sizeof(asn_DEF_UECapabilityInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UECapabilityInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UECapabilityInformation_IEs_tags_1,     /* Same as above */
+       sizeof(asn_DEF_UECapabilityInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UECapabilityInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UECapabilityInformation_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_UECapabilityInformation_IEs_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UECapabilityInformation-IEs.h b/src/codec_utils/RRC/UECapabilityInformation-IEs.h
new file mode 100644 (file)
index 0000000..2fb769c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UECapabilityInformation_IEs_H_
+#define        _UECapabilityInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UE_CapabilityRAT_ContainerList;
+
+/* UECapabilityInformation-IEs */
+typedef struct UECapabilityInformation_IEs {
+       struct UE_CapabilityRAT_ContainerList   *ue_CapabilityRAT_ContainerList;        /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct UECapabilityInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UECapabilityInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UECapabilityInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UECapabilityInformation_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UECapabilityInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UECapabilityInformation.c b/src/codec_utils/RRC/UECapabilityInformation.c
new file mode 100644 (file)
index 0000000..5b450df
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UECapabilityInformation.h"
+
+#include "UECapabilityInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_5 = {
+       sizeof(struct UECapabilityInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct UECapabilityInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_5 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_5,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_5,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_5)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_5[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_5       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_3[] = {
+       { ATF_POINTER, 0, offsetof(struct UECapabilityInformation__criticalExtensions, choice.ueCapabilityInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UECapabilityInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueCapabilityInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct UECapabilityInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_5,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueCapabilityInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_3 = {
+       sizeof(struct UECapabilityInformation__criticalExtensions),
+       offsetof(struct UECapabilityInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct UECapabilityInformation__criticalExtensions, present),
+       sizeof(((struct UECapabilityInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_3,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_3 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_3, &asn_PER_type_criticalExtensions_constr_3, CHOICE_constraint },
+       asn_MBR_criticalExtensions_3,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_3     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UECapabilityInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UECapabilityInformation, rrc_TransactionIdentifier),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRC_TransactionIdentifier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrc-TransactionIdentifier"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UECapabilityInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UECapabilityInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UECapabilityInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrc-TransactionIdentifier */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInformation_specs_1 = {
+       sizeof(struct UECapabilityInformation),
+       offsetof(struct UECapabilityInformation, _asn_ctx),
+       asn_MAP_UECapabilityInformation_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UECapabilityInformation = {
+       "UECapabilityInformation",
+       "UECapabilityInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UECapabilityInformation_tags_1,
+       sizeof(asn_DEF_UECapabilityInformation_tags_1)
+               /sizeof(asn_DEF_UECapabilityInformation_tags_1[0]), /* 1 */
+       asn_DEF_UECapabilityInformation_tags_1, /* Same as above */
+       sizeof(asn_DEF_UECapabilityInformation_tags_1)
+               /sizeof(asn_DEF_UECapabilityInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UECapabilityInformation_1,
+       2,      /* Elements count */
+       &asn_SPC_UECapabilityInformation_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UECapabilityInformation.h b/src/codec_utils/RRC/UECapabilityInformation.h
new file mode 100644 (file)
index 0000000..8b9959f
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UECapabilityInformation_H_
+#define        _UECapabilityInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RRC-TransactionIdentifier.h"
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UECapabilityInformation__criticalExtensions_PR {
+       UECapabilityInformation__criticalExtensions_PR_NOTHING, /* No components present */
+       UECapabilityInformation__criticalExtensions_PR_ueCapabilityInformation,
+       UECapabilityInformation__criticalExtensions_PR_criticalExtensionsFuture
+} UECapabilityInformation__criticalExtensions_PR;
+
+/* Forward declarations */
+struct UECapabilityInformation_IEs;
+
+/* UECapabilityInformation */
+typedef struct UECapabilityInformation {
+       RRC_TransactionIdentifier_t      rrc_TransactionIdentifier;
+       struct UECapabilityInformation__criticalExtensions {
+               UECapabilityInformation__criticalExtensions_PR present;
+               union UECapabilityInformation__criticalExtensions_u {
+                       struct UECapabilityInformation_IEs      *ueCapabilityInformation;
+                       struct UECapabilityInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UECapabilityInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UECapabilityInformation;
+extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInformation_specs_1;
+extern asn_TYPE_member_t asn_MBR_UECapabilityInformation_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UECapabilityInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.c b/src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.c
new file mode 100644 (file)
index 0000000..8e7b07f
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UERadioAccessCapabilityInformation-IEs.h"
+
+static int
+memb_ue_RadioAccessCapabilityInfo_constraint_1(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;
+       
+       if(!sptr) {
+               ASN__CTFAIL(app_key, td, sptr,
+                       "%s: value not given (%s:%d)",
+                       td->name, __FILE__, __LINE__);
+               return -1;
+       }
+       
+       
+       if(1 /* No applicable constraints whatsoever */) {
+               (void)st; /* Unused variable */
+               /* Nothing is here. See below */
+       }
+       
+       return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
+}
+
+static asn_oer_constraints_t asn_OER_memb_ue_RadioAccessCapabilityInfo_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(0..MAX)) */};
+static asn_per_constraints_t asn_PER_memb_ue_RadioAccessCapabilityInfo_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_SEMI_CONSTRAINED, -1, -1,  0,  0 }        /* (SIZE(0..MAX)) */,
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_3 = {
+       sizeof(struct UERadioAccessCapabilityInformation_IEs__nonCriticalExtension),
+       offsetof(struct UERadioAccessCapabilityInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_3 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_3,
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_3,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_3)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_3[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_3   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UERadioAccessCapabilityInformation_IEs_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation_IEs, ue_RadioAccessCapabilityInfo),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { &asn_OER_memb_ue_RadioAccessCapabilityInfo_constr_2, &asn_PER_memb_ue_RadioAccessCapabilityInfo_constr_2,  memb_ue_RadioAccessCapabilityInfo_constraint_1 },
+               0, 0, /* No default value */
+               "ue-RadioAccessCapabilityInfo"
+               },
+       { ATF_POINTER, 1, offsetof(struct UERadioAccessCapabilityInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UERadioAccessCapabilityInformation_IEs_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERadioAccessCapabilityInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ue-RadioAccessCapabilityInfo */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UERadioAccessCapabilityInformation_IEs_specs_1 = {
+       sizeof(struct UERadioAccessCapabilityInformation_IEs),
+       offsetof(struct UERadioAccessCapabilityInformation_IEs, _asn_ctx),
+       asn_MAP_UERadioAccessCapabilityInformation_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UERadioAccessCapabilityInformation_IEs_oms_1,   /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UERadioAccessCapabilityInformation_IEs = {
+       "UERadioAccessCapabilityInformation-IEs",
+       "UERadioAccessCapabilityInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1,
+       sizeof(asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1,  /* Same as above */
+       sizeof(asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UERadioAccessCapabilityInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UERadioAccessCapabilityInformation_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_UERadioAccessCapabilityInformation_IEs_specs_1 /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.h b/src/codec_utils/RRC/UERadioAccessCapabilityInformation-IEs.h
new file mode 100644 (file)
index 0000000..501ab76
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UERadioAccessCapabilityInformation_IEs_H_
+#define        _UERadioAccessCapabilityInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UERadioAccessCapabilityInformation-IEs */
+typedef struct UERadioAccessCapabilityInformation_IEs {
+       OCTET_STRING_t   ue_RadioAccessCapabilityInfo;
+       struct UERadioAccessCapabilityInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UERadioAccessCapabilityInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERadioAccessCapabilityInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UERadioAccessCapabilityInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UERadioAccessCapabilityInformation_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UERadioAccessCapabilityInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UERadioAccessCapabilityInformation.c b/src/codec_utils/RRC/UERadioAccessCapabilityInformation.c
new file mode 100644 (file)
index 0000000..a6e2746
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UERadioAccessCapabilityInformation.h"
+
+#include "UERadioAccessCapabilityInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.ueRadioAccessCapabilityInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UERadioAccessCapabilityInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueRadioAccessCapabilityInformation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare7),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare7"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare6),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare6"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare5),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare4),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueRadioAccessCapabilityInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare7 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare6 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* spare5 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* spare4 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1),
+       offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__c1, present),
+       sizeof(((struct UERadioAccessCapabilityInformation__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       8,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_12 = {
+       sizeof(struct UERadioAccessCapabilityInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_12 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_12,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_12)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_12[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_12,       /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_12)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_12[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_12      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct UERadioAccessCapabilityInformation__criticalExtensions),
+       offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct UERadioAccessCapabilityInformation__criticalExtensions, present),
+       sizeof(((struct UERadioAccessCapabilityInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UERadioAccessCapabilityInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioAccessCapabilityInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UERadioAccessCapabilityInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERadioAccessCapabilityInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UERadioAccessCapabilityInformation_specs_1 = {
+       sizeof(struct UERadioAccessCapabilityInformation),
+       offsetof(struct UERadioAccessCapabilityInformation, _asn_ctx),
+       asn_MAP_UERadioAccessCapabilityInformation_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_UERadioAccessCapabilityInformation = {
+       "UERadioAccessCapabilityInformation",
+       "UERadioAccessCapabilityInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UERadioAccessCapabilityInformation_tags_1,
+       sizeof(asn_DEF_UERadioAccessCapabilityInformation_tags_1)
+               /sizeof(asn_DEF_UERadioAccessCapabilityInformation_tags_1[0]), /* 1 */
+       asn_DEF_UERadioAccessCapabilityInformation_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UERadioAccessCapabilityInformation_tags_1)
+               /sizeof(asn_DEF_UERadioAccessCapabilityInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UERadioAccessCapabilityInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_UERadioAccessCapabilityInformation_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UERadioAccessCapabilityInformation.h b/src/codec_utils/RRC/UERadioAccessCapabilityInformation.h
new file mode 100644 (file)
index 0000000..0bcc32d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UERadioAccessCapabilityInformation_H_
+#define        _UERadioAccessCapabilityInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UERadioAccessCapabilityInformation__criticalExtensions_PR {
+       UERadioAccessCapabilityInformation__criticalExtensions_PR_NOTHING,      /* No components present */
+       UERadioAccessCapabilityInformation__criticalExtensions_PR_c1,
+       UERadioAccessCapabilityInformation__criticalExtensions_PR_criticalExtensionsFuture
+} UERadioAccessCapabilityInformation__criticalExtensions_PR;
+typedef enum UERadioAccessCapabilityInformation__criticalExtensions__c1_PR {
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_NOTHING,  /* No components present */
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_ueRadioAccessCapabilityInformation,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare7,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare6,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare5,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare4,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare3,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare2,
+       UERadioAccessCapabilityInformation__criticalExtensions__c1_PR_spare1
+} UERadioAccessCapabilityInformation__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct UERadioAccessCapabilityInformation_IEs;
+
+/* UERadioAccessCapabilityInformation */
+typedef struct UERadioAccessCapabilityInformation {
+       struct UERadioAccessCapabilityInformation__criticalExtensions {
+               UERadioAccessCapabilityInformation__criticalExtensions_PR present;
+               union UERadioAccessCapabilityInformation__criticalExtensions_u {
+                       struct UERadioAccessCapabilityInformation__criticalExtensions__c1 {
+                               UERadioAccessCapabilityInformation__criticalExtensions__c1_PR present;
+                               union UERadioAccessCapabilityInformation__criticalExtensions__c1_u {
+                                       struct UERadioAccessCapabilityInformation_IEs   *ueRadioAccessCapabilityInformation;
+                                       NULL_t   spare7;
+                                       NULL_t   spare6;
+                                       NULL_t   spare5;
+                                       NULL_t   spare4;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct UERadioAccessCapabilityInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UERadioAccessCapabilityInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERadioAccessCapabilityInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UERadioAccessCapabilityInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UERadioPagingInformation-IEs.c b/src/codec_utils/RRC/UERadioPagingInformation-IEs.c
new file mode 100644 (file)
index 0000000..a32f049
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UERadioPagingInformation-IEs.h"
+
+static int
+memb_supportedBandListNRForPaging_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 <= 1024)) {
+               /* 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_supportedBandListNRForPaging_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_type_supportedBandListNRForPaging_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_supportedBandListNRForPaging_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..1024)) */};
+static asn_per_constraints_t asn_PER_memb_supportedBandListNRForPaging_constr_2 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (SIZE(1..1024)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_supportedBandListNRForPaging_2[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_FreqBandIndicatorNR,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_supportedBandListNRForPaging_tags_2[] = {
+       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_supportedBandListNRForPaging_specs_2 = {
+       sizeof(struct UERadioPagingInformation_IEs__supportedBandListNRForPaging),
+       offsetof(struct UERadioPagingInformation_IEs__supportedBandListNRForPaging, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_supportedBandListNRForPaging_2 = {
+       "supportedBandListNRForPaging",
+       "supportedBandListNRForPaging",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_supportedBandListNRForPaging_tags_2,
+       sizeof(asn_DEF_supportedBandListNRForPaging_tags_2)
+               /sizeof(asn_DEF_supportedBandListNRForPaging_tags_2[0]) - 1, /* 1 */
+       asn_DEF_supportedBandListNRForPaging_tags_2,    /* Same as above */
+       sizeof(asn_DEF_supportedBandListNRForPaging_tags_2)
+               /sizeof(asn_DEF_supportedBandListNRForPaging_tags_2[0]), /* 2 */
+       { &asn_OER_type_supportedBandListNRForPaging_constr_2, &asn_PER_type_supportedBandListNRForPaging_constr_2, SEQUENCE_OF_constraint },
+       asn_MBR_supportedBandListNRForPaging_2,
+       1,      /* Single element */
+       &asn_SPC_supportedBandListNRForPaging_specs_2   /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct UERadioPagingInformation_IEs__nonCriticalExtension),
+       offsetof(struct UERadioPagingInformation_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UERadioPagingInformation_IEs_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UERadioPagingInformation_IEs, supportedBandListNRForPaging),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               0,
+               &asn_DEF_supportedBandListNRForPaging_2,
+               0,
+               { &asn_OER_memb_supportedBandListNRForPaging_constr_2, &asn_PER_memb_supportedBandListNRForPaging_constr_2,  memb_supportedBandListNRForPaging_constraint_1 },
+               0, 0, /* No default value */
+               "supportedBandListNRForPaging"
+               },
+       { ATF_POINTER, 1, offsetof(struct UERadioPagingInformation_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_UERadioPagingInformation_IEs_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UERadioPagingInformation_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERadioPagingInformation_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* supportedBandListNRForPaging */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UERadioPagingInformation_IEs_specs_1 = {
+       sizeof(struct UERadioPagingInformation_IEs),
+       offsetof(struct UERadioPagingInformation_IEs, _asn_ctx),
+       asn_MAP_UERadioPagingInformation_IEs_tag2el_1,
+       2,      /* Count of tags in the map */
+       asn_MAP_UERadioPagingInformation_IEs_oms_1,     /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UERadioPagingInformation_IEs = {
+       "UERadioPagingInformation-IEs",
+       "UERadioPagingInformation-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UERadioPagingInformation_IEs_tags_1,
+       sizeof(asn_DEF_UERadioPagingInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UERadioPagingInformation_IEs_tags_1[0]), /* 1 */
+       asn_DEF_UERadioPagingInformation_IEs_tags_1,    /* Same as above */
+       sizeof(asn_DEF_UERadioPagingInformation_IEs_tags_1)
+               /sizeof(asn_DEF_UERadioPagingInformation_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UERadioPagingInformation_IEs_1,
+       2,      /* Elements count */
+       &asn_SPC_UERadioPagingInformation_IEs_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UERadioPagingInformation-IEs.h b/src/codec_utils/RRC/UERadioPagingInformation-IEs.h
new file mode 100644 (file)
index 0000000..818c6e0
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UERadioPagingInformation_IEs_H_
+#define        _UERadioPagingInformation_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FreqBandIndicatorNR.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UERadioPagingInformation-IEs */
+typedef struct UERadioPagingInformation_IEs {
+       struct UERadioPagingInformation_IEs__supportedBandListNRForPaging {
+               A_SEQUENCE_OF(FreqBandIndicatorNR_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *supportedBandListNRForPaging;
+       struct UERadioPagingInformation_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UERadioPagingInformation_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERadioPagingInformation_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UERadioPagingInformation_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_UERadioPagingInformation_IEs_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UERadioPagingInformation_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UERadioPagingInformation.c b/src/codec_utils/RRC/UERadioPagingInformation.c
new file mode 100644 (file)
index 0000000..1af94c8
--- /dev/null
@@ -0,0 +1,253 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UERadioPagingInformation.h"
+
+#include "UERadioPagingInformation-IEs.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_3 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_3[] = {
+       { ATF_POINTER, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.ueRadioPagingInformation),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UERadioPagingInformation_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueRadioPagingInformation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare7),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare7"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare6),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare6"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare5),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare5"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare4),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare4"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation__criticalExtensions__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_3[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ueRadioPagingInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare7 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare6 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* spare5 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* spare4 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_3 = {
+       sizeof(struct UERadioPagingInformation__criticalExtensions__c1),
+       offsetof(struct UERadioPagingInformation__criticalExtensions__c1, _asn_ctx),
+       offsetof(struct UERadioPagingInformation__criticalExtensions__c1, present),
+       sizeof(((struct UERadioPagingInformation__criticalExtensions__c1 *)0)->present),
+       asn_MAP_c1_tag2el_3,
+       8,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_3 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_3, &asn_PER_type_c1_constr_3, CHOICE_constraint },
+       asn_MBR_c1_3,
+       8,      /* Elements count */
+       &asn_SPC_c1_specs_3     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_12[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_12 = {
+       sizeof(struct UERadioPagingInformation__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct UERadioPagingInformation__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_12 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_12,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_12)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_12[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_12,       /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_12)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_12[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_12      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UERadioPagingInformation__criticalExtensions, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_3,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct UERadioPagingInformation__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct UERadioPagingInformation__criticalExtensions),
+       offsetof(struct UERadioPagingInformation__criticalExtensions, _asn_ctx),
+       offsetof(struct UERadioPagingInformation__criticalExtensions, present),
+       sizeof(((struct UERadioPagingInformation__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_UERadioPagingInformation_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UERadioPagingInformation, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UERadioPagingInformation_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UERadioPagingInformation_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UERadioPagingInformation_specs_1 = {
+       sizeof(struct UERadioPagingInformation),
+       offsetof(struct UERadioPagingInformation, _asn_ctx),
+       asn_MAP_UERadioPagingInformation_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_UERadioPagingInformation = {
+       "UERadioPagingInformation",
+       "UERadioPagingInformation",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UERadioPagingInformation_tags_1,
+       sizeof(asn_DEF_UERadioPagingInformation_tags_1)
+               /sizeof(asn_DEF_UERadioPagingInformation_tags_1[0]), /* 1 */
+       asn_DEF_UERadioPagingInformation_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UERadioPagingInformation_tags_1)
+               /sizeof(asn_DEF_UERadioPagingInformation_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UERadioPagingInformation_1,
+       1,      /* Elements count */
+       &asn_SPC_UERadioPagingInformation_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UERadioPagingInformation.h b/src/codec_utils/RRC/UERadioPagingInformation.h
new file mode 100644 (file)
index 0000000..8fb4876
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UERadioPagingInformation_H_
+#define        _UERadioPagingInformation_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UERadioPagingInformation__criticalExtensions_PR {
+       UERadioPagingInformation__criticalExtensions_PR_NOTHING,        /* No components present */
+       UERadioPagingInformation__criticalExtensions_PR_c1,
+       UERadioPagingInformation__criticalExtensions_PR_criticalExtensionsFuture
+} UERadioPagingInformation__criticalExtensions_PR;
+typedef enum UERadioPagingInformation__criticalExtensions__c1_PR {
+       UERadioPagingInformation__criticalExtensions__c1_PR_NOTHING,    /* No components present */
+       UERadioPagingInformation__criticalExtensions__c1_PR_ueRadioPagingInformation,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare7,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare6,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare5,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare4,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare3,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare2,
+       UERadioPagingInformation__criticalExtensions__c1_PR_spare1
+} UERadioPagingInformation__criticalExtensions__c1_PR;
+
+/* Forward declarations */
+struct UERadioPagingInformation_IEs;
+
+/* UERadioPagingInformation */
+typedef struct UERadioPagingInformation {
+       struct UERadioPagingInformation__criticalExtensions {
+               UERadioPagingInformation__criticalExtensions_PR present;
+               union UERadioPagingInformation__criticalExtensions_u {
+                       struct UERadioPagingInformation__criticalExtensions__c1 {
+                               UERadioPagingInformation__criticalExtensions__c1_PR present;
+                               union UERadioPagingInformation__criticalExtensions__c1_u {
+                                       struct UERadioPagingInformation_IEs     *ueRadioPagingInformation;
+                                       NULL_t   spare7;
+                                       NULL_t   spare6;
+                                       NULL_t   spare5;
+                                       NULL_t   spare4;
+                                       NULL_t   spare3;
+                                       NULL_t   spare2;
+                                       NULL_t   spare1;
+                               } choice;
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *c1;
+                       struct UERadioPagingInformation__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UERadioPagingInformation_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UERadioPagingInformation;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UERadioPagingInformation_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-AM-RLC.c b/src/codec_utils/RRC/UL-AM-RLC.c
new file mode 100644 (file)
index 0000000..13810d2
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-AM-RLC.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_maxRetxThreshold_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_maxRetxThreshold_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_maxRetxThreshold_value2enum_6[] = {
+       { 0,    2,      "t1" },
+       { 1,    2,      "t2" },
+       { 2,    2,      "t3" },
+       { 3,    2,      "t4" },
+       { 4,    2,      "t6" },
+       { 5,    2,      "t8" },
+       { 6,    3,      "t16" },
+       { 7,    3,      "t32" }
+};
+static const unsigned int asn_MAP_maxRetxThreshold_enum2value_6[] = {
+       0,      /* t1(0) */
+       6,      /* t16(6) */
+       1,      /* t2(1) */
+       2,      /* t3(2) */
+       7,      /* t32(7) */
+       3,      /* t4(3) */
+       4,      /* t6(4) */
+       5       /* t8(5) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_maxRetxThreshold_specs_6 = {
+       asn_MAP_maxRetxThreshold_value2enum_6,  /* "tag" => N; sorted by tag */
+       asn_MAP_maxRetxThreshold_enum2value_6,  /* N => "tag"; sorted by N */
+       8,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_maxRetxThreshold_tags_6[] = {
+       (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_maxRetxThreshold_6 = {
+       "maxRetxThreshold",
+       "maxRetxThreshold",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_maxRetxThreshold_tags_6,
+       sizeof(asn_DEF_maxRetxThreshold_tags_6)
+               /sizeof(asn_DEF_maxRetxThreshold_tags_6[0]) - 1, /* 1 */
+       asn_DEF_maxRetxThreshold_tags_6,        /* Same as above */
+       sizeof(asn_DEF_maxRetxThreshold_tags_6)
+               /sizeof(asn_DEF_maxRetxThreshold_tags_6[0]), /* 2 */
+       { &asn_OER_type_maxRetxThreshold_constr_6, &asn_PER_type_maxRetxThreshold_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_maxRetxThreshold_specs_6       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UL_AM_RLC_1[] = {
+       { ATF_POINTER, 1, offsetof(struct UL_AM_RLC, sn_FieldLength),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SN_FieldLengthAM,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sn-FieldLength"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_AM_RLC, t_PollRetransmit),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_T_PollRetransmit,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "t-PollRetransmit"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_AM_RLC, pollPDU),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PollPDU,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pollPDU"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_AM_RLC, pollByte),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PollByte,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pollByte"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_AM_RLC, maxRetxThreshold),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_maxRetxThreshold_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "maxRetxThreshold"
+               },
+};
+static const int asn_MAP_UL_AM_RLC_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_UL_AM_RLC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_AM_RLC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sn-FieldLength */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t-PollRetransmit */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pollPDU */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* pollByte */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* maxRetxThreshold */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UL_AM_RLC_specs_1 = {
+       sizeof(struct UL_AM_RLC),
+       offsetof(struct UL_AM_RLC, _asn_ctx),
+       asn_MAP_UL_AM_RLC_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_UL_AM_RLC_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UL_AM_RLC = {
+       "UL-AM-RLC",
+       "UL-AM-RLC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UL_AM_RLC_tags_1,
+       sizeof(asn_DEF_UL_AM_RLC_tags_1)
+               /sizeof(asn_DEF_UL_AM_RLC_tags_1[0]), /* 1 */
+       asn_DEF_UL_AM_RLC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UL_AM_RLC_tags_1)
+               /sizeof(asn_DEF_UL_AM_RLC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UL_AM_RLC_1,
+       5,      /* Elements count */
+       &asn_SPC_UL_AM_RLC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-AM-RLC.h b/src/codec_utils/RRC/UL-AM-RLC.h
new file mode 100644 (file)
index 0000000..a99d5c1
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_AM_RLC_H_
+#define        _UL_AM_RLC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SN-FieldLengthAM.h"
+#include "T-PollRetransmit.h"
+#include "PollPDU.h"
+#include "PollByte.h"
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UL_AM_RLC__maxRetxThreshold {
+       UL_AM_RLC__maxRetxThreshold_t1  = 0,
+       UL_AM_RLC__maxRetxThreshold_t2  = 1,
+       UL_AM_RLC__maxRetxThreshold_t3  = 2,
+       UL_AM_RLC__maxRetxThreshold_t4  = 3,
+       UL_AM_RLC__maxRetxThreshold_t6  = 4,
+       UL_AM_RLC__maxRetxThreshold_t8  = 5,
+       UL_AM_RLC__maxRetxThreshold_t16 = 6,
+       UL_AM_RLC__maxRetxThreshold_t32 = 7
+} e_UL_AM_RLC__maxRetxThreshold;
+
+/* UL-AM-RLC */
+typedef struct UL_AM_RLC {
+       SN_FieldLengthAM_t      *sn_FieldLength;        /* OPTIONAL */
+       T_PollRetransmit_t       t_PollRetransmit;
+       PollPDU_t        pollPDU;
+       PollByte_t       pollByte;
+       long     maxRetxThreshold;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_AM_RLC_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_maxRetxThreshold_6;    // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_UL_AM_RLC;
+extern asn_SEQUENCE_specifics_t asn_SPC_UL_AM_RLC_specs_1;
+extern asn_TYPE_member_t asn_MBR_UL_AM_RLC_1[5];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_AM_RLC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-CCCH-Message.c b/src/codec_utils/RRC/UL-CCCH-Message.c
new file mode 100644 (file)
index 0000000..97a20a4
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-CCCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_UL_CCCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UL_CCCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UL_CCCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UL_CCCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_CCCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UL_CCCH_Message_specs_1 = {
+       sizeof(struct UL_CCCH_Message),
+       offsetof(struct UL_CCCH_Message, _asn_ctx),
+       asn_MAP_UL_CCCH_Message_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_UL_CCCH_Message = {
+       "UL-CCCH-Message",
+       "UL-CCCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UL_CCCH_Message_tags_1,
+       sizeof(asn_DEF_UL_CCCH_Message_tags_1)
+               /sizeof(asn_DEF_UL_CCCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_UL_CCCH_Message_tags_1, /* Same as above */
+       sizeof(asn_DEF_UL_CCCH_Message_tags_1)
+               /sizeof(asn_DEF_UL_CCCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UL_CCCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_UL_CCCH_Message_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-CCCH-Message.h b/src/codec_utils/RRC/UL-CCCH-Message.h
new file mode 100644 (file)
index 0000000..acadebc
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_CCCH_Message_H_
+#define        _UL_CCCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UL-CCCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UL-CCCH-Message */
+typedef struct UL_CCCH_Message {
+       UL_CCCH_MessageType_t    message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_CCCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_CCCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_CCCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-CCCH-MessageType.c b/src/codec_utils/RRC/UL-CCCH-MessageType.c
new file mode 100644 (file)
index 0000000..c1d00fa
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-CCCH-MessageType.h"
+
+#include "RRCSetupRequest.h"
+#include "RRCResumeRequest.h"
+#include "RRCReestablishmentRequest.h"
+#include "RRCSystemInfoRequest.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_UL_CCCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UL_CCCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType__c1, choice.rrcSetupRequest),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetupRequest,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetupRequest"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType__c1, choice.rrcResumeRequest),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeRequest,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeRequest"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType__c1, choice.rrcReestablishmentRequest),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishmentRequest,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishmentRequest"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType__c1, choice.rrcSystemInfoRequest),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSystemInfoRequest,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSystemInfoRequest"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcSetupRequest */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rrcResumeRequest */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rrcReestablishmentRequest */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* rrcSystemInfoRequest */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct UL_CCCH_MessageType__c1),
+       offsetof(struct UL_CCCH_MessageType__c1, _asn_ctx),
+       offsetof(struct UL_CCCH_MessageType__c1, present),
+       sizeof(((struct UL_CCCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_7 = {
+       sizeof(struct UL_CCCH_MessageType__messageClassExtension),
+       offsetof(struct UL_CCCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_7 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_7,
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_7,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_7  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UL_CCCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_CCCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_UL_CCCH_MessageType_specs_1 = {
+       sizeof(struct UL_CCCH_MessageType),
+       offsetof(struct UL_CCCH_MessageType, _asn_ctx),
+       offsetof(struct UL_CCCH_MessageType, present),
+       sizeof(((struct UL_CCCH_MessageType *)0)->present),
+       asn_MAP_UL_CCCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UL_CCCH_MessageType = {
+       "UL-CCCH-MessageType",
+       "UL-CCCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_UL_CCCH_MessageType_constr_1, &asn_PER_type_UL_CCCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_UL_CCCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_UL_CCCH_MessageType_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-CCCH-MessageType.h b/src/codec_utils/RRC/UL-CCCH-MessageType.h
new file mode 100644 (file)
index 0000000..d4d9e67
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_CCCH_MessageType_H_
+#define        _UL_CCCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UL_CCCH_MessageType_PR {
+       UL_CCCH_MessageType_PR_NOTHING, /* No components present */
+       UL_CCCH_MessageType_PR_c1,
+       UL_CCCH_MessageType_PR_messageClassExtension
+} UL_CCCH_MessageType_PR;
+typedef enum UL_CCCH_MessageType__c1_PR {
+       UL_CCCH_MessageType__c1_PR_NOTHING,     /* No components present */
+       UL_CCCH_MessageType__c1_PR_rrcSetupRequest,
+       UL_CCCH_MessageType__c1_PR_rrcResumeRequest,
+       UL_CCCH_MessageType__c1_PR_rrcReestablishmentRequest,
+       UL_CCCH_MessageType__c1_PR_rrcSystemInfoRequest
+} UL_CCCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct RRCSetupRequest;
+struct RRCResumeRequest;
+struct RRCReestablishmentRequest;
+struct RRCSystemInfoRequest;
+
+/* UL-CCCH-MessageType */
+typedef struct UL_CCCH_MessageType {
+       UL_CCCH_MessageType_PR present;
+       union UL_CCCH_MessageType_u {
+               struct UL_CCCH_MessageType__c1 {
+                       UL_CCCH_MessageType__c1_PR present;
+                       union UL_CCCH_MessageType__c1_u {
+                               struct RRCSetupRequest  *rrcSetupRequest;
+                               struct RRCResumeRequest *rrcResumeRequest;
+                               struct RRCReestablishmentRequest        *rrcReestablishmentRequest;
+                               struct RRCSystemInfoRequest     *rrcSystemInfoRequest;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct UL_CCCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_CCCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_CCCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_UL_CCCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_UL_CCCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_UL_CCCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_CCCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-CCCH1-Message.c b/src/codec_utils/RRC/UL-CCCH1-Message.c
new file mode 100644 (file)
index 0000000..f6bc639
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-CCCH1-Message.h"
+
+static asn_TYPE_member_t asn_MBR_UL_CCCH1_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UL_CCCH1_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UL_CCCH1_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UL_CCCH1_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_CCCH1_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UL_CCCH1_Message_specs_1 = {
+       sizeof(struct UL_CCCH1_Message),
+       offsetof(struct UL_CCCH1_Message, _asn_ctx),
+       asn_MAP_UL_CCCH1_Message_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_UL_CCCH1_Message = {
+       "UL-CCCH1-Message",
+       "UL-CCCH1-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UL_CCCH1_Message_tags_1,
+       sizeof(asn_DEF_UL_CCCH1_Message_tags_1)
+               /sizeof(asn_DEF_UL_CCCH1_Message_tags_1[0]), /* 1 */
+       asn_DEF_UL_CCCH1_Message_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UL_CCCH1_Message_tags_1)
+               /sizeof(asn_DEF_UL_CCCH1_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UL_CCCH1_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_UL_CCCH1_Message_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-CCCH1-Message.h b/src/codec_utils/RRC/UL-CCCH1-Message.h
new file mode 100644 (file)
index 0000000..ab3b3e3
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_CCCH1_Message_H_
+#define        _UL_CCCH1_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UL-CCCH1-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UL-CCCH1-Message */
+typedef struct UL_CCCH1_Message {
+       UL_CCCH1_MessageType_t   message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_CCCH1_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_CCCH1_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_CCCH1_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-CCCH1-MessageType.c b/src/codec_utils/RRC/UL-CCCH1-MessageType.c
new file mode 100644 (file)
index 0000000..3c67eac
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-CCCH1-MessageType.h"
+
+#include "RRCResumeRequest1.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_UL_CCCH1_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UL_CCCH1_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH1_MessageType__c1, choice.rrcResumeRequest1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeRequest1,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeRequest1"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_CCCH1_MessageType__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_CCCH1_MessageType__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_CCCH1_MessageType__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rrcResumeRequest1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct UL_CCCH1_MessageType__c1),
+       offsetof(struct UL_CCCH1_MessageType__c1, _asn_ctx),
+       offsetof(struct UL_CCCH1_MessageType__c1, present),
+       sizeof(((struct UL_CCCH1_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       4,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       4,      /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_7[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_7 = {
+       sizeof(struct UL_CCCH1_MessageType__messageClassExtension),
+       offsetof(struct UL_CCCH1_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_7 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_7,
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_7,   /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_7)
+               /sizeof(asn_DEF_messageClassExtension_tags_7[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_7  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UL_CCCH1_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH1_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_CCCH1_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_7,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_CCCH1_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_UL_CCCH1_MessageType_specs_1 = {
+       sizeof(struct UL_CCCH1_MessageType),
+       offsetof(struct UL_CCCH1_MessageType, _asn_ctx),
+       offsetof(struct UL_CCCH1_MessageType, present),
+       sizeof(((struct UL_CCCH1_MessageType *)0)->present),
+       asn_MAP_UL_CCCH1_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UL_CCCH1_MessageType = {
+       "UL-CCCH1-MessageType",
+       "UL-CCCH1-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_UL_CCCH1_MessageType_constr_1, &asn_PER_type_UL_CCCH1_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_UL_CCCH1_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_UL_CCCH1_MessageType_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-CCCH1-MessageType.h b/src/codec_utils/RRC/UL-CCCH1-MessageType.h
new file mode 100644 (file)
index 0000000..148b918
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_CCCH1_MessageType_H_
+#define        _UL_CCCH1_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UL_CCCH1_MessageType_PR {
+       UL_CCCH1_MessageType_PR_NOTHING,        /* No components present */
+       UL_CCCH1_MessageType_PR_c1,
+       UL_CCCH1_MessageType_PR_messageClassExtension
+} UL_CCCH1_MessageType_PR;
+typedef enum UL_CCCH1_MessageType__c1_PR {
+       UL_CCCH1_MessageType__c1_PR_NOTHING,    /* No components present */
+       UL_CCCH1_MessageType__c1_PR_rrcResumeRequest1,
+       UL_CCCH1_MessageType__c1_PR_spare3,
+       UL_CCCH1_MessageType__c1_PR_spare2,
+       UL_CCCH1_MessageType__c1_PR_spare1
+} UL_CCCH1_MessageType__c1_PR;
+
+/* Forward declarations */
+struct RRCResumeRequest1;
+
+/* UL-CCCH1-MessageType */
+typedef struct UL_CCCH1_MessageType {
+       UL_CCCH1_MessageType_PR present;
+       union UL_CCCH1_MessageType_u {
+               struct UL_CCCH1_MessageType__c1 {
+                       UL_CCCH1_MessageType__c1_PR present;
+                       union UL_CCCH1_MessageType__c1_u {
+                               struct RRCResumeRequest1        *rrcResumeRequest1;
+                               NULL_t   spare3;
+                               NULL_t   spare2;
+                               NULL_t   spare1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct UL_CCCH1_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_CCCH1_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_CCCH1_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_UL_CCCH1_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_UL_CCCH1_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_UL_CCCH1_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_CCCH1_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-DCCH-Message.c b/src/codec_utils/RRC/UL-DCCH-Message.c
new file mode 100644 (file)
index 0000000..14e64b5
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-DCCH-Message.h"
+
+static asn_TYPE_member_t asn_MBR_UL_DCCH_Message_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UL_DCCH_Message, message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_UL_DCCH_MessageType,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "message"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UL_DCCH_Message_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_DCCH_Message_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_UL_DCCH_Message_specs_1 = {
+       sizeof(struct UL_DCCH_Message),
+       offsetof(struct UL_DCCH_Message, _asn_ctx),
+       asn_MAP_UL_DCCH_Message_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_UL_DCCH_Message = {
+       "UL-DCCH-Message",
+       "UL-DCCH-Message",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UL_DCCH_Message_tags_1,
+       sizeof(asn_DEF_UL_DCCH_Message_tags_1)
+               /sizeof(asn_DEF_UL_DCCH_Message_tags_1[0]), /* 1 */
+       asn_DEF_UL_DCCH_Message_tags_1, /* Same as above */
+       sizeof(asn_DEF_UL_DCCH_Message_tags_1)
+               /sizeof(asn_DEF_UL_DCCH_Message_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UL_DCCH_Message_1,
+       1,      /* Elements count */
+       &asn_SPC_UL_DCCH_Message_specs_1        /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-DCCH-Message.h b/src/codec_utils/RRC/UL-DCCH-Message.h
new file mode 100644 (file)
index 0000000..52769ef
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_DCCH_Message_H_
+#define        _UL_DCCH_Message_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "UL-DCCH-MessageType.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UL-DCCH-Message */
+typedef struct UL_DCCH_Message {
+       UL_DCCH_MessageType_t    message;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_DCCH_Message_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_DCCH_Message;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_DCCH_Message_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-DCCH-MessageType.c b/src/codec_utils/RRC/UL-DCCH-MessageType.c
new file mode 100644 (file)
index 0000000..46f5ec9
--- /dev/null
@@ -0,0 +1,303 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-DCCH-MessageType.h"
+
+#include "MeasurementReport.h"
+#include "RRCReconfigurationComplete.h"
+#include "RRCSetupComplete.h"
+#include "RRCReestablishmentComplete.h"
+#include "RRCResumeComplete.h"
+#include "SecurityModeComplete.h"
+#include "SecurityModeFailure.h"
+#include "ULInformationTransfer.h"
+#include "LocationMeasurementIndication.h"
+#include "UECapabilityInformation.h"
+#include "CounterCheckResponse.h"
+#include "UEAssistanceInformation.h"
+#include "FailureInformation.h"
+static asn_oer_constraints_t asn_OER_type_c1_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_c1_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_UL_DCCH_MessageType_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UL_DCCH_MessageType_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_c1_2[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.measurementReport),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasurementReport,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measurementReport"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.rrcReconfigurationComplete),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReconfigurationComplete,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReconfigurationComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.rrcSetupComplete),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCSetupComplete,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcSetupComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.rrcReestablishmentComplete),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCReestablishmentComplete,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcReestablishmentComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.rrcResumeComplete),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RRCResumeComplete,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "rrcResumeComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.securityModeComplete),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeComplete,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeComplete"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.securityModeFailure),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SecurityModeFailure,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "securityModeFailure"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.ulInformationTransfer),
+               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ULInformationTransfer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ulInformationTransfer"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.locationMeasurementIndication),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_LocationMeasurementIndication,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "locationMeasurementIndication"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.ueCapabilityInformation),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UECapabilityInformation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueCapabilityInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.counterCheckResponse),
+               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CounterCheckResponse,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "counterCheckResponse"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.ueAssistanceInformation),
+               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UEAssistanceInformation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ueAssistanceInformation"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.failureInformation),
+               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FailureInformation,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "failureInformation"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.spare3),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare3"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.spare2),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare2"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UL_DCCH_MessageType__c1, choice.spare1),
+               (ASN_TAG_CLASS_CONTEXT | (15 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "spare1"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_c1_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measurementReport */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rrcReconfigurationComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* rrcSetupComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* rrcReestablishmentComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* rrcResumeComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* securityModeComplete */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* securityModeFailure */
+    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ulInformationTransfer */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* locationMeasurementIndication */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* ueCapabilityInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* counterCheckResponse */
+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* ueAssistanceInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* failureInformation */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* spare3 */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* spare2 */
+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* spare1 */
+};
+static asn_CHOICE_specifics_t asn_SPC_c1_specs_2 = {
+       sizeof(struct UL_DCCH_MessageType__c1),
+       offsetof(struct UL_DCCH_MessageType__c1, _asn_ctx),
+       offsetof(struct UL_DCCH_MessageType__c1, present),
+       sizeof(((struct UL_DCCH_MessageType__c1 *)0)->present),
+       asn_MAP_c1_tag2el_2,
+       16,     /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_c1_2 = {
+       "c1",
+       "c1",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_c1_constr_2, &asn_PER_type_c1_constr_2, CHOICE_constraint },
+       asn_MBR_c1_2,
+       16,     /* Elements count */
+       &asn_SPC_c1_specs_2     /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_19[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_19 = {
+       sizeof(struct UL_DCCH_MessageType__messageClassExtension),
+       offsetof(struct UL_DCCH_MessageType__messageClassExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_messageClassExtension_19 = {
+       "messageClassExtension",
+       "messageClassExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_messageClassExtension_tags_19,
+       sizeof(asn_DEF_messageClassExtension_tags_19)
+               /sizeof(asn_DEF_messageClassExtension_tags_19[0]) - 1, /* 1 */
+       asn_DEF_messageClassExtension_tags_19,  /* Same as above */
+       sizeof(asn_DEF_messageClassExtension_tags_19)
+               /sizeof(asn_DEF_messageClassExtension_tags_19[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_messageClassExtension_specs_19 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UL_DCCH_MessageType_1[] = {
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType, choice.c1),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_c1_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "c1"
+               },
+       { ATF_POINTER, 0, offsetof(struct UL_DCCH_MessageType, choice.messageClassExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_messageClassExtension_19,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "messageClassExtension"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_DCCH_MessageType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* c1 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
+};
+asn_CHOICE_specifics_t asn_SPC_UL_DCCH_MessageType_specs_1 = {
+       sizeof(struct UL_DCCH_MessageType),
+       offsetof(struct UL_DCCH_MessageType, _asn_ctx),
+       offsetof(struct UL_DCCH_MessageType, present),
+       sizeof(((struct UL_DCCH_MessageType *)0)->present),
+       asn_MAP_UL_DCCH_MessageType_tag2el_1,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+asn_TYPE_descriptor_t asn_DEF_UL_DCCH_MessageType = {
+       "UL-DCCH-MessageType",
+       "UL-DCCH-MessageType",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_UL_DCCH_MessageType_constr_1, &asn_PER_type_UL_DCCH_MessageType_constr_1, CHOICE_constraint },
+       asn_MBR_UL_DCCH_MessageType_1,
+       2,      /* Elements count */
+       &asn_SPC_UL_DCCH_MessageType_specs_1    /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-DCCH-MessageType.h b/src/codec_utils/RRC/UL-DCCH-MessageType.h
new file mode 100644 (file)
index 0000000..4a7dce7
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_DCCH_MessageType_H_
+#define        _UL_DCCH_MessageType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UL_DCCH_MessageType_PR {
+       UL_DCCH_MessageType_PR_NOTHING, /* No components present */
+       UL_DCCH_MessageType_PR_c1,
+       UL_DCCH_MessageType_PR_messageClassExtension
+} UL_DCCH_MessageType_PR;
+typedef enum UL_DCCH_MessageType__c1_PR {
+       UL_DCCH_MessageType__c1_PR_NOTHING,     /* No components present */
+       UL_DCCH_MessageType__c1_PR_measurementReport,
+       UL_DCCH_MessageType__c1_PR_rrcReconfigurationComplete,
+       UL_DCCH_MessageType__c1_PR_rrcSetupComplete,
+       UL_DCCH_MessageType__c1_PR_rrcReestablishmentComplete,
+       UL_DCCH_MessageType__c1_PR_rrcResumeComplete,
+       UL_DCCH_MessageType__c1_PR_securityModeComplete,
+       UL_DCCH_MessageType__c1_PR_securityModeFailure,
+       UL_DCCH_MessageType__c1_PR_ulInformationTransfer,
+       UL_DCCH_MessageType__c1_PR_locationMeasurementIndication,
+       UL_DCCH_MessageType__c1_PR_ueCapabilityInformation,
+       UL_DCCH_MessageType__c1_PR_counterCheckResponse,
+       UL_DCCH_MessageType__c1_PR_ueAssistanceInformation,
+       UL_DCCH_MessageType__c1_PR_failureInformation,
+       UL_DCCH_MessageType__c1_PR_spare3,
+       UL_DCCH_MessageType__c1_PR_spare2,
+       UL_DCCH_MessageType__c1_PR_spare1
+} UL_DCCH_MessageType__c1_PR;
+
+/* Forward declarations */
+struct MeasurementReport;
+struct RRCReconfigurationComplete;
+struct RRCSetupComplete;
+struct RRCReestablishmentComplete;
+struct RRCResumeComplete;
+struct SecurityModeComplete;
+struct SecurityModeFailure;
+struct ULInformationTransfer;
+struct LocationMeasurementIndication;
+struct UECapabilityInformation;
+struct CounterCheckResponse;
+struct UEAssistanceInformation;
+struct FailureInformation;
+
+/* UL-DCCH-MessageType */
+typedef struct UL_DCCH_MessageType {
+       UL_DCCH_MessageType_PR present;
+       union UL_DCCH_MessageType_u {
+               struct UL_DCCH_MessageType__c1 {
+                       UL_DCCH_MessageType__c1_PR present;
+                       union UL_DCCH_MessageType__c1_u {
+                               struct MeasurementReport        *measurementReport;
+                               struct RRCReconfigurationComplete       *rrcReconfigurationComplete;
+                               struct RRCSetupComplete *rrcSetupComplete;
+                               struct RRCReestablishmentComplete       *rrcReestablishmentComplete;
+                               struct RRCResumeComplete        *rrcResumeComplete;
+                               struct SecurityModeComplete     *securityModeComplete;
+                               struct SecurityModeFailure      *securityModeFailure;
+                               struct ULInformationTransfer    *ulInformationTransfer;
+                               struct LocationMeasurementIndication    *locationMeasurementIndication;
+                               struct UECapabilityInformation  *ueCapabilityInformation;
+                               struct CounterCheckResponse     *counterCheckResponse;
+                               struct UEAssistanceInformation  *ueAssistanceInformation;
+                               struct FailureInformation       *failureInformation;
+                               NULL_t   spare3;
+                               NULL_t   spare2;
+                               NULL_t   spare1;
+                       } choice;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *c1;
+               struct UL_DCCH_MessageType__messageClassExtension {
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *messageClassExtension;
+       } choice;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_DCCH_MessageType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_DCCH_MessageType;
+extern asn_CHOICE_specifics_t asn_SPC_UL_DCCH_MessageType_specs_1;
+extern asn_TYPE_member_t asn_MBR_UL_DCCH_MessageType_1[2];
+extern asn_per_constraints_t asn_PER_type_UL_DCCH_MessageType_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_DCCH_MessageType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-DataSplitThreshold.c b/src/codec_utils/RRC/UL-DataSplitThreshold.c
new file mode 100644 (file)
index 0000000..60b8460
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-DataSplitThreshold.h"
+
+/*
+ * This type is implemented using NativeEnumerated,
+ * so here we adjust the DEF accordingly.
+ */
+static asn_oer_constraints_t asn_OER_type_UL_DataSplitThreshold_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+asn_per_constraints_t asn_PER_type_UL_DataSplitThreshold_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const asn_INTEGER_enum_map_t asn_MAP_UL_DataSplitThreshold_value2enum_1[] = {
+       { 0,    2,      "b0" },
+       { 1,    4,      "b100" },
+       { 2,    4,      "b200" },
+       { 3,    4,      "b400" },
+       { 4,    4,      "b800" },
+       { 5,    5,      "b1600" },
+       { 6,    5,      "b3200" },
+       { 7,    5,      "b6400" },
+       { 8,    6,      "b12800" },
+       { 9,    6,      "b25600" },
+       { 10,   6,      "b51200" },
+       { 11,   7,      "b102400" },
+       { 12,   7,      "b204800" },
+       { 13,   7,      "b409600" },
+       { 14,   7,      "b819200" },
+       { 15,   8,      "b1228800" },
+       { 16,   8,      "b1638400" },
+       { 17,   8,      "b2457600" },
+       { 18,   8,      "b3276800" },
+       { 19,   8,      "b4096000" },
+       { 20,   8,      "b4915200" },
+       { 21,   8,      "b5734400" },
+       { 22,   8,      "b6553600" },
+       { 23,   8,      "infinity" },
+       { 24,   6,      "spare8" },
+       { 25,   6,      "spare7" },
+       { 26,   6,      "spare6" },
+       { 27,   6,      "spare5" },
+       { 28,   6,      "spare4" },
+       { 29,   6,      "spare3" },
+       { 30,   6,      "spare2" },
+       { 31,   6,      "spare1" }
+};
+static const unsigned int asn_MAP_UL_DataSplitThreshold_enum2value_1[] = {
+       0,      /* b0(0) */
+       1,      /* b100(1) */
+       11,     /* b102400(11) */
+       15,     /* b1228800(15) */
+       8,      /* b12800(8) */
+       5,      /* b1600(5) */
+       16,     /* b1638400(16) */
+       2,      /* b200(2) */
+       12,     /* b204800(12) */
+       17,     /* b2457600(17) */
+       9,      /* b25600(9) */
+       6,      /* b3200(6) */
+       18,     /* b3276800(18) */
+       3,      /* b400(3) */
+       13,     /* b409600(13) */
+       19,     /* b4096000(19) */
+       20,     /* b4915200(20) */
+       10,     /* b51200(10) */
+       21,     /* b5734400(21) */
+       7,      /* b6400(7) */
+       22,     /* b6553600(22) */
+       4,      /* b800(4) */
+       14,     /* b819200(14) */
+       23,     /* infinity(23) */
+       31,     /* spare1(31) */
+       30,     /* spare2(30) */
+       29,     /* spare3(29) */
+       28,     /* spare4(28) */
+       27,     /* spare5(27) */
+       26,     /* spare6(26) */
+       25,     /* spare7(25) */
+       24      /* spare8(24) */
+};
+const asn_INTEGER_specifics_t asn_SPC_UL_DataSplitThreshold_specs_1 = {
+       asn_MAP_UL_DataSplitThreshold_value2enum_1,     /* "tag" => N; sorted by tag */
+       asn_MAP_UL_DataSplitThreshold_enum2value_1,     /* N => "tag"; sorted by N */
+       32,     /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_UL_DataSplitThreshold_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UL_DataSplitThreshold = {
+       "UL-DataSplitThreshold",
+       "UL-DataSplitThreshold",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_UL_DataSplitThreshold_tags_1,
+       sizeof(asn_DEF_UL_DataSplitThreshold_tags_1)
+               /sizeof(asn_DEF_UL_DataSplitThreshold_tags_1[0]), /* 1 */
+       asn_DEF_UL_DataSplitThreshold_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UL_DataSplitThreshold_tags_1)
+               /sizeof(asn_DEF_UL_DataSplitThreshold_tags_1[0]), /* 1 */
+       { &asn_OER_type_UL_DataSplitThreshold_constr_1, &asn_PER_type_UL_DataSplitThreshold_constr_1, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_UL_DataSplitThreshold_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-DataSplitThreshold.h b/src/codec_utils/RRC/UL-DataSplitThreshold.h
new file mode 100644 (file)
index 0000000..e74148f
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_DataSplitThreshold_H_
+#define        _UL_DataSplitThreshold_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UL_DataSplitThreshold {
+       UL_DataSplitThreshold_b0        = 0,
+       UL_DataSplitThreshold_b100      = 1,
+       UL_DataSplitThreshold_b200      = 2,
+       UL_DataSplitThreshold_b400      = 3,
+       UL_DataSplitThreshold_b800      = 4,
+       UL_DataSplitThreshold_b1600     = 5,
+       UL_DataSplitThreshold_b3200     = 6,
+       UL_DataSplitThreshold_b6400     = 7,
+       UL_DataSplitThreshold_b12800    = 8,
+       UL_DataSplitThreshold_b25600    = 9,
+       UL_DataSplitThreshold_b51200    = 10,
+       UL_DataSplitThreshold_b102400   = 11,
+       UL_DataSplitThreshold_b204800   = 12,
+       UL_DataSplitThreshold_b409600   = 13,
+       UL_DataSplitThreshold_b819200   = 14,
+       UL_DataSplitThreshold_b1228800  = 15,
+       UL_DataSplitThreshold_b1638400  = 16,
+       UL_DataSplitThreshold_b2457600  = 17,
+       UL_DataSplitThreshold_b3276800  = 18,
+       UL_DataSplitThreshold_b4096000  = 19,
+       UL_DataSplitThreshold_b4915200  = 20,
+       UL_DataSplitThreshold_b5734400  = 21,
+       UL_DataSplitThreshold_b6553600  = 22,
+       UL_DataSplitThreshold_infinity  = 23,
+       UL_DataSplitThreshold_spare8    = 24,
+       UL_DataSplitThreshold_spare7    = 25,
+       UL_DataSplitThreshold_spare6    = 26,
+       UL_DataSplitThreshold_spare5    = 27,
+       UL_DataSplitThreshold_spare4    = 28,
+       UL_DataSplitThreshold_spare3    = 29,
+       UL_DataSplitThreshold_spare2    = 30,
+       UL_DataSplitThreshold_spare1    = 31
+} e_UL_DataSplitThreshold;
+
+/* UL-DataSplitThreshold */
+typedef long    UL_DataSplitThreshold_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_UL_DataSplitThreshold_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_UL_DataSplitThreshold;
+extern const asn_INTEGER_specifics_t asn_SPC_UL_DataSplitThreshold_specs_1;
+asn_struct_free_f UL_DataSplitThreshold_free;
+asn_struct_print_f UL_DataSplitThreshold_print;
+asn_constr_check_f UL_DataSplitThreshold_constraint;
+ber_type_decoder_f UL_DataSplitThreshold_decode_ber;
+der_type_encoder_f UL_DataSplitThreshold_encode_der;
+xer_type_decoder_f UL_DataSplitThreshold_decode_xer;
+xer_type_encoder_f UL_DataSplitThreshold_encode_xer;
+oer_type_decoder_f UL_DataSplitThreshold_decode_oer;
+oer_type_encoder_f UL_DataSplitThreshold_encode_oer;
+per_type_decoder_f UL_DataSplitThreshold_decode_uper;
+per_type_encoder_f UL_DataSplitThreshold_encode_uper;
+per_type_decoder_f UL_DataSplitThreshold_decode_aper;
+per_type_encoder_f UL_DataSplitThreshold_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_DataSplitThreshold_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UL-UM-RLC.c b/src/codec_utils/RRC/UL-UM-RLC.c
new file mode 100644 (file)
index 0000000..df618d1
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UL-UM-RLC.h"
+
+asn_TYPE_member_t asn_MBR_UL_UM_RLC_1[] = {
+       { ATF_POINTER, 1, offsetof(struct UL_UM_RLC, sn_FieldLength),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SN_FieldLengthUM,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sn-FieldLength"
+               },
+};
+static const int asn_MAP_UL_UM_RLC_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_UL_UM_RLC_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UL_UM_RLC_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* sn-FieldLength */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UL_UM_RLC_specs_1 = {
+       sizeof(struct UL_UM_RLC),
+       offsetof(struct UL_UM_RLC, _asn_ctx),
+       asn_MAP_UL_UM_RLC_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_UL_UM_RLC_oms_1,        /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UL_UM_RLC = {
+       "UL-UM-RLC",
+       "UL-UM-RLC",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UL_UM_RLC_tags_1,
+       sizeof(asn_DEF_UL_UM_RLC_tags_1)
+               /sizeof(asn_DEF_UL_UM_RLC_tags_1[0]), /* 1 */
+       asn_DEF_UL_UM_RLC_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UL_UM_RLC_tags_1)
+               /sizeof(asn_DEF_UL_UM_RLC_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UL_UM_RLC_1,
+       1,      /* Elements count */
+       &asn_SPC_UL_UM_RLC_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UL-UM-RLC.h b/src/codec_utils/RRC/UL-UM-RLC.h
new file mode 100644 (file)
index 0000000..7f41c6c
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UL_UM_RLC_H_
+#define        _UL_UM_RLC_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "SN-FieldLengthUM.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UL-UM-RLC */
+typedef struct UL_UM_RLC {
+       SN_FieldLengthUM_t      *sn_FieldLength;        /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UL_UM_RLC_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UL_UM_RLC;
+extern asn_SEQUENCE_specifics_t asn_SPC_UL_UM_RLC_specs_1;
+extern asn_TYPE_member_t asn_MBR_UL_UM_RLC_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UL_UM_RLC_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ULInformationTransfer-IEs.c b/src/codec_utils/RRC/ULInformationTransfer-IEs.c
new file mode 100644 (file)
index 0000000..c648c21
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ULInformationTransfer-IEs.h"
+
+static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_4 = {
+       sizeof(struct ULInformationTransfer_IEs__nonCriticalExtension),
+       offsetof(struct ULInformationTransfer_IEs__nonCriticalExtension, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_4 = {
+       "nonCriticalExtension",
+       "nonCriticalExtension",
+       &asn_OP_SEQUENCE,
+       asn_DEF_nonCriticalExtension_tags_4,
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]) - 1, /* 1 */
+       asn_DEF_nonCriticalExtension_tags_4,    /* Same as above */
+       sizeof(asn_DEF_nonCriticalExtension_tags_4)
+               /sizeof(asn_DEF_nonCriticalExtension_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_nonCriticalExtension_specs_4   /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ULInformationTransfer_IEs_1[] = {
+       { ATF_POINTER, 3, offsetof(struct ULInformationTransfer_IEs, dedicatedNAS_Message),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_DedicatedNAS_Message,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dedicatedNAS-Message"
+               },
+       { ATF_POINTER, 2, offsetof(struct ULInformationTransfer_IEs, lateNonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_OCTET_STRING,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "lateNonCriticalExtension"
+               },
+       { ATF_POINTER, 1, offsetof(struct ULInformationTransfer_IEs, nonCriticalExtension),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_nonCriticalExtension_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "nonCriticalExtension"
+               },
+};
+static const int asn_MAP_ULInformationTransfer_IEs_oms_1[] = { 0, 1, 2 };
+static const ber_tlv_tag_t asn_DEF_ULInformationTransfer_IEs_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ULInformationTransfer_IEs_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dedicatedNAS-Message */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* lateNonCriticalExtension */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* nonCriticalExtension */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ULInformationTransfer_IEs_specs_1 = {
+       sizeof(struct ULInformationTransfer_IEs),
+       offsetof(struct ULInformationTransfer_IEs, _asn_ctx),
+       asn_MAP_ULInformationTransfer_IEs_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_ULInformationTransfer_IEs_oms_1,        /* Optional members */
+       3, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ULInformationTransfer_IEs = {
+       "ULInformationTransfer-IEs",
+       "ULInformationTransfer-IEs",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ULInformationTransfer_IEs_tags_1,
+       sizeof(asn_DEF_ULInformationTransfer_IEs_tags_1)
+               /sizeof(asn_DEF_ULInformationTransfer_IEs_tags_1[0]), /* 1 */
+       asn_DEF_ULInformationTransfer_IEs_tags_1,       /* Same as above */
+       sizeof(asn_DEF_ULInformationTransfer_IEs_tags_1)
+               /sizeof(asn_DEF_ULInformationTransfer_IEs_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ULInformationTransfer_IEs_1,
+       3,      /* Elements count */
+       &asn_SPC_ULInformationTransfer_IEs_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ULInformationTransfer-IEs.h b/src/codec_utils/RRC/ULInformationTransfer-IEs.h
new file mode 100644 (file)
index 0000000..2d8f781
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ULInformationTransfer_IEs_H_
+#define        _ULInformationTransfer_IEs_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "DedicatedNAS-Message.h"
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ULInformationTransfer-IEs */
+typedef struct ULInformationTransfer_IEs {
+       DedicatedNAS_Message_t  *dedicatedNAS_Message;  /* OPTIONAL */
+       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
+       struct ULInformationTransfer_IEs__nonCriticalExtension {
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *nonCriticalExtension;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ULInformationTransfer_IEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ULInformationTransfer_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ULInformationTransfer_IEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_ULInformationTransfer_IEs_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ULInformationTransfer_IEs_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ULInformationTransfer.c b/src/codec_utils/RRC/ULInformationTransfer.c
new file mode 100644 (file)
index 0000000..0bfa154
--- /dev/null
@@ -0,0 +1,136 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ULInformationTransfer.h"
+
+#include "ULInformationTransfer-IEs.h"
+static asn_oer_constraints_t asn_OER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_criticalExtensions_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_criticalExtensionsFuture_tags_4[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_criticalExtensionsFuture_specs_4 = {
+       sizeof(struct ULInformationTransfer__criticalExtensions__criticalExtensionsFuture),
+       offsetof(struct ULInformationTransfer__criticalExtensions__criticalExtensionsFuture, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensionsFuture_4 = {
+       "criticalExtensionsFuture",
+       "criticalExtensionsFuture",
+       &asn_OP_SEQUENCE,
+       asn_DEF_criticalExtensionsFuture_tags_4,
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]) - 1, /* 1 */
+       asn_DEF_criticalExtensionsFuture_tags_4,        /* Same as above */
+       sizeof(asn_DEF_criticalExtensionsFuture_tags_4)
+               /sizeof(asn_DEF_criticalExtensionsFuture_tags_4[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_criticalExtensionsFuture_specs_4       /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_criticalExtensions_2[] = {
+       { ATF_POINTER, 0, offsetof(struct ULInformationTransfer__criticalExtensions, choice.ulInformationTransfer),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ULInformationTransfer_IEs,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ulInformationTransfer"
+               },
+       { ATF_POINTER, 0, offsetof(struct ULInformationTransfer__criticalExtensions, choice.criticalExtensionsFuture),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_criticalExtensionsFuture_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensionsFuture"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_criticalExtensions_tag2el_2[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ulInformationTransfer */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* criticalExtensionsFuture */
+};
+static asn_CHOICE_specifics_t asn_SPC_criticalExtensions_specs_2 = {
+       sizeof(struct ULInformationTransfer__criticalExtensions),
+       offsetof(struct ULInformationTransfer__criticalExtensions, _asn_ctx),
+       offsetof(struct ULInformationTransfer__criticalExtensions, present),
+       sizeof(((struct ULInformationTransfer__criticalExtensions *)0)->present),
+       asn_MAP_criticalExtensions_tag2el_2,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_criticalExtensions_2 = {
+       "criticalExtensions",
+       "criticalExtensions",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_criticalExtensions_constr_2, &asn_PER_type_criticalExtensions_constr_2, CHOICE_constraint },
+       asn_MBR_criticalExtensions_2,
+       2,      /* Elements count */
+       &asn_SPC_criticalExtensions_specs_2     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ULInformationTransfer_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ULInformationTransfer, criticalExtensions),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_criticalExtensions_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "criticalExtensions"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ULInformationTransfer_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ULInformationTransfer_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* criticalExtensions */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ULInformationTransfer_specs_1 = {
+       sizeof(struct ULInformationTransfer),
+       offsetof(struct ULInformationTransfer, _asn_ctx),
+       asn_MAP_ULInformationTransfer_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_ULInformationTransfer = {
+       "ULInformationTransfer",
+       "ULInformationTransfer",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ULInformationTransfer_tags_1,
+       sizeof(asn_DEF_ULInformationTransfer_tags_1)
+               /sizeof(asn_DEF_ULInformationTransfer_tags_1[0]), /* 1 */
+       asn_DEF_ULInformationTransfer_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ULInformationTransfer_tags_1)
+               /sizeof(asn_DEF_ULInformationTransfer_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ULInformationTransfer_1,
+       1,      /* Elements count */
+       &asn_SPC_ULInformationTransfer_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ULInformationTransfer.h b/src/codec_utils/RRC/ULInformationTransfer.h
new file mode 100644 (file)
index 0000000..187dc16
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ULInformationTransfer_H_
+#define        _ULInformationTransfer_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <constr_SEQUENCE.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ULInformationTransfer__criticalExtensions_PR {
+       ULInformationTransfer__criticalExtensions_PR_NOTHING,   /* No components present */
+       ULInformationTransfer__criticalExtensions_PR_ulInformationTransfer,
+       ULInformationTransfer__criticalExtensions_PR_criticalExtensionsFuture
+} ULInformationTransfer__criticalExtensions_PR;
+
+/* Forward declarations */
+struct ULInformationTransfer_IEs;
+
+/* ULInformationTransfer */
+typedef struct ULInformationTransfer {
+       struct ULInformationTransfer__criticalExtensions {
+               ULInformationTransfer__criticalExtensions_PR present;
+               union ULInformationTransfer__criticalExtensions_u {
+                       struct ULInformationTransfer_IEs        *ulInformationTransfer;
+                       struct ULInformationTransfer__criticalExtensions__criticalExtensionsFuture {
+                               
+                               /* Context for parsing across buffer boundaries */
+                               asn_struct_ctx_t _asn_ctx;
+                       } *criticalExtensionsFuture;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } criticalExtensions;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ULInformationTransfer_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ULInformationTransfer;
+extern asn_SEQUENCE_specifics_t asn_SPC_ULInformationTransfer_specs_1;
+extern asn_TYPE_member_t asn_MBR_ULInformationTransfer_1[1];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ULInformationTransfer_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkConfig.c b/src/codec_utils/RRC/UplinkConfig.c
new file mode 100644 (file)
index 0000000..f2d96af
--- /dev/null
@@ -0,0 +1,523 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkConfig.h"
+
+#include "BWP-UplinkDedicated.h"
+#include "BWP-Uplink.h"
+#include "PUSCH-ServingCellConfig.h"
+#include "SRS-CarrierSwitching.h"
+#include "SCS-SpecificCarrier.h"
+static int
+memb_uplinkChannelBW_PerSCS_List_constraint_15(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 <= 5)) {
+               /* 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_uplinkBWP_ToReleaseList_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 <= 4)) {
+               /* 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_uplinkBWP_ToAddModList_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 <= 4)) {
+               /* 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_uplinkBWP_ToReleaseList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_uplinkBWP_ToReleaseList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_uplinkBWP_ToAddModList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_uplinkBWP_ToAddModList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_type_pusch_ServingCellConfig_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_pusch_ServingCellConfig_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_carrierSwitching_constr_11 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_carrierSwitching_constr_11 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_uplinkChannelBW_PerSCS_List_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_type_uplinkChannelBW_PerSCS_List_constr_17 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uplinkChannelBW_PerSCS_List_constr_17 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..5)) */};
+static asn_per_constraints_t asn_PER_memb_uplinkChannelBW_PerSCS_List_constr_17 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uplinkBWP_ToReleaseList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_uplinkBWP_ToReleaseList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uplinkBWP_ToAddModList_constr_5 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_uplinkBWP_ToAddModList_constr_5 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uplinkBWP_ToReleaseList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkBWP_ToReleaseList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkBWP_ToReleaseList_specs_3 = {
+       sizeof(struct UplinkConfig__uplinkBWP_ToReleaseList),
+       offsetof(struct UplinkConfig__uplinkBWP_ToReleaseList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkBWP_ToReleaseList_3 = {
+       "uplinkBWP-ToReleaseList",
+       "uplinkBWP-ToReleaseList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_uplinkBWP_ToReleaseList_tags_3,
+       sizeof(asn_DEF_uplinkBWP_ToReleaseList_tags_3)
+               /sizeof(asn_DEF_uplinkBWP_ToReleaseList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_uplinkBWP_ToReleaseList_tags_3, /* Same as above */
+       sizeof(asn_DEF_uplinkBWP_ToReleaseList_tags_3)
+               /sizeof(asn_DEF_uplinkBWP_ToReleaseList_tags_3[0]), /* 2 */
+       { &asn_OER_type_uplinkBWP_ToReleaseList_constr_3, &asn_PER_type_uplinkBWP_ToReleaseList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_uplinkBWP_ToReleaseList_3,
+       1,      /* Single element */
+       &asn_SPC_uplinkBWP_ToReleaseList_specs_3        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uplinkBWP_ToAddModList_5[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_BWP_Uplink,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkBWP_ToAddModList_tags_5[] = {
+       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkBWP_ToAddModList_specs_5 = {
+       sizeof(struct UplinkConfig__uplinkBWP_ToAddModList),
+       offsetof(struct UplinkConfig__uplinkBWP_ToAddModList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkBWP_ToAddModList_5 = {
+       "uplinkBWP-ToAddModList",
+       "uplinkBWP-ToAddModList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_uplinkBWP_ToAddModList_tags_5,
+       sizeof(asn_DEF_uplinkBWP_ToAddModList_tags_5)
+               /sizeof(asn_DEF_uplinkBWP_ToAddModList_tags_5[0]) - 1, /* 1 */
+       asn_DEF_uplinkBWP_ToAddModList_tags_5,  /* Same as above */
+       sizeof(asn_DEF_uplinkBWP_ToAddModList_tags_5)
+               /sizeof(asn_DEF_uplinkBWP_ToAddModList_tags_5[0]), /* 2 */
+       { &asn_OER_type_uplinkBWP_ToAddModList_constr_5, &asn_PER_type_uplinkBWP_ToAddModList_constr_5, SEQUENCE_OF_constraint },
+       asn_MBR_uplinkBWP_ToAddModList_5,
+       1,      /* Single element */
+       &asn_SPC_uplinkBWP_ToAddModList_specs_5 /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_pusch_ServingCellConfig_8[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfig__pusch_ServingCellConfig, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct UplinkConfig__pusch_ServingCellConfig, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PUSCH_ServingCellConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_pusch_ServingCellConfig_tag2el_8[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_pusch_ServingCellConfig_specs_8 = {
+       sizeof(struct UplinkConfig__pusch_ServingCellConfig),
+       offsetof(struct UplinkConfig__pusch_ServingCellConfig, _asn_ctx),
+       offsetof(struct UplinkConfig__pusch_ServingCellConfig, present),
+       sizeof(((struct UplinkConfig__pusch_ServingCellConfig *)0)->present),
+       asn_MAP_pusch_ServingCellConfig_tag2el_8,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_pusch_ServingCellConfig_8 = {
+       "pusch-ServingCellConfig",
+       "pusch-ServingCellConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_pusch_ServingCellConfig_constr_8, &asn_PER_type_pusch_ServingCellConfig_constr_8, CHOICE_constraint },
+       asn_MBR_pusch_ServingCellConfig_8,
+       2,      /* Elements count */
+       &asn_SPC_pusch_ServingCellConfig_specs_8        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_carrierSwitching_11[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfig__carrierSwitching, choice.release),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NULL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "release"
+               },
+       { ATF_POINTER, 0, offsetof(struct UplinkConfig__carrierSwitching, choice.setup),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SRS_CarrierSwitching,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setup"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_carrierSwitching_tag2el_11[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
+};
+static asn_CHOICE_specifics_t asn_SPC_carrierSwitching_specs_11 = {
+       sizeof(struct UplinkConfig__carrierSwitching),
+       offsetof(struct UplinkConfig__carrierSwitching, _asn_ctx),
+       offsetof(struct UplinkConfig__carrierSwitching, present),
+       sizeof(((struct UplinkConfig__carrierSwitching *)0)->present),
+       asn_MAP_carrierSwitching_tag2el_11,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_carrierSwitching_11 = {
+       "carrierSwitching",
+       "carrierSwitching",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_carrierSwitching_constr_11, &asn_PER_type_carrierSwitching_constr_11, CHOICE_constraint },
+       asn_MBR_carrierSwitching_11,
+       2,      /* Elements count */
+       &asn_SPC_carrierSwitching_specs_11      /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_uplinkChannelBW_PerSCS_List_17[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_SCS_SpecificCarrier,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkChannelBW_PerSCS_List_tags_17[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkChannelBW_PerSCS_List_specs_17 = {
+       sizeof(struct UplinkConfig__ext1__uplinkChannelBW_PerSCS_List),
+       offsetof(struct UplinkConfig__ext1__uplinkChannelBW_PerSCS_List, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkChannelBW_PerSCS_List_17 = {
+       "uplinkChannelBW-PerSCS-List",
+       "uplinkChannelBW-PerSCS-List",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_uplinkChannelBW_PerSCS_List_tags_17,
+       sizeof(asn_DEF_uplinkChannelBW_PerSCS_List_tags_17)
+               /sizeof(asn_DEF_uplinkChannelBW_PerSCS_List_tags_17[0]) - 1, /* 1 */
+       asn_DEF_uplinkChannelBW_PerSCS_List_tags_17,    /* Same as above */
+       sizeof(asn_DEF_uplinkChannelBW_PerSCS_List_tags_17)
+               /sizeof(asn_DEF_uplinkChannelBW_PerSCS_List_tags_17[0]), /* 2 */
+       { &asn_OER_type_uplinkChannelBW_PerSCS_List_constr_17, &asn_PER_type_uplinkChannelBW_PerSCS_List_constr_17, SEQUENCE_OF_constraint },
+       asn_MBR_uplinkChannelBW_PerSCS_List_17,
+       1,      /* Single element */
+       &asn_SPC_uplinkChannelBW_PerSCS_List_specs_17   /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_ext1_15[] = {
+       { ATF_POINTER, 2, offsetof(struct UplinkConfig__ext1, powerBoostPi2BPSK),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "powerBoostPi2BPSK"
+               },
+       { ATF_POINTER, 1, offsetof(struct UplinkConfig__ext1, uplinkChannelBW_PerSCS_List),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_uplinkChannelBW_PerSCS_List_17,
+               0,
+               { &asn_OER_memb_uplinkChannelBW_PerSCS_List_constr_17, &asn_PER_memb_uplinkChannelBW_PerSCS_List_constr_17,  memb_uplinkChannelBW_PerSCS_List_constraint_15 },
+               0, 0, /* No default value */
+               "uplinkChannelBW-PerSCS-List"
+               },
+};
+static const int asn_MAP_ext1_oms_15[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_ext1_tags_15[] = {
+       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_15[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* powerBoostPi2BPSK */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkChannelBW-PerSCS-List */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_15 = {
+       sizeof(struct UplinkConfig__ext1),
+       offsetof(struct UplinkConfig__ext1, _asn_ctx),
+       asn_MAP_ext1_tag2el_15,
+       2,      /* Count of tags in the map */
+       asn_MAP_ext1_oms_15,    /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_ext1_15 = {
+       "ext1",
+       "ext1",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ext1_tags_15,
+       sizeof(asn_DEF_ext1_tags_15)
+               /sizeof(asn_DEF_ext1_tags_15[0]) - 1, /* 1 */
+       asn_DEF_ext1_tags_15,   /* Same as above */
+       sizeof(asn_DEF_ext1_tags_15)
+               /sizeof(asn_DEF_ext1_tags_15[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ext1_15,
+       2,      /* Elements count */
+       &asn_SPC_ext1_specs_15  /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UplinkConfig_1[] = {
+       { ATF_POINTER, 7, offsetof(struct UplinkConfig, initialUplinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_UplinkDedicated,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialUplinkBWP"
+               },
+       { ATF_POINTER, 6, offsetof(struct UplinkConfig, uplinkBWP_ToReleaseList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_uplinkBWP_ToReleaseList_3,
+               0,
+               { &asn_OER_memb_uplinkBWP_ToReleaseList_constr_3, &asn_PER_memb_uplinkBWP_ToReleaseList_constr_3,  memb_uplinkBWP_ToReleaseList_constraint_1 },
+               0, 0, /* No default value */
+               "uplinkBWP-ToReleaseList"
+               },
+       { ATF_POINTER, 5, offsetof(struct UplinkConfig, uplinkBWP_ToAddModList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               0,
+               &asn_DEF_uplinkBWP_ToAddModList_5,
+               0,
+               { &asn_OER_memb_uplinkBWP_ToAddModList_constr_5, &asn_PER_memb_uplinkBWP_ToAddModList_constr_5,  memb_uplinkBWP_ToAddModList_constraint_1 },
+               0, 0, /* No default value */
+               "uplinkBWP-ToAddModList"
+               },
+       { ATF_POINTER, 4, offsetof(struct UplinkConfig, firstActiveUplinkBWP_Id),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "firstActiveUplinkBWP-Id"
+               },
+       { ATF_POINTER, 3, offsetof(struct UplinkConfig, pusch_ServingCellConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_pusch_ServingCellConfig_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pusch-ServingCellConfig"
+               },
+       { ATF_POINTER, 2, offsetof(struct UplinkConfig, carrierSwitching),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_carrierSwitching_11,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "carrierSwitching"
+               },
+       { ATF_POINTER, 1, offsetof(struct UplinkConfig, ext1),
+               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
+               0,
+               &asn_DEF_ext1_15,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ext1"
+               },
+};
+static const int asn_MAP_UplinkConfig_oms_1[] = { 0, 1, 2, 3, 4, 5, 6 };
+static const ber_tlv_tag_t asn_DEF_UplinkConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UplinkConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* initialUplinkBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uplinkBWP-ToReleaseList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uplinkBWP-ToAddModList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* firstActiveUplinkBWP-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pusch-ServingCellConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* carrierSwitching */
+    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* ext1 */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UplinkConfig_specs_1 = {
+       sizeof(struct UplinkConfig),
+       offsetof(struct UplinkConfig, _asn_ctx),
+       asn_MAP_UplinkConfig_tag2el_1,
+       7,      /* Count of tags in the map */
+       asn_MAP_UplinkConfig_oms_1,     /* Optional members */
+       6, 1,   /* Root/Additions */
+       6,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UplinkConfig = {
+       "UplinkConfig",
+       "UplinkConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UplinkConfig_tags_1,
+       sizeof(asn_DEF_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_UplinkConfig_tags_1[0]), /* 1 */
+       asn_DEF_UplinkConfig_tags_1,    /* Same as above */
+       sizeof(asn_DEF_UplinkConfig_tags_1)
+               /sizeof(asn_DEF_UplinkConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UplinkConfig_1,
+       7,      /* Elements count */
+       &asn_SPC_UplinkConfig_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkConfig.h b/src/codec_utils/RRC/UplinkConfig.h
new file mode 100644 (file)
index 0000000..0a2a6d3
--- /dev/null
@@ -0,0 +1,113 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkConfig_H_
+#define        _UplinkConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <NULL.h>
+#include <constr_CHOICE.h>
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UplinkConfig__pusch_ServingCellConfig_PR {
+       UplinkConfig__pusch_ServingCellConfig_PR_NOTHING,       /* No components present */
+       UplinkConfig__pusch_ServingCellConfig_PR_release,
+       UplinkConfig__pusch_ServingCellConfig_PR_setup
+} UplinkConfig__pusch_ServingCellConfig_PR;
+typedef enum UplinkConfig__carrierSwitching_PR {
+       UplinkConfig__carrierSwitching_PR_NOTHING,      /* No components present */
+       UplinkConfig__carrierSwitching_PR_release,
+       UplinkConfig__carrierSwitching_PR_setup
+} UplinkConfig__carrierSwitching_PR;
+
+/* Forward declarations */
+struct BWP_UplinkDedicated;
+struct BWP_Uplink;
+struct PUSCH_ServingCellConfig;
+struct SRS_CarrierSwitching;
+struct SCS_SpecificCarrier;
+
+/* UplinkConfig */
+typedef struct UplinkConfig {
+       struct BWP_UplinkDedicated      *initialUplinkBWP;      /* OPTIONAL */
+       struct UplinkConfig__uplinkBWP_ToReleaseList {
+               A_SEQUENCE_OF(BWP_Id_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uplinkBWP_ToReleaseList;
+       struct UplinkConfig__uplinkBWP_ToAddModList {
+               A_SEQUENCE_OF(struct BWP_Uplink) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *uplinkBWP_ToAddModList;
+       BWP_Id_t        *firstActiveUplinkBWP_Id;       /* OPTIONAL */
+       struct UplinkConfig__pusch_ServingCellConfig {
+               UplinkConfig__pusch_ServingCellConfig_PR present;
+               union UplinkConfig__pusch_ServingCellConfig_u {
+                       NULL_t   release;
+                       struct PUSCH_ServingCellConfig  *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *pusch_ServingCellConfig;
+       struct UplinkConfig__carrierSwitching {
+               UplinkConfig__carrierSwitching_PR present;
+               union UplinkConfig__carrierSwitching_u {
+                       NULL_t   release;
+                       struct SRS_CarrierSwitching     *setup;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *carrierSwitching;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       struct UplinkConfig__ext1 {
+               BOOLEAN_t       *powerBoostPi2BPSK;     /* OPTIONAL */
+               struct UplinkConfig__ext1__uplinkChannelBW_PerSCS_List {
+                       A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
+                       
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } *uplinkChannelBW_PerSCS_List;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *ext1;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkConfig;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkConfig_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkConfig_1[7];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkConfigCommon.c b/src/codec_utils/RRC/UplinkConfigCommon.c
new file mode 100644 (file)
index 0000000..88dc991
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkConfigCommon.h"
+
+#include "FrequencyInfoUL.h"
+#include "BWP-UplinkCommon.h"
+asn_TYPE_member_t asn_MBR_UplinkConfigCommon_1[] = {
+       { ATF_POINTER, 2, offsetof(struct UplinkConfigCommon, frequencyInfoUL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FrequencyInfoUL,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyInfoUL"
+               },
+       { ATF_POINTER, 1, offsetof(struct UplinkConfigCommon, initialUplinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_UplinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialUplinkBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommon, dummy),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeAlignmentTimer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "dummy"
+               },
+};
+static const int asn_MAP_UplinkConfigCommon_oms_1[] = { 0, 1 };
+static const ber_tlv_tag_t asn_DEF_UplinkConfigCommon_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UplinkConfigCommon_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoUL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialUplinkBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* dummy */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommon_specs_1 = {
+       sizeof(struct UplinkConfigCommon),
+       offsetof(struct UplinkConfigCommon, _asn_ctx),
+       asn_MAP_UplinkConfigCommon_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_UplinkConfigCommon_oms_1,       /* Optional members */
+       2, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommon = {
+       "UplinkConfigCommon",
+       "UplinkConfigCommon",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UplinkConfigCommon_tags_1,
+       sizeof(asn_DEF_UplinkConfigCommon_tags_1)
+               /sizeof(asn_DEF_UplinkConfigCommon_tags_1[0]), /* 1 */
+       asn_DEF_UplinkConfigCommon_tags_1,      /* Same as above */
+       sizeof(asn_DEF_UplinkConfigCommon_tags_1)
+               /sizeof(asn_DEF_UplinkConfigCommon_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UplinkConfigCommon_1,
+       3,      /* Elements count */
+       &asn_SPC_UplinkConfigCommon_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkConfigCommon.h b/src/codec_utils/RRC/UplinkConfigCommon.h
new file mode 100644 (file)
index 0000000..145c39c
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkConfigCommon_H_
+#define        _UplinkConfigCommon_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "TimeAlignmentTimer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct FrequencyInfoUL;
+struct BWP_UplinkCommon;
+
+/* UplinkConfigCommon */
+typedef struct UplinkConfigCommon {
+       struct FrequencyInfoUL  *frequencyInfoUL;       /* OPTIONAL */
+       struct BWP_UplinkCommon *initialUplinkBWP;      /* OPTIONAL */
+       TimeAlignmentTimer_t     dummy;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkConfigCommon_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommon;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommon_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkConfigCommon_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkConfigCommon_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkConfigCommonSIB.c b/src/codec_utils/RRC/UplinkConfigCommonSIB.c
new file mode 100644 (file)
index 0000000..ae18435
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkConfigCommonSIB.h"
+
+asn_TYPE_member_t asn_MBR_UplinkConfigCommonSIB_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, frequencyInfoUL),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_FrequencyInfoUL_SIB,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "frequencyInfoUL"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, initialUplinkBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_UplinkCommon,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "initialUplinkBWP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, timeAlignmentTimerCommon),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_TimeAlignmentTimer,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "timeAlignmentTimerCommon"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UplinkConfigCommonSIB_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UplinkConfigCommonSIB_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoUL */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialUplinkBWP */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timeAlignmentTimerCommon */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommonSIB_specs_1 = {
+       sizeof(struct UplinkConfigCommonSIB),
+       offsetof(struct UplinkConfigCommonSIB, _asn_ctx),
+       asn_MAP_UplinkConfigCommonSIB_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommonSIB = {
+       "UplinkConfigCommonSIB",
+       "UplinkConfigCommonSIB",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UplinkConfigCommonSIB_tags_1,
+       sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1[0]), /* 1 */
+       asn_DEF_UplinkConfigCommonSIB_tags_1,   /* Same as above */
+       sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1)
+               /sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UplinkConfigCommonSIB_1,
+       3,      /* Elements count */
+       &asn_SPC_UplinkConfigCommonSIB_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkConfigCommonSIB.h b/src/codec_utils/RRC/UplinkConfigCommonSIB.h
new file mode 100644 (file)
index 0000000..8c4ea45
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkConfigCommonSIB_H_
+#define        _UplinkConfigCommonSIB_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "FrequencyInfoUL-SIB.h"
+#include "BWP-UplinkCommon.h"
+#include "TimeAlignmentTimer.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UplinkConfigCommonSIB */
+typedef struct UplinkConfigCommonSIB {
+       FrequencyInfoUL_SIB_t    frequencyInfoUL;
+       BWP_UplinkCommon_t       initialUplinkBWP;
+       TimeAlignmentTimer_t     timeAlignmentTimerCommon;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkConfigCommonSIB_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommonSIB;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommonSIB_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkConfigCommonSIB_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkConfigCommonSIB_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentBWP.c b/src/codec_utils/RRC/UplinkTxDirectCurrentBWP.c
new file mode 100644 (file)
index 0000000..7f5694e
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkTxDirectCurrentBWP.h"
+
+static int
+memb_txDirectCurrentLocation_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 >= 0 && value <= 3301)) {
+               /* 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_txDirectCurrentLocation_constr_4 CC_NOTUSED = {
+       { 2, 1 }        /* (0..3301) */,
+       -1};
+static asn_per_constraints_t asn_PER_memb_txDirectCurrentLocation_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       12,  12,  0,  3301 }   /* (0..3301) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentBWP_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkTxDirectCurrentBWP, bwp_Id),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BWP_Id,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bwp-Id"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkTxDirectCurrentBWP, shift7dot5kHz),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "shift7dot5kHz"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkTxDirectCurrentBWP, txDirectCurrentLocation),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { &asn_OER_memb_txDirectCurrentLocation_constr_4, &asn_PER_memb_txDirectCurrentLocation_constr_4,  memb_txDirectCurrentLocation_constraint_1 },
+               0, 0, /* No default value */
+               "txDirectCurrentLocation"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UplinkTxDirectCurrentBWP_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UplinkTxDirectCurrentBWP_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* bwp-Id */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* shift7dot5kHz */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* txDirectCurrentLocation */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UplinkTxDirectCurrentBWP_specs_1 = {
+       sizeof(struct UplinkTxDirectCurrentBWP),
+       offsetof(struct UplinkTxDirectCurrentBWP, _asn_ctx),
+       asn_MAP_UplinkTxDirectCurrentBWP_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_UplinkTxDirectCurrentBWP = {
+       "UplinkTxDirectCurrentBWP",
+       "UplinkTxDirectCurrentBWP",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UplinkTxDirectCurrentBWP_tags_1,
+       sizeof(asn_DEF_UplinkTxDirectCurrentBWP_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentBWP_tags_1[0]), /* 1 */
+       asn_DEF_UplinkTxDirectCurrentBWP_tags_1,        /* Same as above */
+       sizeof(asn_DEF_UplinkTxDirectCurrentBWP_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentBWP_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UplinkTxDirectCurrentBWP_1,
+       3,      /* Elements count */
+       &asn_SPC_UplinkTxDirectCurrentBWP_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentBWP.h b/src/codec_utils/RRC/UplinkTxDirectCurrentBWP.h
new file mode 100644 (file)
index 0000000..2ab4654
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkTxDirectCurrentBWP_H_
+#define        _UplinkTxDirectCurrentBWP_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "BWP-Id.h"
+#include <BOOLEAN.h>
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* UplinkTxDirectCurrentBWP */
+typedef struct UplinkTxDirectCurrentBWP {
+       BWP_Id_t         bwp_Id;
+       BOOLEAN_t        shift7dot5kHz;
+       long     txDirectCurrentLocation;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkTxDirectCurrentBWP_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkTxDirectCurrentBWP;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkTxDirectCurrentBWP_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentBWP_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkTxDirectCurrentBWP_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentCell.c b/src/codec_utils/RRC/UplinkTxDirectCurrentCell.c
new file mode 100644 (file)
index 0000000..80150ea
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkTxDirectCurrentCell.h"
+
+#include "UplinkTxDirectCurrentBWP.h"
+static int
+memb_uplinkDirectCurrentBWP_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 <= 4)) {
+               /* 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_uplinkDirectCurrentBWP_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_type_uplinkDirectCurrentBWP_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_uplinkDirectCurrentBWP_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..4)) */};
+static asn_per_constraints_t asn_PER_memb_uplinkDirectCurrentBWP_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_uplinkDirectCurrentBWP_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UplinkTxDirectCurrentBWP,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_uplinkDirectCurrentBWP_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_uplinkDirectCurrentBWP_specs_3 = {
+       sizeof(struct UplinkTxDirectCurrentCell__uplinkDirectCurrentBWP),
+       offsetof(struct UplinkTxDirectCurrentCell__uplinkDirectCurrentBWP, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_uplinkDirectCurrentBWP_3 = {
+       "uplinkDirectCurrentBWP",
+       "uplinkDirectCurrentBWP",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_uplinkDirectCurrentBWP_tags_3,
+       sizeof(asn_DEF_uplinkDirectCurrentBWP_tags_3)
+               /sizeof(asn_DEF_uplinkDirectCurrentBWP_tags_3[0]) - 1, /* 1 */
+       asn_DEF_uplinkDirectCurrentBWP_tags_3,  /* Same as above */
+       sizeof(asn_DEF_uplinkDirectCurrentBWP_tags_3)
+               /sizeof(asn_DEF_uplinkDirectCurrentBWP_tags_3[0]), /* 2 */
+       { &asn_OER_type_uplinkDirectCurrentBWP_constr_3, &asn_PER_type_uplinkDirectCurrentBWP_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_uplinkDirectCurrentBWP_3,
+       1,      /* Single element */
+       &asn_SPC_uplinkDirectCurrentBWP_specs_3 /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentCell_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkTxDirectCurrentCell, servCellIndex),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ServCellIndex,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "servCellIndex"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct UplinkTxDirectCurrentCell, uplinkDirectCurrentBWP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_uplinkDirectCurrentBWP_3,
+               0,
+               { &asn_OER_memb_uplinkDirectCurrentBWP_constr_3, &asn_PER_memb_uplinkDirectCurrentBWP_constr_3,  memb_uplinkDirectCurrentBWP_constraint_1 },
+               0, 0, /* No default value */
+               "uplinkDirectCurrentBWP"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UplinkTxDirectCurrentCell_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_UplinkTxDirectCurrentCell_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* servCellIndex */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uplinkDirectCurrentBWP */
+};
+asn_SEQUENCE_specifics_t asn_SPC_UplinkTxDirectCurrentCell_specs_1 = {
+       sizeof(struct UplinkTxDirectCurrentCell),
+       offsetof(struct UplinkTxDirectCurrentCell, _asn_ctx),
+       asn_MAP_UplinkTxDirectCurrentCell_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_UplinkTxDirectCurrentCell = {
+       "UplinkTxDirectCurrentCell",
+       "UplinkTxDirectCurrentCell",
+       &asn_OP_SEQUENCE,
+       asn_DEF_UplinkTxDirectCurrentCell_tags_1,
+       sizeof(asn_DEF_UplinkTxDirectCurrentCell_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentCell_tags_1[0]), /* 1 */
+       asn_DEF_UplinkTxDirectCurrentCell_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UplinkTxDirectCurrentCell_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentCell_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_UplinkTxDirectCurrentCell_1,
+       2,      /* Elements count */
+       &asn_SPC_UplinkTxDirectCurrentCell_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentCell.h b/src/codec_utils/RRC/UplinkTxDirectCurrentCell.h
new file mode 100644 (file)
index 0000000..aac6eed
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkTxDirectCurrentCell_H_
+#define        _UplinkTxDirectCurrentCell_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ServCellIndex.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct UplinkTxDirectCurrentBWP;
+
+/* UplinkTxDirectCurrentCell */
+typedef struct UplinkTxDirectCurrentCell {
+       ServCellIndex_t  servCellIndex;
+       struct UplinkTxDirectCurrentCell__uplinkDirectCurrentBWP {
+               A_SEQUENCE_OF(struct UplinkTxDirectCurrentBWP) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } uplinkDirectCurrentBWP;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkTxDirectCurrentCell_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkTxDirectCurrentCell;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkTxDirectCurrentCell_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentCell_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkTxDirectCurrentCell_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentList.c b/src/codec_utils/RRC/UplinkTxDirectCurrentList.c
new file mode 100644 (file)
index 0000000..76864ff
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "UplinkTxDirectCurrentList.h"
+
+#include "UplinkTxDirectCurrentCell.h"
+static asn_oer_constraints_t asn_OER_type_UplinkTxDirectCurrentList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..32)) */};
+asn_per_constraints_t asn_PER_type_UplinkTxDirectCurrentList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
+       0, 0    /* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_UplinkTxDirectCurrentCell,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_UplinkTxDirectCurrentList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_UplinkTxDirectCurrentList_specs_1 = {
+       sizeof(struct UplinkTxDirectCurrentList),
+       offsetof(struct UplinkTxDirectCurrentList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_UplinkTxDirectCurrentList = {
+       "UplinkTxDirectCurrentList",
+       "UplinkTxDirectCurrentList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_UplinkTxDirectCurrentList_tags_1,
+       sizeof(asn_DEF_UplinkTxDirectCurrentList_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentList_tags_1[0]), /* 1 */
+       asn_DEF_UplinkTxDirectCurrentList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_UplinkTxDirectCurrentList_tags_1)
+               /sizeof(asn_DEF_UplinkTxDirectCurrentList_tags_1[0]), /* 1 */
+       { &asn_OER_type_UplinkTxDirectCurrentList_constr_1, &asn_PER_type_UplinkTxDirectCurrentList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_UplinkTxDirectCurrentList_1,
+       1,      /* Single element */
+       &asn_SPC_UplinkTxDirectCurrentList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/UplinkTxDirectCurrentList.h b/src/codec_utils/RRC/UplinkTxDirectCurrentList.h
new file mode 100644 (file)
index 0000000..4de861e
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _UplinkTxDirectCurrentList_H_
+#define        _UplinkTxDirectCurrentList_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 UplinkTxDirectCurrentCell;
+
+/* UplinkTxDirectCurrentList */
+typedef struct UplinkTxDirectCurrentList {
+       A_SEQUENCE_OF(struct UplinkTxDirectCurrentCell) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} UplinkTxDirectCurrentList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UplinkTxDirectCurrentList;
+extern asn_SET_OF_specifics_t asn_SPC_UplinkTxDirectCurrentList_specs_1;
+extern asn_TYPE_member_t asn_MBR_UplinkTxDirectCurrentList_1[1];
+extern asn_per_constraints_t asn_PER_type_UplinkTxDirectCurrentList_constr_1;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UplinkTxDirectCurrentList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarMeasConfig.c b/src/codec_utils/RRC/VarMeasConfig.c
new file mode 100644 (file)
index 0000000..24ac443
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarMeasConfig.h"
+
+#include "MeasIdToAddModList.h"
+#include "MeasObjectToAddModList.h"
+#include "ReportConfigToAddModList.h"
+#include "QuantityConfig.h"
+static asn_oer_constraints_t asn_OER_type_s_MeasureConfig_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_s_MeasureConfig_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_s_MeasureConfig_6[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct VarMeasConfig__s_MeasureConfig, choice.ssb_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "ssb-RSRP"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarMeasConfig__s_MeasureConfig, choice.csi_RSRP),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RSRP_Range,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "csi-RSRP"
+               },
+};
+static const asn_TYPE_tag2member_t asn_MAP_s_MeasureConfig_tag2el_6[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ssb-RSRP */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* csi-RSRP */
+};
+static asn_CHOICE_specifics_t asn_SPC_s_MeasureConfig_specs_6 = {
+       sizeof(struct VarMeasConfig__s_MeasureConfig),
+       offsetof(struct VarMeasConfig__s_MeasureConfig, _asn_ctx),
+       offsetof(struct VarMeasConfig__s_MeasureConfig, present),
+       sizeof(((struct VarMeasConfig__s_MeasureConfig *)0)->present),
+       asn_MAP_s_MeasureConfig_tag2el_6,
+       2,      /* Count of tags in the map */
+       0, 0,
+       -1      /* Extensions start */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_s_MeasureConfig_6 = {
+       "s-MeasureConfig",
+       "s-MeasureConfig",
+       &asn_OP_CHOICE,
+       0,      /* No effective tags (pointer) */
+       0,      /* No effective tags (count) */
+       0,      /* No tags (pointer) */
+       0,      /* No tags (count) */
+       { &asn_OER_type_s_MeasureConfig_constr_6, &asn_PER_type_s_MeasureConfig_constr_6, CHOICE_constraint },
+       asn_MBR_s_MeasureConfig_6,
+       2,      /* Elements count */
+       &asn_SPC_s_MeasureConfig_specs_6        /* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_VarMeasConfig_1[] = {
+       { ATF_POINTER, 5, offsetof(struct VarMeasConfig, measIdList),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasIdToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measIdList"
+               },
+       { ATF_POINTER, 4, offsetof(struct VarMeasConfig, measObjectList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasObjectToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measObjectList"
+               },
+       { ATF_POINTER, 3, offsetof(struct VarMeasConfig, reportConfigList),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ReportConfigToAddModList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "reportConfigList"
+               },
+       { ATF_POINTER, 2, offsetof(struct VarMeasConfig, quantityConfig),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_QuantityConfig,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "quantityConfig"
+               },
+       { ATF_POINTER, 1, offsetof(struct VarMeasConfig, s_MeasureConfig),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_s_MeasureConfig_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "s-MeasureConfig"
+               },
+};
+static const int asn_MAP_VarMeasConfig_oms_1[] = { 0, 1, 2, 3, 4 };
+static const ber_tlv_tag_t asn_DEF_VarMeasConfig_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VarMeasConfig_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measIdList */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* measObjectList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* reportConfigList */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* quantityConfig */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* s-MeasureConfig */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_VarMeasConfig_specs_1 = {
+       sizeof(struct VarMeasConfig),
+       offsetof(struct VarMeasConfig, _asn_ctx),
+       asn_MAP_VarMeasConfig_tag2el_1,
+       5,      /* Count of tags in the map */
+       asn_MAP_VarMeasConfig_oms_1,    /* Optional members */
+       5, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VarMeasConfig = {
+       "VarMeasConfig",
+       "VarMeasConfig",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VarMeasConfig_tags_1,
+       sizeof(asn_DEF_VarMeasConfig_tags_1)
+               /sizeof(asn_DEF_VarMeasConfig_tags_1[0]), /* 1 */
+       asn_DEF_VarMeasConfig_tags_1,   /* Same as above */
+       sizeof(asn_DEF_VarMeasConfig_tags_1)
+               /sizeof(asn_DEF_VarMeasConfig_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VarMeasConfig_1,
+       5,      /* Elements count */
+       &asn_SPC_VarMeasConfig_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarMeasConfig.h b/src/codec_utils/RRC/VarMeasConfig.h
new file mode 100644 (file)
index 0000000..ccdfd6a
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarMeasConfig_H_
+#define        _VarMeasConfig_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "RSRP-Range.h"
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum VarMeasConfig__s_MeasureConfig_PR {
+       VarMeasConfig__s_MeasureConfig_PR_NOTHING,      /* No components present */
+       VarMeasConfig__s_MeasureConfig_PR_ssb_RSRP,
+       VarMeasConfig__s_MeasureConfig_PR_csi_RSRP
+} VarMeasConfig__s_MeasureConfig_PR;
+
+/* Forward declarations */
+struct MeasIdToAddModList;
+struct MeasObjectToAddModList;
+struct ReportConfigToAddModList;
+struct QuantityConfig;
+
+/* VarMeasConfig */
+typedef struct VarMeasConfig {
+       struct MeasIdToAddModList       *measIdList;    /* OPTIONAL */
+       struct MeasObjectToAddModList   *measObjectList;        /* OPTIONAL */
+       struct ReportConfigToAddModList *reportConfigList;      /* OPTIONAL */
+       struct QuantityConfig   *quantityConfig;        /* OPTIONAL */
+       struct VarMeasConfig__s_MeasureConfig {
+               VarMeasConfig__s_MeasureConfig_PR present;
+               union VarMeasConfig__s_MeasureConfig_u {
+                       RSRP_Range_t     ssb_RSRP;
+                       RSRP_Range_t     csi_RSRP;
+               } choice;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } *s_MeasureConfig;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarMeasConfig_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarMeasConfig;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarMeasConfig_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarMeasReport.c b/src/codec_utils/RRC/VarMeasReport.c
new file mode 100644 (file)
index 0000000..f191cb5
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarMeasReport.h"
+
+#include "CellsTriggeredList.h"
+asn_TYPE_member_t asn_MBR_VarMeasReport_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct VarMeasReport, measId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_MeasId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "measId"
+               },
+       { ATF_POINTER, 1, offsetof(struct VarMeasReport, cellsTriggeredList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellsTriggeredList,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "cellsTriggeredList"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarMeasReport, numberOfReportsSent),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_NativeInteger,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "numberOfReportsSent"
+               },
+};
+static const int asn_MAP_VarMeasReport_oms_1[] = { 1 };
+static const ber_tlv_tag_t asn_DEF_VarMeasReport_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VarMeasReport_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* measId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellsTriggeredList */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* numberOfReportsSent */
+};
+asn_SEQUENCE_specifics_t asn_SPC_VarMeasReport_specs_1 = {
+       sizeof(struct VarMeasReport),
+       offsetof(struct VarMeasReport, _asn_ctx),
+       asn_MAP_VarMeasReport_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_VarMeasReport_oms_1,    /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VarMeasReport = {
+       "VarMeasReport",
+       "VarMeasReport",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VarMeasReport_tags_1,
+       sizeof(asn_DEF_VarMeasReport_tags_1)
+               /sizeof(asn_DEF_VarMeasReport_tags_1[0]), /* 1 */
+       asn_DEF_VarMeasReport_tags_1,   /* Same as above */
+       sizeof(asn_DEF_VarMeasReport_tags_1)
+               /sizeof(asn_DEF_VarMeasReport_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VarMeasReport_1,
+       3,      /* Elements count */
+       &asn_SPC_VarMeasReport_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarMeasReport.h b/src/codec_utils/RRC/VarMeasReport.h
new file mode 100644 (file)
index 0000000..e11cd33
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarMeasReport_H_
+#define        _VarMeasReport_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "MeasId.h"
+#include <NativeInteger.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CellsTriggeredList;
+
+/* VarMeasReport */
+typedef struct VarMeasReport {
+       MeasId_t         measId;
+       struct CellsTriggeredList       *cellsTriggeredList;    /* OPTIONAL */
+       long     numberOfReportsSent;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarMeasReport_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarMeasReport;
+extern asn_SEQUENCE_specifics_t asn_SPC_VarMeasReport_specs_1;
+extern asn_TYPE_member_t asn_MBR_VarMeasReport_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarMeasReport_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarMeasReportList.c b/src/codec_utils/RRC/VarMeasReportList.c
new file mode 100644 (file)
index 0000000..29c545e
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarMeasReportList.h"
+
+#include "VarMeasReport.h"
+static asn_oer_constraints_t asn_OER_type_VarMeasReportList_constr_1 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..64)) */};
+static asn_per_constraints_t asn_PER_type_VarMeasReportList_constr_1 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_VarMeasReportList_1[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+               0,
+               &asn_DEF_VarMeasReport,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_VarMeasReportList_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_VarMeasReportList_specs_1 = {
+       sizeof(struct VarMeasReportList),
+       offsetof(struct VarMeasReportList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_VarMeasReportList = {
+       "VarMeasReportList",
+       "VarMeasReportList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_VarMeasReportList_tags_1,
+       sizeof(asn_DEF_VarMeasReportList_tags_1)
+               /sizeof(asn_DEF_VarMeasReportList_tags_1[0]), /* 1 */
+       asn_DEF_VarMeasReportList_tags_1,       /* Same as above */
+       sizeof(asn_DEF_VarMeasReportList_tags_1)
+               /sizeof(asn_DEF_VarMeasReportList_tags_1[0]), /* 1 */
+       { &asn_OER_type_VarMeasReportList_constr_1, &asn_PER_type_VarMeasReportList_constr_1, SEQUENCE_OF_constraint },
+       asn_MBR_VarMeasReportList_1,
+       1,      /* Single element */
+       &asn_SPC_VarMeasReportList_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarMeasReportList.h b/src/codec_utils/RRC/VarMeasReportList.h
new file mode 100644 (file)
index 0000000..831cad2
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarMeasReportList_H_
+#define        _VarMeasReportList_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 VarMeasReport;
+
+/* VarMeasReportList */
+typedef struct VarMeasReportList {
+       A_SEQUENCE_OF(struct VarMeasReport) list;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarMeasReportList_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarMeasReportList;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarMeasReportList_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarPendingRNA-Update.c b/src/codec_utils/RRC/VarPendingRNA-Update.c
new file mode 100644 (file)
index 0000000..919b6dd
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarPendingRNA-Update.h"
+
+static asn_TYPE_member_t asn_MBR_VarPendingRNA_Update_1[] = {
+       { ATF_POINTER, 1, offsetof(struct VarPendingRNA_Update, pendingRNA_Update),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_BOOLEAN,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "pendingRNA-Update"
+               },
+};
+static const int asn_MAP_VarPendingRNA_Update_oms_1[] = { 0 };
+static const ber_tlv_tag_t asn_DEF_VarPendingRNA_Update_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VarPendingRNA_Update_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pendingRNA-Update */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_VarPendingRNA_Update_specs_1 = {
+       sizeof(struct VarPendingRNA_Update),
+       offsetof(struct VarPendingRNA_Update, _asn_ctx),
+       asn_MAP_VarPendingRNA_Update_tag2el_1,
+       1,      /* Count of tags in the map */
+       asn_MAP_VarPendingRNA_Update_oms_1,     /* Optional members */
+       1, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VarPendingRNA_Update = {
+       "VarPendingRNA-Update",
+       "VarPendingRNA-Update",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VarPendingRNA_Update_tags_1,
+       sizeof(asn_DEF_VarPendingRNA_Update_tags_1)
+               /sizeof(asn_DEF_VarPendingRNA_Update_tags_1[0]), /* 1 */
+       asn_DEF_VarPendingRNA_Update_tags_1,    /* Same as above */
+       sizeof(asn_DEF_VarPendingRNA_Update_tags_1)
+               /sizeof(asn_DEF_VarPendingRNA_Update_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VarPendingRNA_Update_1,
+       1,      /* Elements count */
+       &asn_SPC_VarPendingRNA_Update_specs_1   /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarPendingRNA-Update.h b/src/codec_utils/RRC/VarPendingRNA-Update.h
new file mode 100644 (file)
index 0000000..6936320
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarPendingRNA_Update_H_
+#define        _VarPendingRNA_Update_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* VarPendingRNA-Update */
+typedef struct VarPendingRNA_Update {
+       BOOLEAN_t       *pendingRNA_Update;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarPendingRNA_Update_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarPendingRNA_Update;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarPendingRNA_Update_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarResumeMAC-Input.c b/src/codec_utils/RRC/VarResumeMAC-Input.c
new file mode 100644 (file)
index 0000000..be5b714
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarResumeMAC-Input.h"
+
+static asn_TYPE_member_t asn_MBR_VarResumeMAC_Input_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct VarResumeMAC_Input, sourcePhysCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sourcePhysCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarResumeMAC_Input, targetCellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetCellIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarResumeMAC_Input, source_c_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "source-c-RNTI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_VarResumeMAC_Input_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VarResumeMAC_Input_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourcePhysCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetCellIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* source-c-RNTI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_VarResumeMAC_Input_specs_1 = {
+       sizeof(struct VarResumeMAC_Input),
+       offsetof(struct VarResumeMAC_Input, _asn_ctx),
+       asn_MAP_VarResumeMAC_Input_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VarResumeMAC_Input = {
+       "VarResumeMAC-Input",
+       "VarResumeMAC-Input",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VarResumeMAC_Input_tags_1,
+       sizeof(asn_DEF_VarResumeMAC_Input_tags_1)
+               /sizeof(asn_DEF_VarResumeMAC_Input_tags_1[0]), /* 1 */
+       asn_DEF_VarResumeMAC_Input_tags_1,      /* Same as above */
+       sizeof(asn_DEF_VarResumeMAC_Input_tags_1)
+               /sizeof(asn_DEF_VarResumeMAC_Input_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VarResumeMAC_Input_1,
+       3,      /* Elements count */
+       &asn_SPC_VarResumeMAC_Input_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarResumeMAC-Input.h b/src/codec_utils/RRC/VarResumeMAC-Input.h
new file mode 100644 (file)
index 0000000..7cda0de
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarResumeMAC_Input_H_
+#define        _VarResumeMAC_Input_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "CellIdentity.h"
+#include "RNTI-Value.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* VarResumeMAC-Input */
+typedef struct VarResumeMAC_Input {
+       PhysCellId_t     sourcePhysCellId;
+       CellIdentity_t   targetCellIdentity;
+       RNTI_Value_t     source_c_RNTI;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarResumeMAC_Input_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarResumeMAC_Input;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarResumeMAC_Input_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VarShortMAC-Input.c b/src/codec_utils/RRC/VarShortMAC-Input.c
new file mode 100644 (file)
index 0000000..a4cbd9f
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VarShortMAC-Input.h"
+
+static asn_TYPE_member_t asn_MBR_VarShortMAC_Input_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct VarShortMAC_Input, sourcePhysCellId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_PhysCellId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "sourcePhysCellId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarShortMAC_Input, targetCellIdentity),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CellIdentity,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "targetCellIdentity"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct VarShortMAC_Input, source_c_RNTI),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_RNTI_Value,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "source-c-RNTI"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_VarShortMAC_Input_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VarShortMAC_Input_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sourcePhysCellId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* targetCellIdentity */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* source-c-RNTI */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_VarShortMAC_Input_specs_1 = {
+       sizeof(struct VarShortMAC_Input),
+       offsetof(struct VarShortMAC_Input, _asn_ctx),
+       asn_MAP_VarShortMAC_Input_tag2el_1,
+       3,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VarShortMAC_Input = {
+       "VarShortMAC-Input",
+       "VarShortMAC-Input",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VarShortMAC_Input_tags_1,
+       sizeof(asn_DEF_VarShortMAC_Input_tags_1)
+               /sizeof(asn_DEF_VarShortMAC_Input_tags_1[0]), /* 1 */
+       asn_DEF_VarShortMAC_Input_tags_1,       /* Same as above */
+       sizeof(asn_DEF_VarShortMAC_Input_tags_1)
+               /sizeof(asn_DEF_VarShortMAC_Input_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VarShortMAC_Input_1,
+       3,      /* Elements count */
+       &asn_SPC_VarShortMAC_Input_specs_1      /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VarShortMAC-Input.h b/src/codec_utils/RRC/VarShortMAC-Input.h
new file mode 100644 (file)
index 0000000..882656b
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-UE-Variables"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VarShortMAC_Input_H_
+#define        _VarShortMAC_Input_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "PhysCellId.h"
+#include "CellIdentity.h"
+#include "RNTI-Value.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* VarShortMAC-Input */
+typedef struct VarShortMAC_Input {
+       PhysCellId_t     sourcePhysCellId;
+       CellIdentity_t   targetCellIdentity;
+       RNTI_Value_t     source_c_RNTI;
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VarShortMAC_Input_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_VarShortMAC_Input;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VarShortMAC_Input_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/VictimSystemType.c b/src/codec_utils/RRC/VictimSystemType.c
new file mode 100644 (file)
index 0000000..ddc357d
--- /dev/null
@@ -0,0 +1,384 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "VictimSystemType.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.
+ */
+static asn_oer_constraints_t asn_OER_type_gps_constr_2 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_gps_constr_2 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_glonass_constr_4 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_glonass_constr_4 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bds_constr_6 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bds_constr_6 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_galileo_constr_8 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_galileo_constr_8 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_wlan_constr_10 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_wlan_constr_10 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_bluetooth_constr_12 CC_NOTUSED = {
+       { 0, 0 },
+       -1};
+static asn_per_constraints_t asn_PER_type_bluetooth_constr_12 CC_NOTUSED = {
+       { APC_CONSTRAINED,       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_gps_value2enum_2[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_gps_enum2value_2[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_gps_specs_2 = {
+       asn_MAP_gps_value2enum_2,       /* "tag" => N; sorted by tag */
+       asn_MAP_gps_enum2value_2,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_gps_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_gps_2 = {
+       "gps",
+       "gps",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_gps_tags_2,
+       sizeof(asn_DEF_gps_tags_2)
+               /sizeof(asn_DEF_gps_tags_2[0]) - 1, /* 1 */
+       asn_DEF_gps_tags_2,     /* Same as above */
+       sizeof(asn_DEF_gps_tags_2)
+               /sizeof(asn_DEF_gps_tags_2[0]), /* 2 */
+       { &asn_OER_type_gps_constr_2, &asn_PER_type_gps_constr_2, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_gps_specs_2    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_glonass_value2enum_4[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_glonass_enum2value_4[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_glonass_specs_4 = {
+       asn_MAP_glonass_value2enum_4,   /* "tag" => N; sorted by tag */
+       asn_MAP_glonass_enum2value_4,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_glonass_tags_4[] = {
+       (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_glonass_4 = {
+       "glonass",
+       "glonass",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_glonass_tags_4,
+       sizeof(asn_DEF_glonass_tags_4)
+               /sizeof(asn_DEF_glonass_tags_4[0]) - 1, /* 1 */
+       asn_DEF_glonass_tags_4, /* Same as above */
+       sizeof(asn_DEF_glonass_tags_4)
+               /sizeof(asn_DEF_glonass_tags_4[0]), /* 2 */
+       { &asn_OER_type_glonass_constr_4, &asn_PER_type_glonass_constr_4, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_glonass_specs_4        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bds_value2enum_6[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_bds_enum2value_6[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bds_specs_6 = {
+       asn_MAP_bds_value2enum_6,       /* "tag" => N; sorted by tag */
+       asn_MAP_bds_enum2value_6,       /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bds_tags_6[] = {
+       (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_bds_6 = {
+       "bds",
+       "bds",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bds_tags_6,
+       sizeof(asn_DEF_bds_tags_6)
+               /sizeof(asn_DEF_bds_tags_6[0]) - 1, /* 1 */
+       asn_DEF_bds_tags_6,     /* Same as above */
+       sizeof(asn_DEF_bds_tags_6)
+               /sizeof(asn_DEF_bds_tags_6[0]), /* 2 */
+       { &asn_OER_type_bds_constr_6, &asn_PER_type_bds_constr_6, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bds_specs_6    /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_galileo_value2enum_8[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_galileo_enum2value_8[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_galileo_specs_8 = {
+       asn_MAP_galileo_value2enum_8,   /* "tag" => N; sorted by tag */
+       asn_MAP_galileo_enum2value_8,   /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_galileo_tags_8[] = {
+       (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_galileo_8 = {
+       "galileo",
+       "galileo",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_galileo_tags_8,
+       sizeof(asn_DEF_galileo_tags_8)
+               /sizeof(asn_DEF_galileo_tags_8[0]) - 1, /* 1 */
+       asn_DEF_galileo_tags_8, /* Same as above */
+       sizeof(asn_DEF_galileo_tags_8)
+               /sizeof(asn_DEF_galileo_tags_8[0]), /* 2 */
+       { &asn_OER_type_galileo_constr_8, &asn_PER_type_galileo_constr_8, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_galileo_specs_8        /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_wlan_value2enum_10[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_wlan_enum2value_10[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_wlan_specs_10 = {
+       asn_MAP_wlan_value2enum_10,     /* "tag" => N; sorted by tag */
+       asn_MAP_wlan_enum2value_10,     /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_wlan_tags_10[] = {
+       (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_wlan_10 = {
+       "wlan",
+       "wlan",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_wlan_tags_10,
+       sizeof(asn_DEF_wlan_tags_10)
+               /sizeof(asn_DEF_wlan_tags_10[0]) - 1, /* 1 */
+       asn_DEF_wlan_tags_10,   /* Same as above */
+       sizeof(asn_DEF_wlan_tags_10)
+               /sizeof(asn_DEF_wlan_tags_10[0]), /* 2 */
+       { &asn_OER_type_wlan_constr_10, &asn_PER_type_wlan_constr_10, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_wlan_specs_10  /* Additional specs */
+};
+
+static const asn_INTEGER_enum_map_t asn_MAP_bluetooth_value2enum_12[] = {
+       { 0,    4,      "true" }
+};
+static const unsigned int asn_MAP_bluetooth_enum2value_12[] = {
+       0       /* true(0) */
+};
+static const asn_INTEGER_specifics_t asn_SPC_bluetooth_specs_12 = {
+       asn_MAP_bluetooth_value2enum_12,        /* "tag" => N; sorted by tag */
+       asn_MAP_bluetooth_enum2value_12,        /* N => "tag"; sorted by N */
+       1,      /* Number of elements in the maps */
+       0,      /* Enumeration is not extensible */
+       1,      /* Strict enumeration */
+       0,      /* Native long size */
+       0
+};
+static const ber_tlv_tag_t asn_DEF_bluetooth_tags_12[] = {
+       (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_bluetooth_12 = {
+       "bluetooth",
+       "bluetooth",
+       &asn_OP_NativeEnumerated,
+       asn_DEF_bluetooth_tags_12,
+       sizeof(asn_DEF_bluetooth_tags_12)
+               /sizeof(asn_DEF_bluetooth_tags_12[0]) - 1, /* 1 */
+       asn_DEF_bluetooth_tags_12,      /* Same as above */
+       sizeof(asn_DEF_bluetooth_tags_12)
+               /sizeof(asn_DEF_bluetooth_tags_12[0]), /* 2 */
+       { &asn_OER_type_bluetooth_constr_12, &asn_PER_type_bluetooth_constr_12, NativeEnumerated_constraint },
+       0, 0,   /* Defined elsewhere */
+       &asn_SPC_bluetooth_specs_12     /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_VictimSystemType_1[] = {
+       { ATF_POINTER, 6, offsetof(struct VictimSystemType, gps),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_gps_2,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "gps"
+               },
+       { ATF_POINTER, 5, offsetof(struct VictimSystemType, glonass),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_glonass_4,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "glonass"
+               },
+       { ATF_POINTER, 4, offsetof(struct VictimSystemType, bds),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bds_6,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bds"
+               },
+       { ATF_POINTER, 3, offsetof(struct VictimSystemType, galileo),
+               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_galileo_8,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "galileo"
+               },
+       { ATF_POINTER, 2, offsetof(struct VictimSystemType, wlan),
+               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_wlan_10,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "wlan"
+               },
+       { ATF_POINTER, 1, offsetof(struct VictimSystemType, bluetooth),
+               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_bluetooth_12,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "bluetooth"
+               },
+};
+static const int asn_MAP_VictimSystemType_oms_1[] = { 0, 1, 2, 3, 4, 5 };
+static const ber_tlv_tag_t asn_DEF_VictimSystemType_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_VictimSystemType_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* gps */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* glonass */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bds */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* galileo */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* wlan */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* bluetooth */
+};
+asn_SEQUENCE_specifics_t asn_SPC_VictimSystemType_specs_1 = {
+       sizeof(struct VictimSystemType),
+       offsetof(struct VictimSystemType, _asn_ctx),
+       asn_MAP_VictimSystemType_tag2el_1,
+       6,      /* Count of tags in the map */
+       asn_MAP_VictimSystemType_oms_1, /* Optional members */
+       6, 0,   /* Root/Additions */
+       -1,     /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_VictimSystemType = {
+       "VictimSystemType",
+       "VictimSystemType",
+       &asn_OP_SEQUENCE,
+       asn_DEF_VictimSystemType_tags_1,
+       sizeof(asn_DEF_VictimSystemType_tags_1)
+               /sizeof(asn_DEF_VictimSystemType_tags_1[0]), /* 1 */
+       asn_DEF_VictimSystemType_tags_1,        /* Same as above */
+       sizeof(asn_DEF_VictimSystemType_tags_1)
+               /sizeof(asn_DEF_VictimSystemType_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_VictimSystemType_1,
+       6,      /* Elements count */
+       &asn_SPC_VictimSystemType_specs_1       /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/VictimSystemType.h b/src/codec_utils/RRC/VictimSystemType.h
new file mode 100644 (file)
index 0000000..2c0665c
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-InterNodeDefinitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _VictimSystemType_H_
+#define        _VictimSystemType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum VictimSystemType__gps {
+       VictimSystemType__gps_true      = 0
+} e_VictimSystemType__gps;
+typedef enum VictimSystemType__glonass {
+       VictimSystemType__glonass_true  = 0
+} e_VictimSystemType__glonass;
+typedef enum VictimSystemType__bds {
+       VictimSystemType__bds_true      = 0
+} e_VictimSystemType__bds;
+typedef enum VictimSystemType__galileo {
+       VictimSystemType__galileo_true  = 0
+} e_VictimSystemType__galileo;
+typedef enum VictimSystemType__wlan {
+       VictimSystemType__wlan_true     = 0
+} e_VictimSystemType__wlan;
+typedef enum VictimSystemType__bluetooth {
+       VictimSystemType__bluetooth_true        = 0
+} e_VictimSystemType__bluetooth;
+
+/* VictimSystemType */
+typedef struct VictimSystemType {
+       long    *gps;   /* OPTIONAL */
+       long    *glonass;       /* OPTIONAL */
+       long    *bds;   /* OPTIONAL */
+       long    *galileo;       /* OPTIONAL */
+       long    *wlan;  /* OPTIONAL */
+       long    *bluetooth;     /* OPTIONAL */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} VictimSystemType_t;
+
+/* Implementation */
+/* extern asn_TYPE_descriptor_t asn_DEF_gps_2; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_glonass_4;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bds_6; // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_galileo_8;     // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_wlan_10;       // (Use -fall-defs-global to expose) */
+/* extern asn_TYPE_descriptor_t asn_DEF_bluetooth_12;  // (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_VictimSystemType;
+extern asn_SEQUENCE_specifics_t asn_SPC_VictimSystemType_specs_1;
+extern asn_TYPE_member_t asn_MBR_VictimSystemType_1[6];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _VictimSystemType_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-Resource.c b/src/codec_utils/RRC/ZP-CSI-RS-Resource.c
new file mode 100644 (file)
index 0000000..abec66a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ZP-CSI-RS-Resource.h"
+
+#include "CSI-ResourcePeriodicityAndOffset.h"
+asn_TYPE_member_t asn_MBR_ZP_CSI_RS_Resource_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ZP_CSI_RS_Resource, zp_CSI_RS_ResourceId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "zp-CSI-RS-ResourceId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ZP_CSI_RS_Resource, resourceMapping),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_CSI_RS_ResourceMapping,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "resourceMapping"
+               },
+       { ATF_POINTER, 1, offsetof(struct ZP_CSI_RS_Resource, periodicityAndOffset),
+               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+               +1,     /* EXPLICIT tag at current level */
+               &asn_DEF_CSI_ResourcePeriodicityAndOffset,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "periodicityAndOffset"
+               },
+};
+static const int asn_MAP_ZP_CSI_RS_Resource_oms_1[] = { 2 };
+static const ber_tlv_tag_t asn_DEF_ZP_CSI_RS_Resource_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ZP_CSI_RS_Resource_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* zp-CSI-RS-ResourceId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* resourceMapping */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* periodicityAndOffset */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ZP_CSI_RS_Resource_specs_1 = {
+       sizeof(struct ZP_CSI_RS_Resource),
+       offsetof(struct ZP_CSI_RS_Resource, _asn_ctx),
+       asn_MAP_ZP_CSI_RS_Resource_tag2el_1,
+       3,      /* Count of tags in the map */
+       asn_MAP_ZP_CSI_RS_Resource_oms_1,       /* Optional members */
+       1, 0,   /* Root/Additions */
+       3,      /* First extension addition */
+};
+asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_Resource = {
+       "ZP-CSI-RS-Resource",
+       "ZP-CSI-RS-Resource",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ZP_CSI_RS_Resource_tags_1,
+       sizeof(asn_DEF_ZP_CSI_RS_Resource_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_Resource_tags_1[0]), /* 1 */
+       asn_DEF_ZP_CSI_RS_Resource_tags_1,      /* Same as above */
+       sizeof(asn_DEF_ZP_CSI_RS_Resource_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_Resource_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ZP_CSI_RS_Resource_1,
+       3,      /* Elements count */
+       &asn_SPC_ZP_CSI_RS_Resource_specs_1     /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-Resource.h b/src/codec_utils/RRC/ZP-CSI-RS-Resource.h
new file mode 100644 (file)
index 0000000..edcff5d
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ZP_CSI_RS_Resource_H_
+#define        _ZP_CSI_RS_Resource_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ZP-CSI-RS-ResourceId.h"
+#include "CSI-RS-ResourceMapping.h"
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Forward declarations */
+struct CSI_ResourcePeriodicityAndOffset;
+
+/* ZP-CSI-RS-Resource */
+typedef struct ZP_CSI_RS_Resource {
+       ZP_CSI_RS_ResourceId_t   zp_CSI_RS_ResourceId;
+       CSI_RS_ResourceMapping_t         resourceMapping;
+       struct CSI_ResourcePeriodicityAndOffset *periodicityAndOffset;  /* OPTIONAL */
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ZP_CSI_RS_Resource_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_Resource;
+extern asn_SEQUENCE_specifics_t asn_SPC_ZP_CSI_RS_Resource_specs_1;
+extern asn_TYPE_member_t asn_MBR_ZP_CSI_RS_Resource_1[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ZP_CSI_RS_Resource_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceId.c b/src/codec_utils/RRC/ZP-CSI-RS-ResourceId.c
new file mode 100644 (file)
index 0000000..d134f52
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ZP-CSI-RS-ResourceId.h"
+
+int
+ZP_CSI_RS_ResourceId_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 <= 31)) {
+               /* 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_ZP_CSI_RS_ResourceId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..31) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ZP_CSI_RS_ResourceId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ZP_CSI_RS_ResourceId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_ResourceId = {
+       "ZP-CSI-RS-ResourceId",
+       "ZP-CSI-RS-ResourceId",
+       &asn_OP_NativeInteger,
+       asn_DEF_ZP_CSI_RS_ResourceId_tags_1,
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceId_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceId_tags_1[0]), /* 1 */
+       asn_DEF_ZP_CSI_RS_ResourceId_tags_1,    /* Same as above */
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceId_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceId_tags_1[0]), /* 1 */
+       { &asn_OER_type_ZP_CSI_RS_ResourceId_constr_1, &asn_PER_type_ZP_CSI_RS_ResourceId_constr_1, ZP_CSI_RS_ResourceId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceId.h b/src/codec_utils/RRC/ZP-CSI-RS-ResourceId.h
new file mode 100644 (file)
index 0000000..7212e39
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ZP_CSI_RS_ResourceId_H_
+#define        _ZP_CSI_RS_ResourceId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ZP-CSI-RS-ResourceId */
+typedef long    ZP_CSI_RS_ResourceId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ZP_CSI_RS_ResourceId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_ResourceId;
+asn_struct_free_f ZP_CSI_RS_ResourceId_free;
+asn_struct_print_f ZP_CSI_RS_ResourceId_print;
+asn_constr_check_f ZP_CSI_RS_ResourceId_constraint;
+ber_type_decoder_f ZP_CSI_RS_ResourceId_decode_ber;
+der_type_encoder_f ZP_CSI_RS_ResourceId_encode_der;
+xer_type_decoder_f ZP_CSI_RS_ResourceId_decode_xer;
+xer_type_encoder_f ZP_CSI_RS_ResourceId_encode_xer;
+oer_type_decoder_f ZP_CSI_RS_ResourceId_decode_oer;
+oer_type_encoder_f ZP_CSI_RS_ResourceId_encode_oer;
+per_type_decoder_f ZP_CSI_RS_ResourceId_decode_uper;
+per_type_encoder_f ZP_CSI_RS_ResourceId_encode_uper;
+per_type_decoder_f ZP_CSI_RS_ResourceId_decode_aper;
+per_type_encoder_f ZP_CSI_RS_ResourceId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ZP_CSI_RS_ResourceId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.c b/src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.c
new file mode 100644 (file)
index 0000000..2bee5c9
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ZP-CSI-RS-ResourceSet.h"
+
+static int
+memb_zp_CSI_RS_ResourceIdList_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 <= 16)) {
+               /* 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_zp_CSI_RS_ResourceIdList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_type_zp_CSI_RS_ResourceIdList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_oer_constraints_t asn_OER_memb_zp_CSI_RS_ResourceIdList_constr_3 CC_NOTUSED = {
+       { 0, 0 },
+       -1      /* (SIZE(1..16)) */};
+static asn_per_constraints_t asn_PER_memb_zp_CSI_RS_ResourceIdList_constr_3 CC_NOTUSED = {
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
+       0, 0    /* No PER value map */
+};
+static asn_TYPE_member_t asn_MBR_zp_CSI_RS_ResourceIdList_3[] = {
+       { ATF_POINTER, 0, 0,
+               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
+               0,
+               &asn_DEF_ZP_CSI_RS_ResourceId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               ""
+               },
+};
+static const ber_tlv_tag_t asn_DEF_zp_CSI_RS_ResourceIdList_tags_3[] = {
+       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SET_OF_specifics_t asn_SPC_zp_CSI_RS_ResourceIdList_specs_3 = {
+       sizeof(struct ZP_CSI_RS_ResourceSet__zp_CSI_RS_ResourceIdList),
+       offsetof(struct ZP_CSI_RS_ResourceSet__zp_CSI_RS_ResourceIdList, _asn_ctx),
+       0,      /* XER encoding is XMLDelimitedItemList */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_zp_CSI_RS_ResourceIdList_3 = {
+       "zp-CSI-RS-ResourceIdList",
+       "zp-CSI-RS-ResourceIdList",
+       &asn_OP_SEQUENCE_OF,
+       asn_DEF_zp_CSI_RS_ResourceIdList_tags_3,
+       sizeof(asn_DEF_zp_CSI_RS_ResourceIdList_tags_3)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceIdList_tags_3[0]) - 1, /* 1 */
+       asn_DEF_zp_CSI_RS_ResourceIdList_tags_3,        /* Same as above */
+       sizeof(asn_DEF_zp_CSI_RS_ResourceIdList_tags_3)
+               /sizeof(asn_DEF_zp_CSI_RS_ResourceIdList_tags_3[0]), /* 2 */
+       { &asn_OER_type_zp_CSI_RS_ResourceIdList_constr_3, &asn_PER_type_zp_CSI_RS_ResourceIdList_constr_3, SEQUENCE_OF_constraint },
+       asn_MBR_zp_CSI_RS_ResourceIdList_3,
+       1,      /* Single element */
+       &asn_SPC_zp_CSI_RS_ResourceIdList_specs_3       /* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ZP_CSI_RS_ResourceSet_1[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct ZP_CSI_RS_ResourceSet, zp_CSI_RS_ResourceSetId),
+               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_ZP_CSI_RS_ResourceSetId,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "zp-CSI-RS-ResourceSetId"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct ZP_CSI_RS_ResourceSet, zp_CSI_RS_ResourceIdList),
+               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+               0,
+               &asn_DEF_zp_CSI_RS_ResourceIdList_3,
+               0,
+               { &asn_OER_memb_zp_CSI_RS_ResourceIdList_constr_3, &asn_PER_memb_zp_CSI_RS_ResourceIdList_constr_3,  memb_zp_CSI_RS_ResourceIdList_constraint_1 },
+               0, 0, /* No default value */
+               "zp-CSI-RS-ResourceIdList"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_ZP_CSI_RS_ResourceSet_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_ZP_CSI_RS_ResourceSet_tag2el_1[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* zp-CSI-RS-ResourceSetId */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* zp-CSI-RS-ResourceIdList */
+};
+asn_SEQUENCE_specifics_t asn_SPC_ZP_CSI_RS_ResourceSet_specs_1 = {
+       sizeof(struct ZP_CSI_RS_ResourceSet),
+       offsetof(struct ZP_CSI_RS_ResourceSet, _asn_ctx),
+       asn_MAP_ZP_CSI_RS_ResourceSet_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_ZP_CSI_RS_ResourceSet = {
+       "ZP-CSI-RS-ResourceSet",
+       "ZP-CSI-RS-ResourceSet",
+       &asn_OP_SEQUENCE,
+       asn_DEF_ZP_CSI_RS_ResourceSet_tags_1,
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceSet_tags_1[0]), /* 1 */
+       asn_DEF_ZP_CSI_RS_ResourceSet_tags_1,   /* Same as above */
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceSet_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceSet_tags_1[0]), /* 1 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_ZP_CSI_RS_ResourceSet_1,
+       2,      /* Elements count */
+       &asn_SPC_ZP_CSI_RS_ResourceSet_specs_1  /* Additional specs */
+};
+
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.h b/src/codec_utils/RRC/ZP-CSI-RS-ResourceSet.h
new file mode 100644 (file)
index 0000000..db2f975
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ZP_CSI_RS_ResourceSet_H_
+#define        _ZP_CSI_RS_ResourceSet_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include "ZP-CSI-RS-ResourceSetId.h"
+#include "ZP-CSI-RS-ResourceId.h"
+#include <asn_SEQUENCE_OF.h>
+#include <constr_SEQUENCE_OF.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ZP-CSI-RS-ResourceSet */
+typedef struct ZP_CSI_RS_ResourceSet {
+       ZP_CSI_RS_ResourceSetId_t        zp_CSI_RS_ResourceSetId;
+       struct ZP_CSI_RS_ResourceSet__zp_CSI_RS_ResourceIdList {
+               A_SEQUENCE_OF(ZP_CSI_RS_ResourceId_t) list;
+               
+               /* Context for parsing across buffer boundaries */
+               asn_struct_ctx_t _asn_ctx;
+       } zp_CSI_RS_ResourceIdList;
+       /*
+        * This type is extensible,
+        * possible extensions are below.
+        */
+       
+       /* Context for parsing across buffer boundaries */
+       asn_struct_ctx_t _asn_ctx;
+} ZP_CSI_RS_ResourceSet_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_ResourceSet;
+extern asn_SEQUENCE_specifics_t asn_SPC_ZP_CSI_RS_ResourceSet_specs_1;
+extern asn_TYPE_member_t asn_MBR_ZP_CSI_RS_ResourceSet_1[2];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ZP_CSI_RS_ResourceSet_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.c b/src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.c
new file mode 100644 (file)
index 0000000..16faf56
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#include "ZP-CSI-RS-ResourceSetId.h"
+
+int
+ZP_CSI_RS_ResourceSetId_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 <= 15)) {
+               /* 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_ZP_CSI_RS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { 1, 1 }        /* (0..15) */,
+       -1};
+asn_per_constraints_t asn_PER_type_ZP_CSI_RS_ResourceSetId_constr_1 CC_NOTUSED = {
+       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
+       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
+       0, 0    /* No PER value map */
+};
+static const ber_tlv_tag_t asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_ResourceSetId = {
+       "ZP-CSI-RS-ResourceSetId",
+       "ZP-CSI-RS-ResourceSetId",
+       &asn_OP_NativeInteger,
+       asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1,
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1[0]), /* 1 */
+       asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1, /* Same as above */
+       sizeof(asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1)
+               /sizeof(asn_DEF_ZP_CSI_RS_ResourceSetId_tags_1[0]), /* 1 */
+       { &asn_OER_type_ZP_CSI_RS_ResourceSetId_constr_1, &asn_PER_type_ZP_CSI_RS_ResourceSetId_constr_1, ZP_CSI_RS_ResourceSetId_constraint },
+       0, 0,   /* No members */
+       0       /* No specifics */
+};
+
diff --git a/src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.h b/src/codec_utils/RRC/ZP-CSI-RS-ResourceSetId.h
new file mode 100644 (file)
index 0000000..4c2da90
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "NR-RRC-Definitions"
+ *     found in "../../../rrc_15.5.1_asn.asn1"
+ *     `asn1c -D ./rrc_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
+ */
+
+#ifndef        _ZP_CSI_RS_ResourceSetId_H_
+#define        _ZP_CSI_RS_ResourceSetId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ZP-CSI-RS-ResourceSetId */
+typedef long    ZP_CSI_RS_ResourceSetId_t;
+
+/* Implementation */
+extern asn_per_constraints_t asn_PER_type_ZP_CSI_RS_ResourceSetId_constr_1;
+extern asn_TYPE_descriptor_t asn_DEF_ZP_CSI_RS_ResourceSetId;
+asn_struct_free_f ZP_CSI_RS_ResourceSetId_free;
+asn_struct_print_f ZP_CSI_RS_ResourceSetId_print;
+asn_constr_check_f ZP_CSI_RS_ResourceSetId_constraint;
+ber_type_decoder_f ZP_CSI_RS_ResourceSetId_decode_ber;
+der_type_encoder_f ZP_CSI_RS_ResourceSetId_encode_der;
+xer_type_decoder_f ZP_CSI_RS_ResourceSetId_decode_xer;
+xer_type_encoder_f ZP_CSI_RS_ResourceSetId_encode_xer;
+oer_type_decoder_f ZP_CSI_RS_ResourceSetId_decode_oer;
+oer_type_encoder_f ZP_CSI_RS_ResourceSetId_encode_oer;
+per_type_decoder_f ZP_CSI_RS_ResourceSetId_decode_uper;
+per_type_encoder_f ZP_CSI_RS_ResourceSetId_encode_uper;
+per_type_decoder_f ZP_CSI_RS_ResourceSetId_decode_aper;
+per_type_encoder_f ZP_CSI_RS_ResourceSetId_encode_aper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _ZP_CSI_RS_ResourceSetId_H_ */
+#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ARFCN-ValueNR.c b/src/codec_utils/SYSINFO/ARFCN-ValueNR.c
deleted file mode 100644 (file)
index f7b9ac9..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ARFCN-ValueNR.h"
-
-int
-ARFCN_ValueNR_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 <= 3279165)) {
-               /* 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_ARFCN_ValueNR_constr_1 CC_NOTUSED = {
-       { 4, 1 }        /* (0..3279165) */,
-       -1};
-asn_per_constraints_t asn_PER_type_ARFCN_ValueNR_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       22, -1,  0,  3279165 } /* (0..3279165) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ARFCN_ValueNR_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueNR = {
-       "ARFCN-ValueNR",
-       "ARFCN-ValueNR",
-       &asn_OP_NativeInteger,
-       asn_DEF_ARFCN_ValueNR_tags_1,
-       sizeof(asn_DEF_ARFCN_ValueNR_tags_1)
-               /sizeof(asn_DEF_ARFCN_ValueNR_tags_1[0]), /* 1 */
-       asn_DEF_ARFCN_ValueNR_tags_1,   /* Same as above */
-       sizeof(asn_DEF_ARFCN_ValueNR_tags_1)
-               /sizeof(asn_DEF_ARFCN_ValueNR_tags_1[0]), /* 1 */
-       { &asn_OER_type_ARFCN_ValueNR_constr_1, &asn_PER_type_ARFCN_ValueNR_constr_1, ARFCN_ValueNR_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/ARFCN-ValueNR.h b/src/codec_utils/SYSINFO/ARFCN-ValueNR.h
deleted file mode 100644 (file)
index 674607c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ARFCN_ValueNR_H_
-#define        _ARFCN_ValueNR_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ARFCN-ValueNR */
-typedef long    ARFCN_ValueNR_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_ARFCN_ValueNR_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_ARFCN_ValueNR;
-asn_struct_free_f ARFCN_ValueNR_free;
-asn_struct_print_f ARFCN_ValueNR_print;
-asn_constr_check_f ARFCN_ValueNR_constraint;
-ber_type_decoder_f ARFCN_ValueNR_decode_ber;
-der_type_encoder_f ARFCN_ValueNR_encode_der;
-xer_type_decoder_f ARFCN_ValueNR_decode_xer;
-xer_type_encoder_f ARFCN_ValueNR_encode_xer;
-oer_type_decoder_f ARFCN_ValueNR_decode_oer;
-oer_type_encoder_f ARFCN_ValueNR_encode_oer;
-per_type_decoder_f ARFCN_ValueNR_decode_uper;
-per_type_encoder_f ARFCN_ValueNR_encode_uper;
-per_type_decoder_f ARFCN_ValueNR_decode_aper;
-per_type_encoder_f ARFCN_ValueNR_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ARFCN_ValueNR_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/AdditionalSpectrumEmission.c b/src/codec_utils/SYSINFO/AdditionalSpectrumEmission.c
deleted file mode 100644 (file)
index 13c23ba..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "AdditionalSpectrumEmission.h"
-
-int
-AdditionalSpectrumEmission_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 <= 7)) {
-               /* 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_AdditionalSpectrumEmission_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..7) */,
-       -1};
-asn_per_constraints_t asn_PER_type_AdditionalSpectrumEmission_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_AdditionalSpectrumEmission_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_AdditionalSpectrumEmission = {
-       "AdditionalSpectrumEmission",
-       "AdditionalSpectrumEmission",
-       &asn_OP_NativeInteger,
-       asn_DEF_AdditionalSpectrumEmission_tags_1,
-       sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1)
-               /sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1[0]), /* 1 */
-       asn_DEF_AdditionalSpectrumEmission_tags_1,      /* Same as above */
-       sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1)
-               /sizeof(asn_DEF_AdditionalSpectrumEmission_tags_1[0]), /* 1 */
-       { &asn_OER_type_AdditionalSpectrumEmission_constr_1, &asn_PER_type_AdditionalSpectrumEmission_constr_1, AdditionalSpectrumEmission_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/AdditionalSpectrumEmission.h b/src/codec_utils/SYSINFO/AdditionalSpectrumEmission.h
deleted file mode 100644 (file)
index d2d1de9..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _AdditionalSpectrumEmission_H_
-#define        _AdditionalSpectrumEmission_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* AdditionalSpectrumEmission */
-typedef long    AdditionalSpectrumEmission_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_AdditionalSpectrumEmission_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_AdditionalSpectrumEmission;
-asn_struct_free_f AdditionalSpectrumEmission_free;
-asn_struct_print_f AdditionalSpectrumEmission_print;
-asn_constr_check_f AdditionalSpectrumEmission_constraint;
-ber_type_decoder_f AdditionalSpectrumEmission_decode_ber;
-der_type_encoder_f AdditionalSpectrumEmission_encode_der;
-xer_type_decoder_f AdditionalSpectrumEmission_decode_xer;
-xer_type_encoder_f AdditionalSpectrumEmission_encode_xer;
-oer_type_decoder_f AdditionalSpectrumEmission_decode_oer;
-oer_type_encoder_f AdditionalSpectrumEmission_encode_oer;
-per_type_decoder_f AdditionalSpectrumEmission_decode_uper;
-per_type_encoder_f AdditionalSpectrumEmission_encode_uper;
-per_type_decoder_f AdditionalSpectrumEmission_decode_aper;
-per_type_encoder_f AdditionalSpectrumEmission_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _AdditionalSpectrumEmission_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BCCH-BCH-Message.c b/src/codec_utils/SYSINFO/BCCH-BCH-Message.c
deleted file mode 100644 (file)
index 3bd07f1..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./mib_sib_out/ -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BCCH-BCH-Message.h"
-
-static asn_TYPE_member_t asn_MBR_BCCH_BCH_Message_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BCCH_BCH_Message, message),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_BCCH_BCH_MessageType,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "message"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_BCCH_BCH_Message_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_BCCH_BCH_Message_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* message */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_BCCH_BCH_Message_specs_1 = {
-       sizeof(struct BCCH_BCH_Message),
-       offsetof(struct BCCH_BCH_Message, _asn_ctx),
-       asn_MAP_BCCH_BCH_Message_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_BCCH_BCH_Message = {
-       "BCCH-BCH-Message",
-       "BCCH-BCH-Message",
-       &asn_OP_SEQUENCE,
-       asn_DEF_BCCH_BCH_Message_tags_1,
-       sizeof(asn_DEF_BCCH_BCH_Message_tags_1)
-               /sizeof(asn_DEF_BCCH_BCH_Message_tags_1[0]), /* 1 */
-       asn_DEF_BCCH_BCH_Message_tags_1,        /* Same as above */
-       sizeof(asn_DEF_BCCH_BCH_Message_tags_1)
-               /sizeof(asn_DEF_BCCH_BCH_Message_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_BCCH_BCH_Message_1,
-       1,      /* Elements count */
-       &asn_SPC_BCCH_BCH_Message_specs_1       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BCCH-BCH-Message.h b/src/codec_utils/SYSINFO/BCCH-BCH-Message.h
deleted file mode 100644 (file)
index d8b3564..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./mib_sib_out/ -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BCCH_BCH_Message_H_
-#define        _BCCH_BCH_Message_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "BCCH-BCH-MessageType.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* BCCH-BCH-Message */
-typedef struct BCCH_BCH_Message {
-       BCCH_BCH_MessageType_t   message;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BCCH_BCH_Message_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_Message;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BCCH_BCH_Message_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BCCH-BCH-MessageType.c b/src/codec_utils/SYSINFO/BCCH-BCH-MessageType.c
deleted file mode 100644 (file)
index d609a0a..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./mib_sib_out/ -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BCCH-BCH-MessageType.h"
-
-#include "MIB.h"
-static asn_oer_constraints_t asn_OER_type_BCCH_BCH_MessageType_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-asn_per_constraints_t asn_PER_type_BCCH_BCH_MessageType_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       1,  1,  0,  1 }        /* (0..1) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_messageClassExtension_tags_3[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SEQUENCE_specifics_t asn_SPC_messageClassExtension_specs_3 = {
-       sizeof(struct BCCH_BCH_MessageType__messageClassExtension),
-       offsetof(struct BCCH_BCH_MessageType__messageClassExtension, _asn_ctx),
-       0,      /* No top level tags */
-       0,      /* No tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_messageClassExtension_3 = {
-       "messageClassExtension",
-       "messageClassExtension",
-       &asn_OP_SEQUENCE,
-       asn_DEF_messageClassExtension_tags_3,
-       sizeof(asn_DEF_messageClassExtension_tags_3)
-               /sizeof(asn_DEF_messageClassExtension_tags_3[0]) - 1, /* 1 */
-       asn_DEF_messageClassExtension_tags_3,   /* Same as above */
-       sizeof(asn_DEF_messageClassExtension_tags_3)
-               /sizeof(asn_DEF_messageClassExtension_tags_3[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_messageClassExtension_specs_3  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_BCCH_BCH_MessageType_1[] = {
-       { ATF_POINTER, 0, offsetof(struct BCCH_BCH_MessageType, choice.mib),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_MIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "mib"
-               },
-       { ATF_POINTER, 0, offsetof(struct BCCH_BCH_MessageType, choice.messageClassExtension),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_messageClassExtension_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "messageClassExtension"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_BCCH_BCH_MessageType_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mib */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* messageClassExtension */
-};
-asn_CHOICE_specifics_t asn_SPC_BCCH_BCH_MessageType_specs_1 = {
-       sizeof(struct BCCH_BCH_MessageType),
-       offsetof(struct BCCH_BCH_MessageType, _asn_ctx),
-       offsetof(struct BCCH_BCH_MessageType, present),
-       sizeof(((struct BCCH_BCH_MessageType *)0)->present),
-       asn_MAP_BCCH_BCH_MessageType_tag2el_1,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_MessageType = {
-       "BCCH-BCH-MessageType",
-       "BCCH-BCH-MessageType",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_BCCH_BCH_MessageType_constr_1, &asn_PER_type_BCCH_BCH_MessageType_constr_1, CHOICE_constraint },
-       asn_MBR_BCCH_BCH_MessageType_1,
-       2,      /* Elements count */
-       &asn_SPC_BCCH_BCH_MessageType_specs_1   /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BCCH-BCH-MessageType.h b/src/codec_utils/SYSINFO/BCCH-BCH-MessageType.h
deleted file mode 100644 (file)
index 656c94d..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./mib_sib_out/ -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BCCH_BCH_MessageType_H_
-#define        _BCCH_BCH_MessageType_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <constr_SEQUENCE.h>
-#include <constr_CHOICE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum BCCH_BCH_MessageType_PR {
-       BCCH_BCH_MessageType_PR_NOTHING,        /* No components present */
-       BCCH_BCH_MessageType_PR_mib,
-       BCCH_BCH_MessageType_PR_messageClassExtension
-} BCCH_BCH_MessageType_PR;
-
-/* Forward declarations */
-struct MIB;
-
-/* BCCH-BCH-MessageType */
-typedef struct BCCH_BCH_MessageType {
-       BCCH_BCH_MessageType_PR present;
-       union BCCH_BCH_MessageType_u {
-               struct MIB      *mib;
-               struct BCCH_BCH_MessageType__messageClassExtension {
-                       
-                       /* Context for parsing across buffer boundaries */
-                       asn_struct_ctx_t _asn_ctx;
-               } *messageClassExtension;
-       } choice;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BCCH_BCH_MessageType_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_BCCH_BCH_MessageType;
-extern asn_CHOICE_specifics_t asn_SPC_BCCH_BCH_MessageType_specs_1;
-extern asn_TYPE_member_t asn_MBR_BCCH_BCH_MessageType_1[2];
-extern asn_per_constraints_t asn_PER_type_BCCH_BCH_MessageType_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BCCH_BCH_MessageType_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BCCH-Config.c b/src/codec_utils/SYSINFO/BCCH-Config.c
deleted file mode 100644 (file)
index 8801250..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BCCH-Config.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_modificationPeriodCoeff_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_modificationPeriodCoeff_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_modificationPeriodCoeff_value2enum_2[] = {
-       { 0,    2,      "n2" },
-       { 1,    2,      "n4" },
-       { 2,    2,      "n8" },
-       { 3,    3,      "n16" }
-};
-static const unsigned int asn_MAP_modificationPeriodCoeff_enum2value_2[] = {
-       3,      /* n16(3) */
-       0,      /* n2(0) */
-       1,      /* n4(1) */
-       2       /* n8(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_modificationPeriodCoeff_specs_2 = {
-       asn_MAP_modificationPeriodCoeff_value2enum_2,   /* "tag" => N; sorted by tag */
-       asn_MAP_modificationPeriodCoeff_enum2value_2,   /* N => "tag"; sorted by N */
-       4,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_modificationPeriodCoeff_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_modificationPeriodCoeff_2 = {
-       "modificationPeriodCoeff",
-       "modificationPeriodCoeff",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_modificationPeriodCoeff_tags_2,
-       sizeof(asn_DEF_modificationPeriodCoeff_tags_2)
-               /sizeof(asn_DEF_modificationPeriodCoeff_tags_2[0]) - 1, /* 1 */
-       asn_DEF_modificationPeriodCoeff_tags_2, /* Same as above */
-       sizeof(asn_DEF_modificationPeriodCoeff_tags_2)
-               /sizeof(asn_DEF_modificationPeriodCoeff_tags_2[0]), /* 2 */
-       { &asn_OER_type_modificationPeriodCoeff_constr_2, &asn_PER_type_modificationPeriodCoeff_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_modificationPeriodCoeff_specs_2        /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_BCCH_Config_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BCCH_Config, modificationPeriodCoeff),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_modificationPeriodCoeff_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "modificationPeriodCoeff"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_BCCH_Config_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_BCCH_Config_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* modificationPeriodCoeff */
-};
-asn_SEQUENCE_specifics_t asn_SPC_BCCH_Config_specs_1 = {
-       sizeof(struct BCCH_Config),
-       offsetof(struct BCCH_Config, _asn_ctx),
-       asn_MAP_BCCH_Config_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_BCCH_Config = {
-       "BCCH-Config",
-       "BCCH-Config",
-       &asn_OP_SEQUENCE,
-       asn_DEF_BCCH_Config_tags_1,
-       sizeof(asn_DEF_BCCH_Config_tags_1)
-               /sizeof(asn_DEF_BCCH_Config_tags_1[0]), /* 1 */
-       asn_DEF_BCCH_Config_tags_1,     /* Same as above */
-       sizeof(asn_DEF_BCCH_Config_tags_1)
-               /sizeof(asn_DEF_BCCH_Config_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_BCCH_Config_1,
-       1,      /* Elements count */
-       &asn_SPC_BCCH_Config_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BCCH-Config.h b/src/codec_utils/SYSINFO/BCCH-Config.h
deleted file mode 100644 (file)
index cbb2296..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BCCH_Config_H_
-#define        _BCCH_Config_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum BCCH_Config__modificationPeriodCoeff {
-       BCCH_Config__modificationPeriodCoeff_n2 = 0,
-       BCCH_Config__modificationPeriodCoeff_n4 = 1,
-       BCCH_Config__modificationPeriodCoeff_n8 = 2,
-       BCCH_Config__modificationPeriodCoeff_n16        = 3
-} e_BCCH_Config__modificationPeriodCoeff;
-
-/* BCCH-Config */
-typedef struct BCCH_Config {
-       long     modificationPeriodCoeff;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BCCH_Config_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_modificationPeriodCoeff_2;     // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_BCCH_Config;
-extern asn_SEQUENCE_specifics_t asn_SPC_BCCH_Config_specs_1;
-extern asn_TYPE_member_t asn_MBR_BCCH_Config_1[1];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BCCH_Config_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BWP-DownlinkCommon.c b/src/codec_utils/SYSINFO/BWP-DownlinkCommon.c
deleted file mode 100644 (file)
index 12a08bb..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BWP-DownlinkCommon.h"
-
-#include "PDCCH-ConfigCommon.h"
-#include "PDSCH-ConfigCommon.h"
-static asn_oer_constraints_t asn_OER_type_pdcch_ConfigCommon_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_pdcch_ConfigCommon_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_pdsch_ConfigCommon_constr_6 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_pdsch_ConfigCommon_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_pdcch_ConfigCommon_3[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, choice.release),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "release"
-               },
-       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, choice.setup),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PDCCH_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "setup"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_pdcch_ConfigCommon_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
-};
-static asn_CHOICE_specifics_t asn_SPC_pdcch_ConfigCommon_specs_3 = {
-       sizeof(struct BWP_DownlinkCommon__pdcch_ConfigCommon),
-       offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, _asn_ctx),
-       offsetof(struct BWP_DownlinkCommon__pdcch_ConfigCommon, present),
-       sizeof(((struct BWP_DownlinkCommon__pdcch_ConfigCommon *)0)->present),
-       asn_MAP_pdcch_ConfigCommon_tag2el_3,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pdcch_ConfigCommon_3 = {
-       "pdcch-ConfigCommon",
-       "pdcch-ConfigCommon",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_pdcch_ConfigCommon_constr_3, &asn_PER_type_pdcch_ConfigCommon_constr_3, CHOICE_constraint },
-       asn_MBR_pdcch_ConfigCommon_3,
-       2,      /* Elements count */
-       &asn_SPC_pdcch_ConfigCommon_specs_3     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_pdsch_ConfigCommon_6[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, choice.release),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "release"
-               },
-       { ATF_POINTER, 0, offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, choice.setup),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PDSCH_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "setup"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_pdsch_ConfigCommon_tag2el_6[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
-};
-static asn_CHOICE_specifics_t asn_SPC_pdsch_ConfigCommon_specs_6 = {
-       sizeof(struct BWP_DownlinkCommon__pdsch_ConfigCommon),
-       offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, _asn_ctx),
-       offsetof(struct BWP_DownlinkCommon__pdsch_ConfigCommon, present),
-       sizeof(((struct BWP_DownlinkCommon__pdsch_ConfigCommon *)0)->present),
-       asn_MAP_pdsch_ConfigCommon_tag2el_6,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pdsch_ConfigCommon_6 = {
-       "pdsch-ConfigCommon",
-       "pdsch-ConfigCommon",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_pdsch_ConfigCommon_constr_6, &asn_PER_type_pdsch_ConfigCommon_constr_6, CHOICE_constraint },
-       asn_MBR_pdsch_ConfigCommon_6,
-       2,      /* Elements count */
-       &asn_SPC_pdsch_ConfigCommon_specs_6     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_BWP_DownlinkCommon_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_DownlinkCommon, genericParameters),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BWP,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "genericParameters"
-               },
-       { ATF_POINTER, 2, offsetof(struct BWP_DownlinkCommon, pdcch_ConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_pdcch_ConfigCommon_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pdcch-ConfigCommon"
-               },
-       { ATF_POINTER, 1, offsetof(struct BWP_DownlinkCommon, pdsch_ConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_pdsch_ConfigCommon_6,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pdsch-ConfigCommon"
-               },
-};
-static const int asn_MAP_BWP_DownlinkCommon_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_BWP_DownlinkCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_BWP_DownlinkCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* genericParameters */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pdcch-ConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pdsch-ConfigCommon */
-};
-asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkCommon_specs_1 = {
-       sizeof(struct BWP_DownlinkCommon),
-       offsetof(struct BWP_DownlinkCommon, _asn_ctx),
-       asn_MAP_BWP_DownlinkCommon_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_BWP_DownlinkCommon_oms_1,       /* Optional members */
-       2, 0,   /* Root/Additions */
-       3,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkCommon = {
-       "BWP-DownlinkCommon",
-       "BWP-DownlinkCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_BWP_DownlinkCommon_tags_1,
-       sizeof(asn_DEF_BWP_DownlinkCommon_tags_1)
-               /sizeof(asn_DEF_BWP_DownlinkCommon_tags_1[0]), /* 1 */
-       asn_DEF_BWP_DownlinkCommon_tags_1,      /* Same as above */
-       sizeof(asn_DEF_BWP_DownlinkCommon_tags_1)
-               /sizeof(asn_DEF_BWP_DownlinkCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_BWP_DownlinkCommon_1,
-       3,      /* Elements count */
-       &asn_SPC_BWP_DownlinkCommon_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BWP-DownlinkCommon.h b/src/codec_utils/SYSINFO/BWP-DownlinkCommon.h
deleted file mode 100644 (file)
index 52089d1..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BWP_DownlinkCommon_H_
-#define        _BWP_DownlinkCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "BWP.h"
-#include <NULL.h>
-#include <constr_CHOICE.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum BWP_DownlinkCommon__pdcch_ConfigCommon_PR {
-       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_NOTHING,      /* No components present */
-       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_release,
-       BWP_DownlinkCommon__pdcch_ConfigCommon_PR_setup
-} BWP_DownlinkCommon__pdcch_ConfigCommon_PR;
-typedef enum BWP_DownlinkCommon__pdsch_ConfigCommon_PR {
-       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_NOTHING,      /* No components present */
-       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_release,
-       BWP_DownlinkCommon__pdsch_ConfigCommon_PR_setup
-} BWP_DownlinkCommon__pdsch_ConfigCommon_PR;
-
-/* Forward declarations */
-struct PDCCH_ConfigCommon;
-struct PDSCH_ConfigCommon;
-
-/* BWP-DownlinkCommon */
-typedef struct BWP_DownlinkCommon {
-       BWP_t    genericParameters;
-       struct BWP_DownlinkCommon__pdcch_ConfigCommon {
-               BWP_DownlinkCommon__pdcch_ConfigCommon_PR present;
-               union BWP_DownlinkCommon__pdcch_ConfigCommon_u {
-                       NULL_t   release;
-                       struct PDCCH_ConfigCommon       *setup;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *pdcch_ConfigCommon;
-       struct BWP_DownlinkCommon__pdsch_ConfigCommon {
-               BWP_DownlinkCommon__pdsch_ConfigCommon_PR present;
-               union BWP_DownlinkCommon__pdsch_ConfigCommon_u {
-                       NULL_t   release;
-                       struct PDSCH_ConfigCommon       *setup;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *pdsch_ConfigCommon;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BWP_DownlinkCommon_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_BWP_DownlinkCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_BWP_DownlinkCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_BWP_DownlinkCommon_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BWP_DownlinkCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BWP-UplinkCommon.c b/src/codec_utils/SYSINFO/BWP-UplinkCommon.c
deleted file mode 100644 (file)
index 1d1312b..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BWP-UplinkCommon.h"
-
-#include "RACH-ConfigCommon.h"
-#include "PUSCH-ConfigCommon.h"
-#include "PUCCH-ConfigCommon.h"
-static asn_oer_constraints_t asn_OER_type_rach_ConfigCommon_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_rach_ConfigCommon_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_pusch_ConfigCommon_constr_6 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_pusch_ConfigCommon_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_pucch_ConfigCommon_constr_9 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_pucch_ConfigCommon_constr_9 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_rach_ConfigCommon_3[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, choice.release),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "release"
-               },
-       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, choice.setup),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RACH_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "setup"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_rach_ConfigCommon_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
-};
-static asn_CHOICE_specifics_t asn_SPC_rach_ConfigCommon_specs_3 = {
-       sizeof(struct BWP_UplinkCommon__rach_ConfigCommon),
-       offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, _asn_ctx),
-       offsetof(struct BWP_UplinkCommon__rach_ConfigCommon, present),
-       sizeof(((struct BWP_UplinkCommon__rach_ConfigCommon *)0)->present),
-       asn_MAP_rach_ConfigCommon_tag2el_3,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rach_ConfigCommon_3 = {
-       "rach-ConfigCommon",
-       "rach-ConfigCommon",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_rach_ConfigCommon_constr_3, &asn_PER_type_rach_ConfigCommon_constr_3, CHOICE_constraint },
-       asn_MBR_rach_ConfigCommon_3,
-       2,      /* Elements count */
-       &asn_SPC_rach_ConfigCommon_specs_3      /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_pusch_ConfigCommon_6[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, choice.release),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "release"
-               },
-       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, choice.setup),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PUSCH_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "setup"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_pusch_ConfigCommon_tag2el_6[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
-};
-static asn_CHOICE_specifics_t asn_SPC_pusch_ConfigCommon_specs_6 = {
-       sizeof(struct BWP_UplinkCommon__pusch_ConfigCommon),
-       offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, _asn_ctx),
-       offsetof(struct BWP_UplinkCommon__pusch_ConfigCommon, present),
-       sizeof(((struct BWP_UplinkCommon__pusch_ConfigCommon *)0)->present),
-       asn_MAP_pusch_ConfigCommon_tag2el_6,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pusch_ConfigCommon_6 = {
-       "pusch-ConfigCommon",
-       "pusch-ConfigCommon",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_pusch_ConfigCommon_constr_6, &asn_PER_type_pusch_ConfigCommon_constr_6, CHOICE_constraint },
-       asn_MBR_pusch_ConfigCommon_6,
-       2,      /* Elements count */
-       &asn_SPC_pusch_ConfigCommon_specs_6     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_pucch_ConfigCommon_9[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, choice.release),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "release"
-               },
-       { ATF_POINTER, 0, offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, choice.setup),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PUCCH_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "setup"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_pucch_ConfigCommon_tag2el_9[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* release */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* setup */
-};
-static asn_CHOICE_specifics_t asn_SPC_pucch_ConfigCommon_specs_9 = {
-       sizeof(struct BWP_UplinkCommon__pucch_ConfigCommon),
-       offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, _asn_ctx),
-       offsetof(struct BWP_UplinkCommon__pucch_ConfigCommon, present),
-       sizeof(((struct BWP_UplinkCommon__pucch_ConfigCommon *)0)->present),
-       asn_MAP_pucch_ConfigCommon_tag2el_9,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_pucch_ConfigCommon_9 = {
-       "pucch-ConfigCommon",
-       "pucch-ConfigCommon",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_pucch_ConfigCommon_constr_9, &asn_PER_type_pucch_ConfigCommon_constr_9, CHOICE_constraint },
-       asn_MBR_pucch_ConfigCommon_9,
-       2,      /* Elements count */
-       &asn_SPC_pucch_ConfigCommon_specs_9     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_BWP_UplinkCommon_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP_UplinkCommon, genericParameters),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BWP,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "genericParameters"
-               },
-       { ATF_POINTER, 3, offsetof(struct BWP_UplinkCommon, rach_ConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_rach_ConfigCommon_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rach-ConfigCommon"
-               },
-       { ATF_POINTER, 2, offsetof(struct BWP_UplinkCommon, pusch_ConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_pusch_ConfigCommon_6,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pusch-ConfigCommon"
-               },
-       { ATF_POINTER, 1, offsetof(struct BWP_UplinkCommon, pucch_ConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_pucch_ConfigCommon_9,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pucch-ConfigCommon"
-               },
-};
-static const int asn_MAP_BWP_UplinkCommon_oms_1[] = { 1, 2, 3 };
-static const ber_tlv_tag_t asn_DEF_BWP_UplinkCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_BWP_UplinkCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* genericParameters */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* rach-ConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* pusch-ConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pucch-ConfigCommon */
-};
-asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkCommon_specs_1 = {
-       sizeof(struct BWP_UplinkCommon),
-       offsetof(struct BWP_UplinkCommon, _asn_ctx),
-       asn_MAP_BWP_UplinkCommon_tag2el_1,
-       4,      /* Count of tags in the map */
-       asn_MAP_BWP_UplinkCommon_oms_1, /* Optional members */
-       3, 0,   /* Root/Additions */
-       4,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_BWP_UplinkCommon = {
-       "BWP-UplinkCommon",
-       "BWP-UplinkCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_BWP_UplinkCommon_tags_1,
-       sizeof(asn_DEF_BWP_UplinkCommon_tags_1)
-               /sizeof(asn_DEF_BWP_UplinkCommon_tags_1[0]), /* 1 */
-       asn_DEF_BWP_UplinkCommon_tags_1,        /* Same as above */
-       sizeof(asn_DEF_BWP_UplinkCommon_tags_1)
-               /sizeof(asn_DEF_BWP_UplinkCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_BWP_UplinkCommon_1,
-       4,      /* Elements count */
-       &asn_SPC_BWP_UplinkCommon_specs_1       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BWP-UplinkCommon.h b/src/codec_utils/SYSINFO/BWP-UplinkCommon.h
deleted file mode 100644 (file)
index 978d9c3..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BWP_UplinkCommon_H_
-#define        _BWP_UplinkCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "BWP.h"
-#include <NULL.h>
-#include <constr_CHOICE.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum BWP_UplinkCommon__rach_ConfigCommon_PR {
-       BWP_UplinkCommon__rach_ConfigCommon_PR_NOTHING, /* No components present */
-       BWP_UplinkCommon__rach_ConfigCommon_PR_release,
-       BWP_UplinkCommon__rach_ConfigCommon_PR_setup
-} BWP_UplinkCommon__rach_ConfigCommon_PR;
-typedef enum BWP_UplinkCommon__pusch_ConfigCommon_PR {
-       BWP_UplinkCommon__pusch_ConfigCommon_PR_NOTHING,        /* No components present */
-       BWP_UplinkCommon__pusch_ConfigCommon_PR_release,
-       BWP_UplinkCommon__pusch_ConfigCommon_PR_setup
-} BWP_UplinkCommon__pusch_ConfigCommon_PR;
-typedef enum BWP_UplinkCommon__pucch_ConfigCommon_PR {
-       BWP_UplinkCommon__pucch_ConfigCommon_PR_NOTHING,        /* No components present */
-       BWP_UplinkCommon__pucch_ConfigCommon_PR_release,
-       BWP_UplinkCommon__pucch_ConfigCommon_PR_setup
-} BWP_UplinkCommon__pucch_ConfigCommon_PR;
-
-/* Forward declarations */
-struct RACH_ConfigCommon;
-struct PUSCH_ConfigCommon;
-struct PUCCH_ConfigCommon;
-
-/* BWP-UplinkCommon */
-typedef struct BWP_UplinkCommon {
-       BWP_t    genericParameters;
-       struct BWP_UplinkCommon__rach_ConfigCommon {
-               BWP_UplinkCommon__rach_ConfigCommon_PR present;
-               union BWP_UplinkCommon__rach_ConfigCommon_u {
-                       NULL_t   release;
-                       struct RACH_ConfigCommon        *setup;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *rach_ConfigCommon;
-       struct BWP_UplinkCommon__pusch_ConfigCommon {
-               BWP_UplinkCommon__pusch_ConfigCommon_PR present;
-               union BWP_UplinkCommon__pusch_ConfigCommon_u {
-                       NULL_t   release;
-                       struct PUSCH_ConfigCommon       *setup;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *pusch_ConfigCommon;
-       struct BWP_UplinkCommon__pucch_ConfigCommon {
-               BWP_UplinkCommon__pucch_ConfigCommon_PR present;
-               union BWP_UplinkCommon__pucch_ConfigCommon_u {
-                       NULL_t   release;
-                       struct PUCCH_ConfigCommon       *setup;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *pucch_ConfigCommon;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BWP_UplinkCommon_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_BWP_UplinkCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_BWP_UplinkCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_BWP_UplinkCommon_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BWP_UplinkCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/BWP.c b/src/codec_utils/SYSINFO/BWP.c
deleted file mode 100644 (file)
index bc654d6..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "BWP.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_locationAndBandwidth_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 >= 0 && value <= 37949)) {
-               /* 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_cyclicPrefix_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_cyclicPrefix_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_locationAndBandwidth_constr_2 CC_NOTUSED = {
-       { 2, 1 }        /* (0..37949) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_locationAndBandwidth_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       16,  16,  0,  37949 }  /* (0..37949) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_cyclicPrefix_value2enum_4[] = {
-       { 0,    8,      "extended" }
-};
-static const unsigned int asn_MAP_cyclicPrefix_enum2value_4[] = {
-       0       /* extended(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_cyclicPrefix_specs_4 = {
-       asn_MAP_cyclicPrefix_value2enum_4,      /* "tag" => N; sorted by tag */
-       asn_MAP_cyclicPrefix_enum2value_4,      /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_cyclicPrefix_tags_4[] = {
-       (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_cyclicPrefix_4 = {
-       "cyclicPrefix",
-       "cyclicPrefix",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_cyclicPrefix_tags_4,
-       sizeof(asn_DEF_cyclicPrefix_tags_4)
-               /sizeof(asn_DEF_cyclicPrefix_tags_4[0]) - 1, /* 1 */
-       asn_DEF_cyclicPrefix_tags_4,    /* Same as above */
-       sizeof(asn_DEF_cyclicPrefix_tags_4)
-               /sizeof(asn_DEF_cyclicPrefix_tags_4[0]), /* 2 */
-       { &asn_OER_type_cyclicPrefix_constr_4, &asn_PER_type_cyclicPrefix_constr_4, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_cyclicPrefix_specs_4   /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_BWP_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct BWP, locationAndBandwidth),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_locationAndBandwidth_constr_2, &asn_PER_memb_locationAndBandwidth_constr_2,  memb_locationAndBandwidth_constraint_1 },
-               0, 0, /* No default value */
-               "locationAndBandwidth"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct BWP, subcarrierSpacing),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SubcarrierSpacing,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "subcarrierSpacing"
-               },
-       { ATF_POINTER, 1, offsetof(struct BWP, cyclicPrefix),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_cyclicPrefix_4,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cyclicPrefix"
-               },
-};
-static const int asn_MAP_BWP_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_BWP_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_BWP_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* locationAndBandwidth */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subcarrierSpacing */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* cyclicPrefix */
-};
-asn_SEQUENCE_specifics_t asn_SPC_BWP_specs_1 = {
-       sizeof(struct BWP),
-       offsetof(struct BWP, _asn_ctx),
-       asn_MAP_BWP_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_BWP_oms_1,      /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_BWP = {
-       "BWP",
-       "BWP",
-       &asn_OP_SEQUENCE,
-       asn_DEF_BWP_tags_1,
-       sizeof(asn_DEF_BWP_tags_1)
-               /sizeof(asn_DEF_BWP_tags_1[0]), /* 1 */
-       asn_DEF_BWP_tags_1,     /* Same as above */
-       sizeof(asn_DEF_BWP_tags_1)
-               /sizeof(asn_DEF_BWP_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_BWP_1,
-       3,      /* Elements count */
-       &asn_SPC_BWP_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/BWP.h b/src/codec_utils/SYSINFO/BWP.h
deleted file mode 100644 (file)
index 6cacf55..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _BWP_H_
-#define        _BWP_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include "SubcarrierSpacing.h"
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum BWP__cyclicPrefix {
-       BWP__cyclicPrefix_extended      = 0
-} e_BWP__cyclicPrefix;
-
-/* BWP */
-typedef struct BWP {
-       long     locationAndBandwidth;
-       SubcarrierSpacing_t      subcarrierSpacing;
-       long    *cyclicPrefix;  /* OPTIONAL */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} BWP_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_cyclicPrefix_4;        // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_BWP;
-extern asn_SEQUENCE_specifics_t asn_SPC_BWP_specs_1;
-extern asn_TYPE_member_t asn_MBR_BWP_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BWP_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/CellAccessRelatedInfo.c b/src/codec_utils/SYSINFO/CellAccessRelatedInfo.c
deleted file mode 100644 (file)
index 30453ee..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "CellAccessRelatedInfo.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_cellReservedForOtherUse_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_cellReservedForOtherUse_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_cellReservedForOtherUse_value2enum_3[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_cellReservedForOtherUse_enum2value_3[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_cellReservedForOtherUse_specs_3 = {
-       asn_MAP_cellReservedForOtherUse_value2enum_3,   /* "tag" => N; sorted by tag */
-       asn_MAP_cellReservedForOtherUse_enum2value_3,   /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_cellReservedForOtherUse_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_cellReservedForOtherUse_3 = {
-       "cellReservedForOtherUse",
-       "cellReservedForOtherUse",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_cellReservedForOtherUse_tags_3,
-       sizeof(asn_DEF_cellReservedForOtherUse_tags_3)
-               /sizeof(asn_DEF_cellReservedForOtherUse_tags_3[0]) - 1, /* 1 */
-       asn_DEF_cellReservedForOtherUse_tags_3, /* Same as above */
-       sizeof(asn_DEF_cellReservedForOtherUse_tags_3)
-               /sizeof(asn_DEF_cellReservedForOtherUse_tags_3[0]), /* 2 */
-       { &asn_OER_type_cellReservedForOtherUse_constr_3, &asn_PER_type_cellReservedForOtherUse_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_cellReservedForOtherUse_specs_3        /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct CellAccessRelatedInfo, plmn_IdentityList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PLMN_IdentityInfoList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "plmn-IdentityList"
-               },
-       { ATF_POINTER, 1, offsetof(struct CellAccessRelatedInfo, cellReservedForOtherUse),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_cellReservedForOtherUse_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellReservedForOtherUse"
-               },
-};
-static const int asn_MAP_CellAccessRelatedInfo_oms_1[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_CellAccessRelatedInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_CellAccessRelatedInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* cellReservedForOtherUse */
-};
-asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_specs_1 = {
-       sizeof(struct CellAccessRelatedInfo),
-       offsetof(struct CellAccessRelatedInfo, _asn_ctx),
-       asn_MAP_CellAccessRelatedInfo_tag2el_1,
-       2,      /* Count of tags in the map */
-       asn_MAP_CellAccessRelatedInfo_oms_1,    /* Optional members */
-       1, 0,   /* Root/Additions */
-       2,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo = {
-       "CellAccessRelatedInfo",
-       "CellAccessRelatedInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_CellAccessRelatedInfo_tags_1,
-       sizeof(asn_DEF_CellAccessRelatedInfo_tags_1)
-               /sizeof(asn_DEF_CellAccessRelatedInfo_tags_1[0]), /* 1 */
-       asn_DEF_CellAccessRelatedInfo_tags_1,   /* Same as above */
-       sizeof(asn_DEF_CellAccessRelatedInfo_tags_1)
-               /sizeof(asn_DEF_CellAccessRelatedInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_CellAccessRelatedInfo_1,
-       2,      /* Elements count */
-       &asn_SPC_CellAccessRelatedInfo_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/CellAccessRelatedInfo.h b/src/codec_utils/SYSINFO/CellAccessRelatedInfo.h
deleted file mode 100644 (file)
index fd294a9..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _CellAccessRelatedInfo_H_
-#define        _CellAccessRelatedInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "PLMN-IdentityInfoList.h"
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum CellAccessRelatedInfo__cellReservedForOtherUse {
-       CellAccessRelatedInfo__cellReservedForOtherUse_true     = 0
-} e_CellAccessRelatedInfo__cellReservedForOtherUse;
-
-/* CellAccessRelatedInfo */
-typedef struct CellAccessRelatedInfo {
-       PLMN_IdentityInfoList_t  plmn_IdentityList;
-       long    *cellReservedForOtherUse;       /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} CellAccessRelatedInfo_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_cellReservedForOtherUse_3;     // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_CellAccessRelatedInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_CellAccessRelatedInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_CellAccessRelatedInfo_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CellAccessRelatedInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/CellIdentity.c b/src/codec_utils/SYSINFO/CellIdentity.c
deleted file mode 100644 (file)
index feb68e8..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "CellIdentity.h"
-
-int
-CellIdentity_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_CellIdentity_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       36      /* (SIZE(36..36)) */};
-asn_per_constraints_t asn_PER_type_CellIdentity_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_CellIdentity_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_CellIdentity = {
-       "CellIdentity",
-       "CellIdentity",
-       &asn_OP_BIT_STRING,
-       asn_DEF_CellIdentity_tags_1,
-       sizeof(asn_DEF_CellIdentity_tags_1)
-               /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
-       asn_DEF_CellIdentity_tags_1,    /* Same as above */
-       sizeof(asn_DEF_CellIdentity_tags_1)
-               /sizeof(asn_DEF_CellIdentity_tags_1[0]), /* 1 */
-       { &asn_OER_type_CellIdentity_constr_1, &asn_PER_type_CellIdentity_constr_1, CellIdentity_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_BIT_STRING_specs       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/CellIdentity.h b/src/codec_utils/SYSINFO/CellIdentity.h
deleted file mode 100644 (file)
index 23b5460..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _CellIdentity_H_
-#define        _CellIdentity_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <BIT_STRING.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* CellIdentity */
-typedef BIT_STRING_t    CellIdentity_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_CellIdentity_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_CellIdentity;
-asn_struct_free_f CellIdentity_free;
-asn_struct_print_f CellIdentity_print;
-asn_constr_check_f CellIdentity_constraint;
-ber_type_decoder_f CellIdentity_decode_ber;
-der_type_encoder_f CellIdentity_encode_der;
-xer_type_decoder_f CellIdentity_decode_xer;
-xer_type_encoder_f CellIdentity_encode_xer;
-oer_type_decoder_f CellIdentity_decode_oer;
-oer_type_encoder_f CellIdentity_encode_oer;
-per_type_decoder_f CellIdentity_decode_uper;
-per_type_encoder_f CellIdentity_encode_uper;
-per_type_decoder_f CellIdentity_decode_aper;
-per_type_encoder_f CellIdentity_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _CellIdentity_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ConnEstFailureControl.c b/src/codec_utils/SYSINFO/ConnEstFailureControl.c
deleted file mode 100644 (file)
index 139c352..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ConnEstFailureControl.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.
- */
-static int
-memb_connEstFailOffset_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_connEstFailCount_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_connEstFailCount_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_connEstFailOffsetValidity_constr_7 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_connEstFailOffsetValidity_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_connEstFailOffset_constr_16 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_connEstFailOffset_constr_16 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_connEstFailCount_value2enum_2[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" },
-       { 2,    2,      "n3" },
-       { 3,    2,      "n4" }
-};
-static const unsigned int asn_MAP_connEstFailCount_enum2value_2[] = {
-       0,      /* n1(0) */
-       1,      /* n2(1) */
-       2,      /* n3(2) */
-       3       /* n4(3) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_connEstFailCount_specs_2 = {
-       asn_MAP_connEstFailCount_value2enum_2,  /* "tag" => N; sorted by tag */
-       asn_MAP_connEstFailCount_enum2value_2,  /* N => "tag"; sorted by N */
-       4,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_connEstFailCount_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_connEstFailCount_2 = {
-       "connEstFailCount",
-       "connEstFailCount",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_connEstFailCount_tags_2,
-       sizeof(asn_DEF_connEstFailCount_tags_2)
-               /sizeof(asn_DEF_connEstFailCount_tags_2[0]) - 1, /* 1 */
-       asn_DEF_connEstFailCount_tags_2,        /* Same as above */
-       sizeof(asn_DEF_connEstFailCount_tags_2)
-               /sizeof(asn_DEF_connEstFailCount_tags_2[0]), /* 2 */
-       { &asn_OER_type_connEstFailCount_constr_2, &asn_PER_type_connEstFailCount_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_connEstFailCount_specs_2       /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_connEstFailOffsetValidity_value2enum_7[] = {
-       { 0,    3,      "s30" },
-       { 1,    3,      "s60" },
-       { 2,    4,      "s120" },
-       { 3,    4,      "s240" },
-       { 4,    4,      "s300" },
-       { 5,    4,      "s420" },
-       { 6,    4,      "s600" },
-       { 7,    4,      "s900" }
-};
-static const unsigned int asn_MAP_connEstFailOffsetValidity_enum2value_7[] = {
-       2,      /* s120(2) */
-       3,      /* s240(3) */
-       0,      /* s30(0) */
-       4,      /* s300(4) */
-       5,      /* s420(5) */
-       1,      /* s60(1) */
-       6,      /* s600(6) */
-       7       /* s900(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_connEstFailOffsetValidity_specs_7 = {
-       asn_MAP_connEstFailOffsetValidity_value2enum_7, /* "tag" => N; sorted by tag */
-       asn_MAP_connEstFailOffsetValidity_enum2value_7, /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_connEstFailOffsetValidity_tags_7[] = {
-       (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_connEstFailOffsetValidity_7 = {
-       "connEstFailOffsetValidity",
-       "connEstFailOffsetValidity",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_connEstFailOffsetValidity_tags_7,
-       sizeof(asn_DEF_connEstFailOffsetValidity_tags_7)
-               /sizeof(asn_DEF_connEstFailOffsetValidity_tags_7[0]) - 1, /* 1 */
-       asn_DEF_connEstFailOffsetValidity_tags_7,       /* Same as above */
-       sizeof(asn_DEF_connEstFailOffsetValidity_tags_7)
-               /sizeof(asn_DEF_connEstFailOffsetValidity_tags_7[0]), /* 2 */
-       { &asn_OER_type_connEstFailOffsetValidity_constr_7, &asn_PER_type_connEstFailOffsetValidity_constr_7, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_connEstFailOffsetValidity_specs_7      /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_ConnEstFailureControl_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct ConnEstFailureControl, connEstFailCount),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_connEstFailCount_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "connEstFailCount"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ConnEstFailureControl, connEstFailOffsetValidity),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_connEstFailOffsetValidity_7,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "connEstFailOffsetValidity"
-               },
-       { ATF_POINTER, 1, offsetof(struct ConnEstFailureControl, connEstFailOffset),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_connEstFailOffset_constr_16, &asn_PER_memb_connEstFailOffset_constr_16,  memb_connEstFailOffset_constraint_1 },
-               0, 0, /* No default value */
-               "connEstFailOffset"
-               },
-};
-static const int asn_MAP_ConnEstFailureControl_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_ConnEstFailureControl_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ConnEstFailureControl_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* connEstFailCount */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* connEstFailOffsetValidity */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* connEstFailOffset */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ConnEstFailureControl_specs_1 = {
-       sizeof(struct ConnEstFailureControl),
-       offsetof(struct ConnEstFailureControl, _asn_ctx),
-       asn_MAP_ConnEstFailureControl_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_ConnEstFailureControl_oms_1,    /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ConnEstFailureControl = {
-       "ConnEstFailureControl",
-       "ConnEstFailureControl",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ConnEstFailureControl_tags_1,
-       sizeof(asn_DEF_ConnEstFailureControl_tags_1)
-               /sizeof(asn_DEF_ConnEstFailureControl_tags_1[0]), /* 1 */
-       asn_DEF_ConnEstFailureControl_tags_1,   /* Same as above */
-       sizeof(asn_DEF_ConnEstFailureControl_tags_1)
-               /sizeof(asn_DEF_ConnEstFailureControl_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ConnEstFailureControl_1,
-       3,      /* Elements count */
-       &asn_SPC_ConnEstFailureControl_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/ConnEstFailureControl.h b/src/codec_utils/SYSINFO/ConnEstFailureControl.h
deleted file mode 100644 (file)
index c3e018b..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ConnEstFailureControl_H_
-#define        _ConnEstFailureControl_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum ConnEstFailureControl__connEstFailCount {
-       ConnEstFailureControl__connEstFailCount_n1      = 0,
-       ConnEstFailureControl__connEstFailCount_n2      = 1,
-       ConnEstFailureControl__connEstFailCount_n3      = 2,
-       ConnEstFailureControl__connEstFailCount_n4      = 3
-} e_ConnEstFailureControl__connEstFailCount;
-typedef enum ConnEstFailureControl__connEstFailOffsetValidity {
-       ConnEstFailureControl__connEstFailOffsetValidity_s30    = 0,
-       ConnEstFailureControl__connEstFailOffsetValidity_s60    = 1,
-       ConnEstFailureControl__connEstFailOffsetValidity_s120   = 2,
-       ConnEstFailureControl__connEstFailOffsetValidity_s240   = 3,
-       ConnEstFailureControl__connEstFailOffsetValidity_s300   = 4,
-       ConnEstFailureControl__connEstFailOffsetValidity_s420   = 5,
-       ConnEstFailureControl__connEstFailOffsetValidity_s600   = 6,
-       ConnEstFailureControl__connEstFailOffsetValidity_s900   = 7
-} e_ConnEstFailureControl__connEstFailOffsetValidity;
-
-/* ConnEstFailureControl */
-typedef struct ConnEstFailureControl {
-       long     connEstFailCount;
-       long     connEstFailOffsetValidity;
-       long    *connEstFailOffset;     /* OPTIONAL */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} ConnEstFailureControl_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_connEstFailCount_2;    // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_connEstFailOffsetValidity_7;   // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_ConnEstFailureControl;
-extern asn_SEQUENCE_specifics_t asn_SPC_ConnEstFailureControl_specs_1;
-extern asn_TYPE_member_t asn_MBR_ConnEstFailureControl_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ConnEstFailureControl_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ControlResourceSet.c b/src/codec_utils/SYSINFO/ControlResourceSet.c
deleted file mode 100644 (file)
index 02627fb..0000000
+++ /dev/null
@@ -1,748 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ControlResourceSet.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.
- */
-static int
-memb_shiftIndex_constraint_6(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 <= 274)) {
-               /* 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_frequencyDomainResources_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 == 45)) {
-               /* 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_duration_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 <= 3)) {
-               /* 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_tci_StatesPDCCH_ToAddList_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 <= 64)) {
-               /* 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_tci_StatesPDCCH_ToReleaseList_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 <= 64)) {
-               /* 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_pdcch_DMRS_ScramblingID_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 >= 0 && 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 asn_oer_constraints_t asn_OER_type_reg_BundleSize_constr_7 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_reg_BundleSize_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_interleaverSize_constr_11 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_interleaverSize_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_shiftIndex_constr_15 CC_NOTUSED = {
-       { 2, 1 }        /* (0..274) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_shiftIndex_constr_15 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_cce_REG_MappingType_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_cce_REG_MappingType_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_precoderGranularity_constr_17 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_precoderGranularity_constr_17 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_type_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_type_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_tci_PresentInDCI_constr_24 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_tci_PresentInDCI_constr_24 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_frequencyDomainResources_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       45      /* (SIZE(45..45)) */};
-static asn_per_constraints_t asn_PER_memb_frequencyDomainResources_constr_3 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  45,  45 }      /* (SIZE(45..45)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_duration_constr_4 CC_NOTUSED = {
-       { 1, 1 }        /* (1..3) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_duration_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  1,  3 }        /* (1..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_memb_tci_StatesPDCCH_ToAddList_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..64)) */};
-static asn_per_constraints_t asn_PER_memb_tci_StatesPDCCH_ToReleaseList_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (SIZE(1..64)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pdcch_DMRS_ScramblingID_constr_26 CC_NOTUSED = {
-       { 2, 1 }        /* (0..65535) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_pdcch_DMRS_ScramblingID_constr_26 CC_NOTUSED = {
-       { APC_CONSTRAINED,       16,  16,  0,  65535 }  /* (0..65535) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_reg_BundleSize_value2enum_7[] = {
-       { 0,    2,      "n2" },
-       { 1,    2,      "n3" },
-       { 2,    2,      "n6" }
-};
-static const unsigned int asn_MAP_reg_BundleSize_enum2value_7[] = {
-       0,      /* n2(0) */
-       1,      /* n3(1) */
-       2       /* n6(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_reg_BundleSize_specs_7 = {
-       asn_MAP_reg_BundleSize_value2enum_7,    /* "tag" => N; sorted by tag */
-       asn_MAP_reg_BundleSize_enum2value_7,    /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_reg_BundleSize_tags_7[] = {
-       (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_reg_BundleSize_7 = {
-       "reg-BundleSize",
-       "reg-BundleSize",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_reg_BundleSize_tags_7,
-       sizeof(asn_DEF_reg_BundleSize_tags_7)
-               /sizeof(asn_DEF_reg_BundleSize_tags_7[0]) - 1, /* 1 */
-       asn_DEF_reg_BundleSize_tags_7,  /* Same as above */
-       sizeof(asn_DEF_reg_BundleSize_tags_7)
-               /sizeof(asn_DEF_reg_BundleSize_tags_7[0]), /* 2 */
-       { &asn_OER_type_reg_BundleSize_constr_7, &asn_PER_type_reg_BundleSize_constr_7, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_reg_BundleSize_specs_7 /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_interleaverSize_value2enum_11[] = {
-       { 0,    2,      "n2" },
-       { 1,    2,      "n3" },
-       { 2,    2,      "n6" }
-};
-static const unsigned int asn_MAP_interleaverSize_enum2value_11[] = {
-       0,      /* n2(0) */
-       1,      /* n3(1) */
-       2       /* n6(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_interleaverSize_specs_11 = {
-       asn_MAP_interleaverSize_value2enum_11,  /* "tag" => N; sorted by tag */
-       asn_MAP_interleaverSize_enum2value_11,  /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_interleaverSize_tags_11[] = {
-       (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_interleaverSize_11 = {
-       "interleaverSize",
-       "interleaverSize",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_interleaverSize_tags_11,
-       sizeof(asn_DEF_interleaverSize_tags_11)
-               /sizeof(asn_DEF_interleaverSize_tags_11[0]) - 1, /* 1 */
-       asn_DEF_interleaverSize_tags_11,        /* Same as above */
-       sizeof(asn_DEF_interleaverSize_tags_11)
-               /sizeof(asn_DEF_interleaverSize_tags_11[0]), /* 2 */
-       { &asn_OER_type_interleaverSize_constr_11, &asn_PER_type_interleaverSize_constr_11, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_interleaverSize_specs_11       /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_interleaved_6[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, reg_BundleSize),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_reg_BundleSize_7,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "reg-BundleSize"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, interleaverSize),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_interleaverSize_11,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "interleaverSize"
-               },
-       { ATF_POINTER, 1, offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, shiftIndex),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_shiftIndex_constr_15, &asn_PER_memb_shiftIndex_constr_15,  memb_shiftIndex_constraint_6 },
-               0, 0, /* No default value */
-               "shiftIndex"
-               },
-};
-static const int asn_MAP_interleaved_oms_6[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_interleaved_tags_6[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_interleaved_tag2el_6[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* reg-BundleSize */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* interleaverSize */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* shiftIndex */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_interleaved_specs_6 = {
-       sizeof(struct ControlResourceSet__cce_REG_MappingType__interleaved),
-       offsetof(struct ControlResourceSet__cce_REG_MappingType__interleaved, _asn_ctx),
-       asn_MAP_interleaved_tag2el_6,
-       3,      /* Count of tags in the map */
-       asn_MAP_interleaved_oms_6,      /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_interleaved_6 = {
-       "interleaved",
-       "interleaved",
-       &asn_OP_SEQUENCE,
-       asn_DEF_interleaved_tags_6,
-       sizeof(asn_DEF_interleaved_tags_6)
-               /sizeof(asn_DEF_interleaved_tags_6[0]) - 1, /* 1 */
-       asn_DEF_interleaved_tags_6,     /* Same as above */
-       sizeof(asn_DEF_interleaved_tags_6)
-               /sizeof(asn_DEF_interleaved_tags_6[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_interleaved_6,
-       3,      /* Elements count */
-       &asn_SPC_interleaved_specs_6    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_cce_REG_MappingType_5[] = {
-       { ATF_POINTER, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType, choice.interleaved),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_interleaved_6,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "interleaved"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet__cce_REG_MappingType, choice.nonInterleaved),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nonInterleaved"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_cce_REG_MappingType_tag2el_5[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* interleaved */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nonInterleaved */
-};
-static asn_CHOICE_specifics_t asn_SPC_cce_REG_MappingType_specs_5 = {
-       sizeof(struct ControlResourceSet__cce_REG_MappingType),
-       offsetof(struct ControlResourceSet__cce_REG_MappingType, _asn_ctx),
-       offsetof(struct ControlResourceSet__cce_REG_MappingType, present),
-       sizeof(((struct ControlResourceSet__cce_REG_MappingType *)0)->present),
-       asn_MAP_cce_REG_MappingType_tag2el_5,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_cce_REG_MappingType_5 = {
-       "cce-REG-MappingType",
-       "cce-REG-MappingType",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_cce_REG_MappingType_constr_5, &asn_PER_type_cce_REG_MappingType_constr_5, CHOICE_constraint },
-       asn_MBR_cce_REG_MappingType_5,
-       2,      /* Elements count */
-       &asn_SPC_cce_REG_MappingType_specs_5    /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_precoderGranularity_value2enum_17[] = {
-       { 0,    16,     "sameAsREG-bundle" },
-       { 1,    16,     "allContiguousRBs" }
-};
-static const unsigned int asn_MAP_precoderGranularity_enum2value_17[] = {
-       1,      /* allContiguousRBs(1) */
-       0       /* sameAsREG-bundle(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_precoderGranularity_specs_17 = {
-       asn_MAP_precoderGranularity_value2enum_17,      /* "tag" => N; sorted by tag */
-       asn_MAP_precoderGranularity_enum2value_17,      /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_precoderGranularity_tags_17[] = {
-       (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_precoderGranularity_17 = {
-       "precoderGranularity",
-       "precoderGranularity",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_precoderGranularity_tags_17,
-       sizeof(asn_DEF_precoderGranularity_tags_17)
-               /sizeof(asn_DEF_precoderGranularity_tags_17[0]) - 1, /* 1 */
-       asn_DEF_precoderGranularity_tags_17,    /* Same as above */
-       sizeof(asn_DEF_precoderGranularity_tags_17)
-               /sizeof(asn_DEF_precoderGranularity_tags_17[0]), /* 2 */
-       { &asn_OER_type_precoderGranularity_constr_17, &asn_PER_type_precoderGranularity_constr_17, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_precoderGranularity_specs_17   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_tci_StatesPDCCH_ToAddList_20[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_TCI_StateId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[] = {
-       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_tci_StatesPDCCH_ToAddList_specs_20 = {
-       sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList),
-       offsetof(struct ControlResourceSet__tci_StatesPDCCH_ToAddList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_tci_StatesPDCCH_ToAddList_20 = {
-       "tci-StatesPDCCH-ToAddList",
-       "tci-StatesPDCCH-ToAddList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_tci_StatesPDCCH_ToAddList_tags_20,
-       sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20)
-               /sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[0]) - 1, /* 1 */
-       asn_DEF_tci_StatesPDCCH_ToAddList_tags_20,      /* Same as above */
-       sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20)
-               /sizeof(asn_DEF_tci_StatesPDCCH_ToAddList_tags_20[0]), /* 2 */
-       { &asn_OER_type_tci_StatesPDCCH_ToAddList_constr_20, &asn_PER_type_tci_StatesPDCCH_ToAddList_constr_20, SEQUENCE_OF_constraint },
-       asn_MBR_tci_StatesPDCCH_ToAddList_20,
-       1,      /* Single element */
-       &asn_SPC_tci_StatesPDCCH_ToAddList_specs_20     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_tci_StatesPDCCH_ToReleaseList_22[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_TCI_StateId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[] = {
-       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_tci_StatesPDCCH_ToReleaseList_specs_22 = {
-       sizeof(struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList),
-       offsetof(struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_tci_StatesPDCCH_ToReleaseList_22 = {
-       "tci-StatesPDCCH-ToReleaseList",
-       "tci-StatesPDCCH-ToReleaseList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22,
-       sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22)
-               /sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[0]) - 1, /* 1 */
-       asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22,  /* Same as above */
-       sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22)
-               /sizeof(asn_DEF_tci_StatesPDCCH_ToReleaseList_tags_22[0]), /* 2 */
-       { &asn_OER_type_tci_StatesPDCCH_ToReleaseList_constr_22, &asn_PER_type_tci_StatesPDCCH_ToReleaseList_constr_22, SEQUENCE_OF_constraint },
-       asn_MBR_tci_StatesPDCCH_ToReleaseList_22,
-       1,      /* Single element */
-       &asn_SPC_tci_StatesPDCCH_ToReleaseList_specs_22 /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_tci_PresentInDCI_value2enum_24[] = {
-       { 0,    7,      "enabled" }
-};
-static const unsigned int asn_MAP_tci_PresentInDCI_enum2value_24[] = {
-       0       /* enabled(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_tci_PresentInDCI_specs_24 = {
-       asn_MAP_tci_PresentInDCI_value2enum_24, /* "tag" => N; sorted by tag */
-       asn_MAP_tci_PresentInDCI_enum2value_24, /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_tci_PresentInDCI_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_tci_PresentInDCI_24 = {
-       "tci-PresentInDCI",
-       "tci-PresentInDCI",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_tci_PresentInDCI_tags_24,
-       sizeof(asn_DEF_tci_PresentInDCI_tags_24)
-               /sizeof(asn_DEF_tci_PresentInDCI_tags_24[0]) - 1, /* 1 */
-       asn_DEF_tci_PresentInDCI_tags_24,       /* Same as above */
-       sizeof(asn_DEF_tci_PresentInDCI_tags_24)
-               /sizeof(asn_DEF_tci_PresentInDCI_tags_24[0]), /* 2 */
-       { &asn_OER_type_tci_PresentInDCI_constr_24, &asn_PER_type_tci_PresentInDCI_constr_24, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_tci_PresentInDCI_specs_24      /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_ControlResourceSet_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, controlResourceSetId),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ControlResourceSetId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "controlResourceSetId"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, frequencyDomainResources),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_frequencyDomainResources_constr_3, &asn_PER_memb_frequencyDomainResources_constr_3,  memb_frequencyDomainResources_constraint_1 },
-               0, 0, /* No default value */
-               "frequencyDomainResources"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, duration),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_duration_constr_4, &asn_PER_memb_duration_constr_4,  memb_duration_constraint_1 },
-               0, 0, /* No default value */
-               "duration"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, cce_REG_MappingType),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_cce_REG_MappingType_5,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cce-REG-MappingType"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ControlResourceSet, precoderGranularity),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_precoderGranularity_17,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "precoderGranularity"
-               },
-       { ATF_POINTER, 4, offsetof(struct ControlResourceSet, tci_StatesPDCCH_ToAddList),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               0,
-               &asn_DEF_tci_StatesPDCCH_ToAddList_20,
-               0,
-               { &asn_OER_memb_tci_StatesPDCCH_ToAddList_constr_20, &asn_PER_memb_tci_StatesPDCCH_ToAddList_constr_20,  memb_tci_StatesPDCCH_ToAddList_constraint_1 },
-               0, 0, /* No default value */
-               "tci-StatesPDCCH-ToAddList"
-               },
-       { ATF_POINTER, 3, offsetof(struct ControlResourceSet, tci_StatesPDCCH_ToReleaseList),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               0,
-               &asn_DEF_tci_StatesPDCCH_ToReleaseList_22,
-               0,
-               { &asn_OER_memb_tci_StatesPDCCH_ToReleaseList_constr_22, &asn_PER_memb_tci_StatesPDCCH_ToReleaseList_constr_22,  memb_tci_StatesPDCCH_ToReleaseList_constraint_1 },
-               0, 0, /* No default value */
-               "tci-StatesPDCCH-ToReleaseList"
-               },
-       { ATF_POINTER, 2, offsetof(struct ControlResourceSet, tci_PresentInDCI),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_tci_PresentInDCI_24,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "tci-PresentInDCI"
-               },
-       { ATF_POINTER, 1, offsetof(struct ControlResourceSet, pdcch_DMRS_ScramblingID),
-               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_pdcch_DMRS_ScramblingID_constr_26, &asn_PER_memb_pdcch_DMRS_ScramblingID_constr_26,  memb_pdcch_DMRS_ScramblingID_constraint_1 },
-               0, 0, /* No default value */
-               "pdcch-DMRS-ScramblingID"
-               },
-};
-static const int asn_MAP_ControlResourceSet_oms_1[] = { 5, 6, 7, 8 };
-static const ber_tlv_tag_t asn_DEF_ControlResourceSet_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ControlResourceSet_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* frequencyDomainResources */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* duration */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cce-REG-MappingType */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* precoderGranularity */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* tci-StatesPDCCH-ToAddList */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tci-StatesPDCCH-ToReleaseList */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* tci-PresentInDCI */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* pdcch-DMRS-ScramblingID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ControlResourceSet_specs_1 = {
-       sizeof(struct ControlResourceSet),
-       offsetof(struct ControlResourceSet, _asn_ctx),
-       asn_MAP_ControlResourceSet_tag2el_1,
-       9,      /* Count of tags in the map */
-       asn_MAP_ControlResourceSet_oms_1,       /* Optional members */
-       4, 0,   /* Root/Additions */
-       9,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ControlResourceSet = {
-       "ControlResourceSet",
-       "ControlResourceSet",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ControlResourceSet_tags_1,
-       sizeof(asn_DEF_ControlResourceSet_tags_1)
-               /sizeof(asn_DEF_ControlResourceSet_tags_1[0]), /* 1 */
-       asn_DEF_ControlResourceSet_tags_1,      /* Same as above */
-       sizeof(asn_DEF_ControlResourceSet_tags_1)
-               /sizeof(asn_DEF_ControlResourceSet_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ControlResourceSet_1,
-       9,      /* Elements count */
-       &asn_SPC_ControlResourceSet_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/ControlResourceSet.h b/src/codec_utils/SYSINFO/ControlResourceSet.h
deleted file mode 100644 (file)
index 5abdfe0..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ControlResourceSet_H_
-#define        _ControlResourceSet_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "ControlResourceSetId.h"
-#include <BIT_STRING.h>
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include <NULL.h>
-#include <constr_SEQUENCE.h>
-#include <constr_CHOICE.h>
-#include "TCI-StateId.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum ControlResourceSet__cce_REG_MappingType_PR {
-       ControlResourceSet__cce_REG_MappingType_PR_NOTHING,     /* No components present */
-       ControlResourceSet__cce_REG_MappingType_PR_interleaved,
-       ControlResourceSet__cce_REG_MappingType_PR_nonInterleaved
-} ControlResourceSet__cce_REG_MappingType_PR;
-typedef enum ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize {
-       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n2 = 0,
-       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n3 = 1,
-       ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize_n6 = 2
-} e_ControlResourceSet__cce_REG_MappingType__interleaved__reg_BundleSize;
-typedef enum ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize {
-       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n2        = 0,
-       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n3        = 1,
-       ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize_n6        = 2
-} e_ControlResourceSet__cce_REG_MappingType__interleaved__interleaverSize;
-typedef enum ControlResourceSet__precoderGranularity {
-       ControlResourceSet__precoderGranularity_sameAsREG_bundle        = 0,
-       ControlResourceSet__precoderGranularity_allContiguousRBs        = 1
-} e_ControlResourceSet__precoderGranularity;
-typedef enum ControlResourceSet__tci_PresentInDCI {
-       ControlResourceSet__tci_PresentInDCI_enabled    = 0
-} e_ControlResourceSet__tci_PresentInDCI;
-
-/* ControlResourceSet */
-typedef struct ControlResourceSet {
-       ControlResourceSetId_t   controlResourceSetId;
-       BIT_STRING_t     frequencyDomainResources;
-       long     duration;
-       struct ControlResourceSet__cce_REG_MappingType {
-               ControlResourceSet__cce_REG_MappingType_PR present;
-               union ControlResourceSet__cce_REG_MappingType_u {
-                       struct ControlResourceSet__cce_REG_MappingType__interleaved {
-                               long     reg_BundleSize;
-                               long     interleaverSize;
-                               long    *shiftIndex;    /* OPTIONAL */
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *interleaved;
-                       NULL_t   nonInterleaved;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } cce_REG_MappingType;
-       long     precoderGranularity;
-       struct ControlResourceSet__tci_StatesPDCCH_ToAddList {
-               A_SEQUENCE_OF(TCI_StateId_t) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *tci_StatesPDCCH_ToAddList;
-       struct ControlResourceSet__tci_StatesPDCCH_ToReleaseList {
-               A_SEQUENCE_OF(TCI_StateId_t) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *tci_StatesPDCCH_ToReleaseList;
-       long    *tci_PresentInDCI;      /* OPTIONAL */
-       long    *pdcch_DMRS_ScramblingID;       /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} ControlResourceSet_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_reg_BundleSize_7;      // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_interleaverSize_11;    // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_precoderGranularity_17;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_tci_PresentInDCI_24;   // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSet;
-extern asn_SEQUENCE_specifics_t asn_SPC_ControlResourceSet_specs_1;
-extern asn_TYPE_member_t asn_MBR_ControlResourceSet_1[9];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ControlResourceSet_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ControlResourceSetId.c b/src/codec_utils/SYSINFO/ControlResourceSetId.c
deleted file mode 100644 (file)
index 947e01b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ControlResourceSetId.h"
-
-int
-ControlResourceSetId_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 <= 11)) {
-               /* 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_ControlResourceSetId_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..11) */,
-       -1};
-asn_per_constraints_t asn_PER_type_ControlResourceSetId_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  11 }       /* (0..11) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ControlResourceSetId_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ControlResourceSetId = {
-       "ControlResourceSetId",
-       "ControlResourceSetId",
-       &asn_OP_NativeInteger,
-       asn_DEF_ControlResourceSetId_tags_1,
-       sizeof(asn_DEF_ControlResourceSetId_tags_1)
-               /sizeof(asn_DEF_ControlResourceSetId_tags_1[0]), /* 1 */
-       asn_DEF_ControlResourceSetId_tags_1,    /* Same as above */
-       sizeof(asn_DEF_ControlResourceSetId_tags_1)
-               /sizeof(asn_DEF_ControlResourceSetId_tags_1[0]), /* 1 */
-       { &asn_OER_type_ControlResourceSetId_constr_1, &asn_PER_type_ControlResourceSetId_constr_1, ControlResourceSetId_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/ControlResourceSetId.h b/src/codec_utils/SYSINFO/ControlResourceSetId.h
deleted file mode 100644 (file)
index 1b8f474..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ControlResourceSetId_H_
-#define        _ControlResourceSetId_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ControlResourceSetId */
-typedef long    ControlResourceSetId_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_ControlResourceSetId_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSetId;
-asn_struct_free_f ControlResourceSetId_free;
-asn_struct_print_f ControlResourceSetId_print;
-asn_constr_check_f ControlResourceSetId_constraint;
-ber_type_decoder_f ControlResourceSetId_decode_ber;
-der_type_encoder_f ControlResourceSetId_encode_der;
-xer_type_decoder_f ControlResourceSetId_decode_xer;
-xer_type_encoder_f ControlResourceSetId_encode_xer;
-oer_type_decoder_f ControlResourceSetId_decode_oer;
-oer_type_encoder_f ControlResourceSetId_encode_oer;
-per_type_decoder_f ControlResourceSetId_decode_uper;
-per_type_encoder_f ControlResourceSetId_encode_uper;
-per_type_decoder_f ControlResourceSetId_decode_aper;
-per_type_encoder_f ControlResourceSetId_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ControlResourceSetId_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ControlResourceSetZero.c b/src/codec_utils/SYSINFO/ControlResourceSetZero.c
deleted file mode 100644 (file)
index b9e3876..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ControlResourceSetZero.h"
-
-int
-ControlResourceSetZero_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 <= 15)) {
-               /* 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_ControlResourceSetZero_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-asn_per_constraints_t asn_PER_type_ControlResourceSetZero_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_ControlResourceSetZero_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_ControlResourceSetZero = {
-       "ControlResourceSetZero",
-       "ControlResourceSetZero",
-       &asn_OP_NativeInteger,
-       asn_DEF_ControlResourceSetZero_tags_1,
-       sizeof(asn_DEF_ControlResourceSetZero_tags_1)
-               /sizeof(asn_DEF_ControlResourceSetZero_tags_1[0]), /* 1 */
-       asn_DEF_ControlResourceSetZero_tags_1,  /* Same as above */
-       sizeof(asn_DEF_ControlResourceSetZero_tags_1)
-               /sizeof(asn_DEF_ControlResourceSetZero_tags_1[0]), /* 1 */
-       { &asn_OER_type_ControlResourceSetZero_constr_1, &asn_PER_type_ControlResourceSetZero_constr_1, ControlResourceSetZero_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/ControlResourceSetZero.h b/src/codec_utils/SYSINFO/ControlResourceSetZero.h
deleted file mode 100644 (file)
index c6e6c2a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ControlResourceSetZero_H_
-#define        _ControlResourceSetZero_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ControlResourceSetZero */
-typedef long    ControlResourceSetZero_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_ControlResourceSetZero_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_ControlResourceSetZero;
-asn_struct_free_f ControlResourceSetZero_free;
-asn_struct_print_f ControlResourceSetZero_print;
-asn_constr_check_f ControlResourceSetZero_constraint;
-ber_type_decoder_f ControlResourceSetZero_decode_ber;
-der_type_encoder_f ControlResourceSetZero_encode_der;
-xer_type_decoder_f ControlResourceSetZero_decode_xer;
-xer_type_encoder_f ControlResourceSetZero_encode_xer;
-oer_type_decoder_f ControlResourceSetZero_decode_oer;
-oer_type_encoder_f ControlResourceSetZero_encode_oer;
-per_type_decoder_f ControlResourceSetZero_decode_uper;
-per_type_encoder_f ControlResourceSetZero_encode_uper;
-per_type_decoder_f ControlResourceSetZero_decode_aper;
-per_type_encoder_f ControlResourceSetZero_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ControlResourceSetZero_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.c b/src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.c
deleted file mode 100644 (file)
index ffa27d5..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "DownlinkConfigCommonSIB.h"
-
-asn_TYPE_member_t asn_MBR_DownlinkConfigCommonSIB_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, frequencyInfoDL),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_FrequencyInfoDL_SIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "frequencyInfoDL"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, initialDownlinkBWP),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BWP_DownlinkCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "initialDownlinkBWP"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, bcch_Config),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BCCH_Config,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "bcch-Config"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct DownlinkConfigCommonSIB, pcch_Config),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PCCH_Config,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pcch-Config"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_DownlinkConfigCommonSIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_DownlinkConfigCommonSIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoDL */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialDownlinkBWP */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bcch-Config */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* pcch-Config */
-};
-asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommonSIB_specs_1 = {
-       sizeof(struct DownlinkConfigCommonSIB),
-       offsetof(struct DownlinkConfigCommonSIB, _asn_ctx),
-       asn_MAP_DownlinkConfigCommonSIB_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_DownlinkConfigCommonSIB = {
-       "DownlinkConfigCommonSIB",
-       "DownlinkConfigCommonSIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_DownlinkConfigCommonSIB_tags_1,
-       sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1[0]), /* 1 */
-       asn_DEF_DownlinkConfigCommonSIB_tags_1, /* Same as above */
-       sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_DownlinkConfigCommonSIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_DownlinkConfigCommonSIB_1,
-       4,      /* Elements count */
-       &asn_SPC_DownlinkConfigCommonSIB_specs_1        /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.h b/src/codec_utils/SYSINFO/DownlinkConfigCommonSIB.h
deleted file mode 100644 (file)
index 57b7a00..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _DownlinkConfigCommonSIB_H_
-#define        _DownlinkConfigCommonSIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "FrequencyInfoDL-SIB.h"
-#include "BWP-DownlinkCommon.h"
-#include "BCCH-Config.h"
-#include "PCCH-Config.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* DownlinkConfigCommonSIB */
-typedef struct DownlinkConfigCommonSIB {
-       FrequencyInfoDL_SIB_t    frequencyInfoDL;
-       BWP_DownlinkCommon_t     initialDownlinkBWP;
-       BCCH_Config_t    bcch_Config;
-       PCCH_Config_t    pcch_Config;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} DownlinkConfigCommonSIB_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_DownlinkConfigCommonSIB;
-extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkConfigCommonSIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_DownlinkConfigCommonSIB_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _DownlinkConfigCommonSIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/FreqBandIndicatorNR.c b/src/codec_utils/SYSINFO/FreqBandIndicatorNR.c
deleted file mode 100644 (file)
index 40fb3a9..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "FreqBandIndicatorNR.h"
-
-int
-FreqBandIndicatorNR_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 <= 1024)) {
-               /* 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_FreqBandIndicatorNR_constr_1 CC_NOTUSED = {
-       { 2, 1 }        /* (1..1024) */,
-       -1};
-asn_per_constraints_t asn_PER_type_FreqBandIndicatorNR_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  1,  1024 }   /* (1..1024) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_FreqBandIndicatorNR_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorNR = {
-       "FreqBandIndicatorNR",
-       "FreqBandIndicatorNR",
-       &asn_OP_NativeInteger,
-       asn_DEF_FreqBandIndicatorNR_tags_1,
-       sizeof(asn_DEF_FreqBandIndicatorNR_tags_1)
-               /sizeof(asn_DEF_FreqBandIndicatorNR_tags_1[0]), /* 1 */
-       asn_DEF_FreqBandIndicatorNR_tags_1,     /* Same as above */
-       sizeof(asn_DEF_FreqBandIndicatorNR_tags_1)
-               /sizeof(asn_DEF_FreqBandIndicatorNR_tags_1[0]), /* 1 */
-       { &asn_OER_type_FreqBandIndicatorNR_constr_1, &asn_PER_type_FreqBandIndicatorNR_constr_1, FreqBandIndicatorNR_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/FreqBandIndicatorNR.h b/src/codec_utils/SYSINFO/FreqBandIndicatorNR.h
deleted file mode 100644 (file)
index a81d749..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _FreqBandIndicatorNR_H_
-#define        _FreqBandIndicatorNR_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* FreqBandIndicatorNR */
-typedef long    FreqBandIndicatorNR_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_FreqBandIndicatorNR_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_FreqBandIndicatorNR;
-asn_struct_free_f FreqBandIndicatorNR_free;
-asn_struct_print_f FreqBandIndicatorNR_print;
-asn_constr_check_f FreqBandIndicatorNR_constraint;
-ber_type_decoder_f FreqBandIndicatorNR_decode_ber;
-der_type_encoder_f FreqBandIndicatorNR_encode_der;
-xer_type_decoder_f FreqBandIndicatorNR_decode_xer;
-xer_type_encoder_f FreqBandIndicatorNR_encode_xer;
-oer_type_decoder_f FreqBandIndicatorNR_decode_oer;
-oer_type_encoder_f FreqBandIndicatorNR_encode_oer;
-per_type_decoder_f FreqBandIndicatorNR_decode_uper;
-per_type_encoder_f FreqBandIndicatorNR_encode_uper;
-per_type_decoder_f FreqBandIndicatorNR_decode_aper;
-per_type_encoder_f FreqBandIndicatorNR_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _FreqBandIndicatorNR_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.c b/src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.c
deleted file mode 100644 (file)
index 1f5649c..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "FrequencyInfoDL-SIB.h"
-
-#include "SCS-SpecificCarrier.h"
-static int
-memb_offsetToPointA_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 >= 0 && value <= 2199)) {
-               /* 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_scs_SpecificCarrierList_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 <= 5)) {
-               /* 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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..5)) */};
-static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_offsetToPointA_constr_3 CC_NOTUSED = {
-       { 2, 1 }        /* (0..2199) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_offsetToPointA_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  2199 }   /* (0..2199) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..5)) */};
-static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_4[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SCS_SpecificCarrier,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_4[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_4 = {
-       sizeof(struct FrequencyInfoDL_SIB__scs_SpecificCarrierList),
-       offsetof(struct FrequencyInfoDL_SIB__scs_SpecificCarrierList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_4 = {
-       "scs-SpecificCarrierList",
-       "scs-SpecificCarrierList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_scs_SpecificCarrierList_tags_4,
-       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
-               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]) - 1, /* 1 */
-       asn_DEF_scs_SpecificCarrierList_tags_4, /* Same as above */
-       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
-               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]), /* 2 */
-       { &asn_OER_type_scs_SpecificCarrierList_constr_4, &asn_PER_type_scs_SpecificCarrierList_constr_4, SEQUENCE_OF_constraint },
-       asn_MBR_scs_SpecificCarrierList_4,
-       1,      /* Single element */
-       &asn_SPC_scs_SpecificCarrierList_specs_4        /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_FrequencyInfoDL_SIB_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, frequencyBandList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_MultiFrequencyBandListNR_SIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "frequencyBandList"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, offsetToPointA),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_offsetToPointA_constr_3, &asn_PER_memb_offsetToPointA_constr_3,  memb_offsetToPointA_constraint_1 },
-               0, 0, /* No default value */
-               "offsetToPointA"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoDL_SIB, scs_SpecificCarrierList),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_scs_SpecificCarrierList_4,
-               0,
-               { &asn_OER_memb_scs_SpecificCarrierList_constr_4, &asn_PER_memb_scs_SpecificCarrierList_constr_4,  memb_scs_SpecificCarrierList_constraint_1 },
-               0, 0, /* No default value */
-               "scs-SpecificCarrierList"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_FrequencyInfoDL_SIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoDL_SIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* offsetToPointA */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* scs-SpecificCarrierList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_SIB_specs_1 = {
-       sizeof(struct FrequencyInfoDL_SIB),
-       offsetof(struct FrequencyInfoDL_SIB, _asn_ctx),
-       asn_MAP_FrequencyInfoDL_SIB_tag2el_1,
-       3,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL_SIB = {
-       "FrequencyInfoDL-SIB",
-       "FrequencyInfoDL-SIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_FrequencyInfoDL_SIB_tags_1,
-       sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1)
-               /sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1[0]), /* 1 */
-       asn_DEF_FrequencyInfoDL_SIB_tags_1,     /* Same as above */
-       sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1)
-               /sizeof(asn_DEF_FrequencyInfoDL_SIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_FrequencyInfoDL_SIB_1,
-       3,      /* Elements count */
-       &asn_SPC_FrequencyInfoDL_SIB_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.h b/src/codec_utils/SYSINFO/FrequencyInfoDL-SIB.h
deleted file mode 100644 (file)
index 940d890..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _FrequencyInfoDL_SIB_H_
-#define        _FrequencyInfoDL_SIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "MultiFrequencyBandListNR-SIB.h"
-#include <NativeInteger.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Forward declarations */
-struct SCS_SpecificCarrier;
-
-/* FrequencyInfoDL-SIB */
-typedef struct FrequencyInfoDL_SIB {
-       MultiFrequencyBandListNR_SIB_t   frequencyBandList;
-       long     offsetToPointA;
-       struct FrequencyInfoDL_SIB__scs_SpecificCarrierList {
-               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } scs_SpecificCarrierList;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} FrequencyInfoDL_SIB_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoDL_SIB;
-extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoDL_SIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_FrequencyInfoDL_SIB_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _FrequencyInfoDL_SIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.c b/src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.c
deleted file mode 100644 (file)
index b417984..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "FrequencyInfoUL-SIB.h"
-
-#include "MultiFrequencyBandListNR-SIB.h"
-#include "SCS-SpecificCarrier.h"
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_scs_SpecificCarrierList_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 <= 5)) {
-               /* 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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..5)) */};
-static asn_per_constraints_t asn_PER_type_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_frequencyShift7p5khz_constr_7 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_frequencyShift7p5khz_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..5)) */};
-static asn_per_constraints_t asn_PER_memb_scs_SpecificCarrierList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  5 }        /* (SIZE(1..5)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_scs_SpecificCarrierList_4[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SCS_SpecificCarrier,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_scs_SpecificCarrierList_tags_4[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_scs_SpecificCarrierList_specs_4 = {
-       sizeof(struct FrequencyInfoUL_SIB__scs_SpecificCarrierList),
-       offsetof(struct FrequencyInfoUL_SIB__scs_SpecificCarrierList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_scs_SpecificCarrierList_4 = {
-       "scs-SpecificCarrierList",
-       "scs-SpecificCarrierList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_scs_SpecificCarrierList_tags_4,
-       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
-               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]) - 1, /* 1 */
-       asn_DEF_scs_SpecificCarrierList_tags_4, /* Same as above */
-       sizeof(asn_DEF_scs_SpecificCarrierList_tags_4)
-               /sizeof(asn_DEF_scs_SpecificCarrierList_tags_4[0]), /* 2 */
-       { &asn_OER_type_scs_SpecificCarrierList_constr_4, &asn_PER_type_scs_SpecificCarrierList_constr_4, SEQUENCE_OF_constraint },
-       asn_MBR_scs_SpecificCarrierList_4,
-       1,      /* Single element */
-       &asn_SPC_scs_SpecificCarrierList_specs_4        /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_frequencyShift7p5khz_value2enum_7[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_frequencyShift7p5khz_enum2value_7[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_frequencyShift7p5khz_specs_7 = {
-       asn_MAP_frequencyShift7p5khz_value2enum_7,      /* "tag" => N; sorted by tag */
-       asn_MAP_frequencyShift7p5khz_enum2value_7,      /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_frequencyShift7p5khz_tags_7[] = {
-       (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_frequencyShift7p5khz_7 = {
-       "frequencyShift7p5khz",
-       "frequencyShift7p5khz",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_frequencyShift7p5khz_tags_7,
-       sizeof(asn_DEF_frequencyShift7p5khz_tags_7)
-               /sizeof(asn_DEF_frequencyShift7p5khz_tags_7[0]) - 1, /* 1 */
-       asn_DEF_frequencyShift7p5khz_tags_7,    /* Same as above */
-       sizeof(asn_DEF_frequencyShift7p5khz_tags_7)
-               /sizeof(asn_DEF_frequencyShift7p5khz_tags_7[0]), /* 2 */
-       { &asn_OER_type_frequencyShift7p5khz_constr_7, &asn_PER_type_frequencyShift7p5khz_constr_7, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_frequencyShift7p5khz_specs_7   /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_FrequencyInfoUL_SIB_1[] = {
-       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL_SIB, frequencyBandList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_MultiFrequencyBandListNR_SIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "frequencyBandList"
-               },
-       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL_SIB, absoluteFrequencyPointA),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ARFCN_ValueNR,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "absoluteFrequencyPointA"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct FrequencyInfoUL_SIB, scs_SpecificCarrierList),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_scs_SpecificCarrierList_4,
-               0,
-               { &asn_OER_memb_scs_SpecificCarrierList_constr_4, &asn_PER_memb_scs_SpecificCarrierList_constr_4,  memb_scs_SpecificCarrierList_constraint_1 },
-               0, 0, /* No default value */
-               "scs-SpecificCarrierList"
-               },
-       { ATF_POINTER, 2, offsetof(struct FrequencyInfoUL_SIB, p_Max),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_P_Max,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "p-Max"
-               },
-       { ATF_POINTER, 1, offsetof(struct FrequencyInfoUL_SIB, frequencyShift7p5khz),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_frequencyShift7p5khz_7,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "frequencyShift7p5khz"
-               },
-};
-static const int asn_MAP_FrequencyInfoUL_SIB_oms_1[] = { 0, 1, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_FrequencyInfoUL_SIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_FrequencyInfoUL_SIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyBandList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* absoluteFrequencyPointA */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* scs-SpecificCarrierList */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* p-Max */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* frequencyShift7p5khz */
-};
-asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_SIB_specs_1 = {
-       sizeof(struct FrequencyInfoUL_SIB),
-       offsetof(struct FrequencyInfoUL_SIB, _asn_ctx),
-       asn_MAP_FrequencyInfoUL_SIB_tag2el_1,
-       5,      /* Count of tags in the map */
-       asn_MAP_FrequencyInfoUL_SIB_oms_1,      /* Optional members */
-       4, 0,   /* Root/Additions */
-       5,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL_SIB = {
-       "FrequencyInfoUL-SIB",
-       "FrequencyInfoUL-SIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_FrequencyInfoUL_SIB_tags_1,
-       sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1)
-               /sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1[0]), /* 1 */
-       asn_DEF_FrequencyInfoUL_SIB_tags_1,     /* Same as above */
-       sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1)
-               /sizeof(asn_DEF_FrequencyInfoUL_SIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_FrequencyInfoUL_SIB_1,
-       5,      /* Elements count */
-       &asn_SPC_FrequencyInfoUL_SIB_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.h b/src/codec_utils/SYSINFO/FrequencyInfoUL-SIB.h
deleted file mode 100644 (file)
index dc0deda..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _FrequencyInfoUL_SIB_H_
-#define        _FrequencyInfoUL_SIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "ARFCN-ValueNR.h"
-#include "P-Max.h"
-#include <NativeEnumerated.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum FrequencyInfoUL_SIB__frequencyShift7p5khz {
-       FrequencyInfoUL_SIB__frequencyShift7p5khz_true  = 0
-} e_FrequencyInfoUL_SIB__frequencyShift7p5khz;
-
-/* Forward declarations */
-struct MultiFrequencyBandListNR_SIB;
-struct SCS_SpecificCarrier;
-
-/* FrequencyInfoUL-SIB */
-typedef struct FrequencyInfoUL_SIB {
-       struct MultiFrequencyBandListNR_SIB     *frequencyBandList;     /* OPTIONAL */
-       ARFCN_ValueNR_t *absoluteFrequencyPointA;       /* OPTIONAL */
-       struct FrequencyInfoUL_SIB__scs_SpecificCarrierList {
-               A_SEQUENCE_OF(struct SCS_SpecificCarrier) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } scs_SpecificCarrierList;
-       P_Max_t *p_Max; /* OPTIONAL */
-       long    *frequencyShift7p5khz;  /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} FrequencyInfoUL_SIB_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_frequencyShift7p5khz_7;        // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_FrequencyInfoUL_SIB;
-extern asn_SEQUENCE_specifics_t asn_SPC_FrequencyInfoUL_SIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_FrequencyInfoUL_SIB_1[5];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _FrequencyInfoUL_SIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/MCC-MNC-Digit.c b/src/codec_utils/SYSINFO/MCC-MNC-Digit.c
deleted file mode 100644 (file)
index eb9c50f..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "MCC-MNC-Digit.h"
-
-int
-MCC_MNC_Digit_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 <= 9)) {
-               /* 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_MCC_MNC_Digit_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..9) */,
-       -1};
-asn_per_constraints_t asn_PER_type_MCC_MNC_Digit_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_MCC_MNC_Digit_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_MCC_MNC_Digit = {
-       "MCC-MNC-Digit",
-       "MCC-MNC-Digit",
-       &asn_OP_NativeInteger,
-       asn_DEF_MCC_MNC_Digit_tags_1,
-       sizeof(asn_DEF_MCC_MNC_Digit_tags_1)
-               /sizeof(asn_DEF_MCC_MNC_Digit_tags_1[0]), /* 1 */
-       asn_DEF_MCC_MNC_Digit_tags_1,   /* Same as above */
-       sizeof(asn_DEF_MCC_MNC_Digit_tags_1)
-               /sizeof(asn_DEF_MCC_MNC_Digit_tags_1[0]), /* 1 */
-       { &asn_OER_type_MCC_MNC_Digit_constr_1, &asn_PER_type_MCC_MNC_Digit_constr_1, MCC_MNC_Digit_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/MCC-MNC-Digit.h b/src/codec_utils/SYSINFO/MCC-MNC-Digit.h
deleted file mode 100644 (file)
index c0f4ac6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _MCC_MNC_Digit_H_
-#define        _MCC_MNC_Digit_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* MCC-MNC-Digit */
-typedef long    MCC_MNC_Digit_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_MCC_MNC_Digit_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_MCC_MNC_Digit;
-asn_struct_free_f MCC_MNC_Digit_free;
-asn_struct_print_f MCC_MNC_Digit_print;
-asn_constr_check_f MCC_MNC_Digit_constraint;
-ber_type_decoder_f MCC_MNC_Digit_decode_ber;
-der_type_encoder_f MCC_MNC_Digit_encode_der;
-xer_type_decoder_f MCC_MNC_Digit_decode_xer;
-xer_type_encoder_f MCC_MNC_Digit_encode_xer;
-oer_type_decoder_f MCC_MNC_Digit_decode_oer;
-oer_type_encoder_f MCC_MNC_Digit_encode_oer;
-per_type_decoder_f MCC_MNC_Digit_decode_uper;
-per_type_encoder_f MCC_MNC_Digit_encode_uper;
-per_type_decoder_f MCC_MNC_Digit_decode_aper;
-per_type_encoder_f MCC_MNC_Digit_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MCC_MNC_Digit_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/MCC.c b/src/codec_utils/SYSINFO/MCC.c
deleted file mode 100644 (file)
index bb7b45d..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "MCC.h"
-
-static asn_oer_constraints_t asn_OER_type_MCC_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       3       /* (SIZE(3..3)) */};
-asn_per_constraints_t asn_PER_type_MCC_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 */
-};
-asn_TYPE_member_t asn_MBR_MCC_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_MCC_MNC_Digit,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_MCC_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MCC_specs_1 = {
-       sizeof(struct MCC),
-       offsetof(struct MCC, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MCC = {
-       "MCC",
-       "MCC",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_MCC_tags_1,
-       sizeof(asn_DEF_MCC_tags_1)
-               /sizeof(asn_DEF_MCC_tags_1[0]), /* 1 */
-       asn_DEF_MCC_tags_1,     /* Same as above */
-       sizeof(asn_DEF_MCC_tags_1)
-               /sizeof(asn_DEF_MCC_tags_1[0]), /* 1 */
-       { &asn_OER_type_MCC_constr_1, &asn_PER_type_MCC_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_MCC_1,
-       1,      /* Single element */
-       &asn_SPC_MCC_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/MCC.h b/src/codec_utils/SYSINFO/MCC.h
deleted file mode 100644 (file)
index a9d7757..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _MCC_H_
-#define        _MCC_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "MCC-MNC-Digit.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* MCC */
-typedef struct MCC {
-       A_SEQUENCE_OF(MCC_MNC_Digit_t) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} MCC_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_MCC;
-extern asn_SET_OF_specifics_t asn_SPC_MCC_specs_1;
-extern asn_TYPE_member_t asn_MBR_MCC_1[1];
-extern asn_per_constraints_t asn_PER_type_MCC_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MCC_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/MIB.c b/src/codec_utils/SYSINFO/MIB.c
deleted file mode 100644 (file)
index 314ca61..0000000
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "MIB.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.
- */
-static int
-memb_systemFrameNumber_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 == 6)) {
-               /* 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_ssb_SubcarrierOffset_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 >= 0 && 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_spare_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 == 1)) {
-               /* 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_subCarrierSpacingCommon_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_subCarrierSpacingCommon_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_dmrs_TypeA_Position_constr_7 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dmrs_TypeA_Position_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_cellBarred_constr_11 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_cellBarred_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_intraFreqReselection_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_intraFreqReselection_constr_14 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_systemFrameNumber_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       6       /* (SIZE(6..6)) */};
-static asn_per_constraints_t asn_PER_memb_systemFrameNumber_constr_2 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  6,  6 }        /* (SIZE(6..6)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ssb_SubcarrierOffset_constr_6 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_ssb_SubcarrierOffset_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_spare_constr_17 CC_NOTUSED = {
-       { 0, 0 },
-       1       /* (SIZE(1..1)) */};
-static asn_per_constraints_t asn_PER_memb_spare_constr_17 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 asn_INTEGER_enum_map_t asn_MAP_subCarrierSpacingCommon_value2enum_3[] = {
-       { 0,    9,      "scs15or60" },
-       { 1,    10,     "scs30or120" }
-};
-static const unsigned int asn_MAP_subCarrierSpacingCommon_enum2value_3[] = {
-       0,      /* scs15or60(0) */
-       1       /* scs30or120(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_subCarrierSpacingCommon_specs_3 = {
-       asn_MAP_subCarrierSpacingCommon_value2enum_3,   /* "tag" => N; sorted by tag */
-       asn_MAP_subCarrierSpacingCommon_enum2value_3,   /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_subCarrierSpacingCommon_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_subCarrierSpacingCommon_3 = {
-       "subCarrierSpacingCommon",
-       "subCarrierSpacingCommon",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_subCarrierSpacingCommon_tags_3,
-       sizeof(asn_DEF_subCarrierSpacingCommon_tags_3)
-               /sizeof(asn_DEF_subCarrierSpacingCommon_tags_3[0]) - 1, /* 1 */
-       asn_DEF_subCarrierSpacingCommon_tags_3, /* Same as above */
-       sizeof(asn_DEF_subCarrierSpacingCommon_tags_3)
-               /sizeof(asn_DEF_subCarrierSpacingCommon_tags_3[0]), /* 2 */
-       { &asn_OER_type_subCarrierSpacingCommon_constr_3, &asn_PER_type_subCarrierSpacingCommon_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_subCarrierSpacingCommon_specs_3        /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_dmrs_TypeA_Position_value2enum_7[] = {
-       { 0,    4,      "pos2" },
-       { 1,    4,      "pos3" }
-};
-static const unsigned int asn_MAP_dmrs_TypeA_Position_enum2value_7[] = {
-       0,      /* pos2(0) */
-       1       /* pos3(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dmrs_TypeA_Position_specs_7 = {
-       asn_MAP_dmrs_TypeA_Position_value2enum_7,       /* "tag" => N; sorted by tag */
-       asn_MAP_dmrs_TypeA_Position_enum2value_7,       /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dmrs_TypeA_Position_tags_7[] = {
-       (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_dmrs_TypeA_Position_7 = {
-       "dmrs-TypeA-Position",
-       "dmrs-TypeA-Position",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dmrs_TypeA_Position_tags_7,
-       sizeof(asn_DEF_dmrs_TypeA_Position_tags_7)
-               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_7[0]) - 1, /* 1 */
-       asn_DEF_dmrs_TypeA_Position_tags_7,     /* Same as above */
-       sizeof(asn_DEF_dmrs_TypeA_Position_tags_7)
-               /sizeof(asn_DEF_dmrs_TypeA_Position_tags_7[0]), /* 2 */
-       { &asn_OER_type_dmrs_TypeA_Position_constr_7, &asn_PER_type_dmrs_TypeA_Position_constr_7, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dmrs_TypeA_Position_specs_7    /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_cellBarred_value2enum_11[] = {
-       { 0,    6,      "barred" },
-       { 1,    9,      "notBarred" }
-};
-static const unsigned int asn_MAP_cellBarred_enum2value_11[] = {
-       0,      /* barred(0) */
-       1       /* notBarred(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_cellBarred_specs_11 = {
-       asn_MAP_cellBarred_value2enum_11,       /* "tag" => N; sorted by tag */
-       asn_MAP_cellBarred_enum2value_11,       /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_cellBarred_tags_11[] = {
-       (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_cellBarred_11 = {
-       "cellBarred",
-       "cellBarred",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_cellBarred_tags_11,
-       sizeof(asn_DEF_cellBarred_tags_11)
-               /sizeof(asn_DEF_cellBarred_tags_11[0]) - 1, /* 1 */
-       asn_DEF_cellBarred_tags_11,     /* Same as above */
-       sizeof(asn_DEF_cellBarred_tags_11)
-               /sizeof(asn_DEF_cellBarred_tags_11[0]), /* 2 */
-       { &asn_OER_type_cellBarred_constr_11, &asn_PER_type_cellBarred_constr_11, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_cellBarred_specs_11    /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_intraFreqReselection_value2enum_14[] = {
-       { 0,    7,      "allowed" },
-       { 1,    10,     "notAllowed" }
-};
-static const unsigned int asn_MAP_intraFreqReselection_enum2value_14[] = {
-       0,      /* allowed(0) */
-       1       /* notAllowed(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_intraFreqReselection_specs_14 = {
-       asn_MAP_intraFreqReselection_value2enum_14,     /* "tag" => N; sorted by tag */
-       asn_MAP_intraFreqReselection_enum2value_14,     /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_intraFreqReselection_tags_14[] = {
-       (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_intraFreqReselection_14 = {
-       "intraFreqReselection",
-       "intraFreqReselection",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_intraFreqReselection_tags_14,
-       sizeof(asn_DEF_intraFreqReselection_tags_14)
-               /sizeof(asn_DEF_intraFreqReselection_tags_14[0]) - 1, /* 1 */
-       asn_DEF_intraFreqReselection_tags_14,   /* Same as above */
-       sizeof(asn_DEF_intraFreqReselection_tags_14)
-               /sizeof(asn_DEF_intraFreqReselection_tags_14[0]), /* 2 */
-       { &asn_OER_type_intraFreqReselection_constr_14, &asn_PER_type_intraFreqReselection_constr_14, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_intraFreqReselection_specs_14  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_MIB_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, systemFrameNumber),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_systemFrameNumber_constr_2, &asn_PER_memb_systemFrameNumber_constr_2,  memb_systemFrameNumber_constraint_1 },
-               0, 0, /* No default value */
-               "systemFrameNumber"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, subCarrierSpacingCommon),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_subCarrierSpacingCommon_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "subCarrierSpacingCommon"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, ssb_SubcarrierOffset),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_ssb_SubcarrierOffset_constr_6, &asn_PER_memb_ssb_SubcarrierOffset_constr_6,  memb_ssb_SubcarrierOffset_constraint_1 },
-               0, 0, /* No default value */
-               "ssb-SubcarrierOffset"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, dmrs_TypeA_Position),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dmrs_TypeA_Position_7,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dmrs-TypeA-Position"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, pdcch_ConfigSIB1),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PDCCH_ConfigSIB1,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pdcch-ConfigSIB1"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, cellBarred),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_cellBarred_11,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellBarred"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, intraFreqReselection),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_intraFreqReselection_14,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "intraFreqReselection"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct MIB, spare),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_spare_constr_17, &asn_PER_memb_spare_constr_17,  memb_spare_constraint_1 },
-               0, 0, /* No default value */
-               "spare"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_MIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* systemFrameNumber */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subCarrierSpacingCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-SubcarrierOffset */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dmrs-TypeA-Position */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* pdcch-ConfigSIB1 */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* cellBarred */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* intraFreqReselection */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* spare */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_MIB_specs_1 = {
-       sizeof(struct MIB),
-       offsetof(struct MIB, _asn_ctx),
-       asn_MAP_MIB_tag2el_1,
-       8,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_MIB = {
-       "MIB",
-       "MIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_MIB_tags_1,
-       sizeof(asn_DEF_MIB_tags_1)
-               /sizeof(asn_DEF_MIB_tags_1[0]), /* 1 */
-       asn_DEF_MIB_tags_1,     /* Same as above */
-       sizeof(asn_DEF_MIB_tags_1)
-               /sizeof(asn_DEF_MIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_MIB_1,
-       8,      /* Elements count */
-       &asn_SPC_MIB_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/MIB.h b/src/codec_utils/SYSINFO/MIB.h
deleted file mode 100644 (file)
index 146085d..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _MIB_H_
-#define        _MIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <BIT_STRING.h>
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include "PDCCH-ConfigSIB1.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum MIB__subCarrierSpacingCommon {
-       MIB__subCarrierSpacingCommon_scs15or60  = 0,
-       MIB__subCarrierSpacingCommon_scs30or120 = 1
-} e_MIB__subCarrierSpacingCommon;
-typedef enum MIB__dmrs_TypeA_Position {
-       MIB__dmrs_TypeA_Position_pos2   = 0,
-       MIB__dmrs_TypeA_Position_pos3   = 1
-} e_MIB__dmrs_TypeA_Position;
-typedef enum MIB__cellBarred {
-       MIB__cellBarred_barred  = 0,
-       MIB__cellBarred_notBarred       = 1
-} e_MIB__cellBarred;
-typedef enum MIB__intraFreqReselection {
-       MIB__intraFreqReselection_allowed       = 0,
-       MIB__intraFreqReselection_notAllowed    = 1
-} e_MIB__intraFreqReselection;
-
-/* MIB */
-typedef struct MIB {
-       BIT_STRING_t     systemFrameNumber;
-       long     subCarrierSpacingCommon;
-       long     ssb_SubcarrierOffset;
-       long     dmrs_TypeA_Position;
-       PDCCH_ConfigSIB1_t       pdcch_ConfigSIB1;
-       long     cellBarred;
-       long     intraFreqReselection;
-       BIT_STRING_t     spare;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} MIB_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_subCarrierSpacingCommon_3;     // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_dmrs_TypeA_Position_7; // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_cellBarred_11; // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_intraFreqReselection_14;       // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_MIB;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/MNC.c b/src/codec_utils/SYSINFO/MNC.c
deleted file mode 100644 (file)
index d6ac31a..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "MNC.h"
-
-static asn_oer_constraints_t asn_OER_type_MNC_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(2..3)) */};
-asn_per_constraints_t asn_PER_type_MNC_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       1,  1,  2,  3 }        /* (SIZE(2..3)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MNC_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_MCC_MNC_Digit,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_MNC_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MNC_specs_1 = {
-       sizeof(struct MNC),
-       offsetof(struct MNC, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MNC = {
-       "MNC",
-       "MNC",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_MNC_tags_1,
-       sizeof(asn_DEF_MNC_tags_1)
-               /sizeof(asn_DEF_MNC_tags_1[0]), /* 1 */
-       asn_DEF_MNC_tags_1,     /* Same as above */
-       sizeof(asn_DEF_MNC_tags_1)
-               /sizeof(asn_DEF_MNC_tags_1[0]), /* 1 */
-       { &asn_OER_type_MNC_constr_1, &asn_PER_type_MNC_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_MNC_1,
-       1,      /* Single element */
-       &asn_SPC_MNC_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/MNC.h b/src/codec_utils/SYSINFO/MNC.h
deleted file mode 100644 (file)
index ddce10f..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _MNC_H_
-#define        _MNC_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "MCC-MNC-Digit.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* MNC */
-typedef struct MNC {
-       A_SEQUENCE_OF(MCC_MNC_Digit_t) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} MNC_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_MNC;
-extern asn_SET_OF_specifics_t asn_SPC_MNC_specs_1;
-extern asn_TYPE_member_t asn_MBR_MNC_1[1];
-extern asn_per_constraints_t asn_PER_type_MNC_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MNC_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/Makefile.am.libasncodec b/src/codec_utils/SYSINFO/Makefile.am.libasncodec
deleted file mode 100644 (file)
index 014887e..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-ASN_MODULE_SRCS=       \
-       ./new_out/MIB.c \
-       ./new_out/PDCCH-ConfigSIB1.c    \
-       ./new_out/ControlResourceSetZero.c      \
-       ./new_out/SearchSpaceZero.c     \
-       ./new_out/SIB1.c        \
-       ./new_out/UAC-AccessCategory1-SelectionAssistanceInfo.c \
-       ./new_out/Q-QualMin.c   \
-       ./new_out/Q-RxLevMin.c  \
-       ./new_out/CellAccessRelatedInfo.c       \
-       ./new_out/PLMN-IdentityInfoList.c       \
-       ./new_out/PLMN-IdentityInfo.c   \
-       ./new_out/PLMN-IdentitY.c       \
-       ./new_out/MCC.c \
-       ./new_out/MNC.c \
-       ./new_out/MCC-MNC-Digit.c       \
-       ./new_out/TrackingAreaCode.c    \
-       ./new_out/RAN-AreaCode.c        \
-       ./new_out/CellIdentity.c        \
-       ./new_out/ConnEstFailureControl.c       \
-       ./new_out/SI-SchedulingInfo.c   \
-       ./new_out/SchedulingInfo.c      \
-       ./new_out/SIB-Mapping.c \
-       ./new_out/SIB-TypeInfo.c        \
-       ./new_out/SI-RequestConfig.c    \
-       ./new_out/SI-RequestResources.c \
-       ./new_out/RACH-ConfigGeneric.c  \
-       ./new_out/ServingCellConfigCommonSIB.c  \
-       ./new_out/DownlinkConfigCommonSIB.c     \
-       ./new_out/BCCH-Config.c \
-       ./new_out/PCCH-Config.c \
-       ./new_out/PagingCycle.c \
-       ./new_out/FrequencyInfoDL-SIB.c \
-       ./new_out/MultiFrequencyBandListNR-SIB.c        \
-       ./new_out/NR-MultiBandInfo.c    \
-       ./new_out/FreqBandIndicatorNR.c \
-       ./new_out/NR-NS-PmaxList.c      \
-       ./new_out/NR-NS-PmaxValue.c     \
-       ./new_out/P-Max.c       \
-       ./new_out/AdditionalSpectrumEmission.c  \
-       ./new_out/SCS-SpecificCarrier.c \
-       ./new_out/SubcarrierSpacing.c   \
-       ./new_out/BWP-DownlinkCommon.c  \
-       ./new_out/PDCCH-ConfigCommon.c  \
-       ./new_out/ControlResourceSet.c  \
-       ./new_out/ControlResourceSetId.c        \
-       ./new_out/SearchSpace.c \
-       ./new_out/SearchSpaceId.c       \
-       ./new_out/PDSCH-ConfigCommon.c  \
-       ./new_out/PDSCH-TimeDomainResourceAllocationList.c      \
-       ./new_out/PDSCH-TimeDomainResourceAllocation.c  \
-       ./new_out/UplinkConfigCommonSIB.c       \
-       ./new_out/FrequencyInfoUL-SIB.c \
-       ./new_out/ARFCN-ValueNR.c       \
-       ./new_out/BWP-UplinkCommon.c    \
-       ./new_out/BWP.c \
-       ./new_out/PUSCH-ConfigCommon.c  \
-       ./new_out/PUSCH-TimeDomainResourceAllocationList.c      \
-       ./new_out/PUSCH-TimeDomainResourceAllocation.c  \
-       ./new_out/PUCCH-ConfigCommon.c  \
-       ./new_out/TimeAlignmentTimer.c  \
-       ./new_out/TDD-UL-DL-ConfigCommon.c      \
-       ./new_out/TDD-UL-DL-Pattern.c   \
-       ./new_out/RACH-ConfigCommon.c   \
-       ./new_out/RSRP-Range.c  \
-       ./new_out/UE-TimersAndConstants.c       \
-       ./new_out/UAC-BarringPerCatList.c       \
-       ./new_out/UAC-BarringPerCat.c   \
-       ./new_out/UAC-BarringInfoSetIndex.c     \
-       ./new_out/UAC-BarringPerPLMN-List.c     \
-       ./new_out/UAC-BarringPerPLMN.c  \
-       ./new_out/UAC-BarringInfoSetList.c      \
-       ./new_out/UAC-BarringInfoSet.c  \
-       ./new_out/TCI-StateId.c
-
-ASN_MODULE_HDRS=       \
-       ./new_out/MIB.h \
-       ./new_out/PDCCH-ConfigSIB1.h    \
-       ./new_out/ControlResourceSetZero.h      \
-       ./new_out/SearchSpaceZero.h     \
-       ./new_out/SIB1.h        \
-       ./new_out/UAC-AccessCategory1-SelectionAssistanceInfo.h \
-       ./new_out/Q-QualMin.h   \
-       ./new_out/Q-RxLevMin.h  \
-       ./new_out/CellAccessRelatedInfo.h       \
-       ./new_out/PLMN-IdentityInfoList.h       \
-       ./new_out/PLMN-IdentityInfo.h   \
-       ./new_out/PLMN-IdentitY.h       \
-       ./new_out/MCC.h \
-       ./new_out/MNC.h \
-       ./new_out/MCC-MNC-Digit.h       \
-       ./new_out/TrackingAreaCode.h    \
-       ./new_out/RAN-AreaCode.h        \
-       ./new_out/CellIdentity.h        \
-       ./new_out/ConnEstFailureControl.h       \
-       ./new_out/SI-SchedulingInfo.h   \
-       ./new_out/SchedulingInfo.h      \
-       ./new_out/SIB-Mapping.h \
-       ./new_out/SIB-TypeInfo.h        \
-       ./new_out/SI-RequestConfig.h    \
-       ./new_out/SI-RequestResources.h \
-       ./new_out/RACH-ConfigGeneric.h  \
-       ./new_out/ServingCellConfigCommonSIB.h  \
-       ./new_out/DownlinkConfigCommonSIB.h     \
-       ./new_out/BCCH-Config.h \
-       ./new_out/PCCH-Config.h \
-       ./new_out/PagingCycle.h \
-       ./new_out/FrequencyInfoDL-SIB.h \
-       ./new_out/MultiFrequencyBandListNR-SIB.h        \
-       ./new_out/NR-MultiBandInfo.h    \
-       ./new_out/FreqBandIndicatorNR.h \
-       ./new_out/NR-NS-PmaxList.h      \
-       ./new_out/NR-NS-PmaxValue.h     \
-       ./new_out/P-Max.h       \
-       ./new_out/AdditionalSpectrumEmission.h  \
-       ./new_out/SCS-SpecificCarrier.h \
-       ./new_out/SubcarrierSpacing.h   \
-       ./new_out/BWP-DownlinkCommon.h  \
-       ./new_out/PDCCH-ConfigCommon.h  \
-       ./new_out/ControlResourceSet.h  \
-       ./new_out/ControlResourceSetId.h        \
-       ./new_out/SearchSpace.h \
-       ./new_out/SearchSpaceId.h       \
-       ./new_out/PDSCH-ConfigCommon.h  \
-       ./new_out/PDSCH-TimeDomainResourceAllocationList.h      \
-       ./new_out/PDSCH-TimeDomainResourceAllocation.h  \
-       ./new_out/UplinkConfigCommonSIB.h       \
-       ./new_out/FrequencyInfoUL-SIB.h \
-       ./new_out/ARFCN-ValueNR.h       \
-       ./new_out/BWP-UplinkCommon.h    \
-       ./new_out/BWP.h \
-       ./new_out/PUSCH-ConfigCommon.h  \
-       ./new_out/PUSCH-TimeDomainResourceAllocationList.h      \
-       ./new_out/PUSCH-TimeDomainResourceAllocation.h  \
-       ./new_out/PUCCH-ConfigCommon.h  \
-       ./new_out/TimeAlignmentTimer.h  \
-       ./new_out/TDD-UL-DL-ConfigCommon.h      \
-       ./new_out/TDD-UL-DL-Pattern.h   \
-       ./new_out/RACH-ConfigCommon.h   \
-       ./new_out/RSRP-Range.h  \
-       ./new_out/UE-TimersAndConstants.h       \
-       ./new_out/UAC-BarringPerCatList.h       \
-       ./new_out/UAC-BarringPerCat.h   \
-       ./new_out/UAC-BarringInfoSetIndex.h     \
-       ./new_out/UAC-BarringPerPLMN-List.h     \
-       ./new_out/UAC-BarringPerPLMN.h  \
-       ./new_out/UAC-BarringInfoSetList.h      \
-       ./new_out/UAC-BarringInfoSet.h  \
-       ./new_out/TCI-StateId.h
-
-ASN_MODULE_HDRS+=./new_out/OPEN_TYPE.h
-ASN_MODULE_SRCS+=./new_out/OPEN_TYPE.c
-ASN_MODULE_HDRS+=./new_out/constr_CHOICE.h
-ASN_MODULE_HDRS+=./new_out/BOOLEAN.h
-ASN_MODULE_SRCS+=./new_out/BOOLEAN.c
-ASN_MODULE_HDRS+=./new_out/INTEGER.h
-ASN_MODULE_SRCS+=./new_out/INTEGER.c
-ASN_MODULE_HDRS+=./new_out/NULL.h
-ASN_MODULE_SRCS+=./new_out/NULL.c
-ASN_MODULE_HDRS+=./new_out/NativeEnumerated.h
-ASN_MODULE_SRCS+=./new_out/NativeEnumerated.c
-ASN_MODULE_HDRS+=./new_out/NativeInteger.h
-ASN_MODULE_SRCS+=./new_out/NativeInteger.c
-ASN_MODULE_HDRS+=./new_out/asn_SEQUENCE_OF.h
-ASN_MODULE_SRCS+=./new_out/asn_SEQUENCE_OF.c
-ASN_MODULE_HDRS+=./new_out/asn_SET_OF.h
-ASN_MODULE_SRCS+=./new_out/asn_SET_OF.c
-ASN_MODULE_SRCS+=./new_out/constr_CHOICE.c
-ASN_MODULE_HDRS+=./new_out/constr_SEQUENCE.h
-ASN_MODULE_SRCS+=./new_out/constr_SEQUENCE.c
-ASN_MODULE_HDRS+=./new_out/constr_SEQUENCE_OF.h
-ASN_MODULE_SRCS+=./new_out/constr_SEQUENCE_OF.c
-ASN_MODULE_HDRS+=./new_out/constr_SET_OF.h
-ASN_MODULE_SRCS+=./new_out/constr_SET_OF.c
-ASN_MODULE_HDRS+=./new_out/asn_application.h
-ASN_MODULE_SRCS+=./new_out/asn_application.c
-ASN_MODULE_HDRS+=./new_out/asn_ioc.h
-ASN_MODULE_HDRS+=./new_out/asn_system.h
-ASN_MODULE_HDRS+=./new_out/asn_codecs.h
-ASN_MODULE_HDRS+=./new_out/asn_internal.h
-ASN_MODULE_SRCS+=./new_out/asn_internal.c
-ASN_MODULE_HDRS+=./new_out/asn_random_fill.h
-ASN_MODULE_SRCS+=./new_out/asn_random_fill.c
-ASN_MODULE_HDRS+=./new_out/asn_bit_data.h
-ASN_MODULE_SRCS+=./new_out/asn_bit_data.c
-ASN_MODULE_HDRS+=./new_out/OCTET_STRING.h
-ASN_MODULE_SRCS+=./new_out/OCTET_STRING.c
-ASN_MODULE_HDRS+=./new_out/BIT_STRING.h
-ASN_MODULE_SRCS+=./new_out/BIT_STRING.c
-ASN_MODULE_SRCS+=./new_out/asn_codecs_prim.c
-ASN_MODULE_HDRS+=./new_out/asn_codecs_prim.h
-ASN_MODULE_HDRS+=./new_out/ber_tlv_length.h
-ASN_MODULE_SRCS+=./new_out/ber_tlv_length.c
-ASN_MODULE_HDRS+=./new_out/ber_tlv_tag.h
-ASN_MODULE_SRCS+=./new_out/ber_tlv_tag.c
-ASN_MODULE_HDRS+=./new_out/ber_decoder.h
-ASN_MODULE_SRCS+=./new_out/ber_decoder.c
-ASN_MODULE_HDRS+=./new_out/der_encoder.h
-ASN_MODULE_SRCS+=./new_out/der_encoder.c
-ASN_MODULE_HDRS+=./new_out/constr_TYPE.h
-ASN_MODULE_SRCS+=./new_out/constr_TYPE.c
-ASN_MODULE_HDRS+=./new_out/constraints.h
-ASN_MODULE_SRCS+=./new_out/constraints.c
-ASN_MODULE_HDRS+=./new_out/xer_support.h
-ASN_MODULE_SRCS+=./new_out/xer_support.c
-ASN_MODULE_HDRS+=./new_out/xer_decoder.h
-ASN_MODULE_SRCS+=./new_out/xer_decoder.c
-ASN_MODULE_HDRS+=./new_out/xer_encoder.h
-ASN_MODULE_SRCS+=./new_out/xer_encoder.c
-ASN_MODULE_HDRS+=./new_out/per_support.h
-ASN_MODULE_SRCS+=./new_out/per_support.c
-ASN_MODULE_HDRS+=./new_out/per_decoder.h
-ASN_MODULE_SRCS+=./new_out/per_decoder.c
-ASN_MODULE_HDRS+=./new_out/per_encoder.h
-ASN_MODULE_SRCS+=./new_out/per_encoder.c
-ASN_MODULE_HDRS+=./new_out/per_opentype.h
-ASN_MODULE_SRCS+=./new_out/per_opentype.c
-ASN_MODULE_HDRS+=./new_out/oer_decoder.h
-ASN_MODULE_HDRS+=./new_out/oer_encoder.h
-ASN_MODULE_HDRS+=./new_out/oer_support.h
-ASN_MODULE_SRCS+=./new_out/oer_decoder.c
-ASN_MODULE_SRCS+=./new_out/oer_encoder.c
-ASN_MODULE_SRCS+=./new_out/oer_support.c
-ASN_MODULE_SRCS+=./new_out/OPEN_TYPE_oer.c
-ASN_MODULE_SRCS+=./new_out/INTEGER_oer.c
-ASN_MODULE_SRCS+=./new_out/BIT_STRING_oer.c
-ASN_MODULE_SRCS+=./new_out/OCTET_STRING_oer.c
-ASN_MODULE_SRCS+=./new_out/NativeInteger_oer.c
-ASN_MODULE_SRCS+=./new_out/NativeEnumerated_oer.c
-ASN_MODULE_SRCS+=./new_out/constr_CHOICE_oer.c
-ASN_MODULE_SRCS+=./new_out/constr_SEQUENCE_oer.c
-ASN_MODULE_SRCS+=./new_out/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)/./new_out/
-libasncodec_la_CFLAGS=$(ASN_MODULE_CFLAGS)
-libasncodec_la_LDFLAGS=-lm
diff --git a/src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.c b/src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.c
deleted file mode 100644 (file)
index 8ef7c67..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "MultiFrequencyBandListNR-SIB.h"
-
-#include "NR-MultiBandInfo.h"
-static asn_oer_constraints_t asn_OER_type_MultiFrequencyBandListNR_SIB_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..8)) */};
-asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_SIB_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_NR_MultiBandInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_SIB_specs_1 = {
-       sizeof(struct MultiFrequencyBandListNR_SIB),
-       offsetof(struct MultiFrequencyBandListNR_SIB, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR_SIB = {
-       "MultiFrequencyBandListNR-SIB",
-       "MultiFrequencyBandListNR-SIB",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_MultiFrequencyBandListNR_SIB_tags_1,
-       sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1)
-               /sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[0]), /* 1 */
-       asn_DEF_MultiFrequencyBandListNR_SIB_tags_1,    /* Same as above */
-       sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1)
-               /sizeof(asn_DEF_MultiFrequencyBandListNR_SIB_tags_1[0]), /* 1 */
-       { &asn_OER_type_MultiFrequencyBandListNR_SIB_constr_1, &asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_MultiFrequencyBandListNR_SIB_1,
-       1,      /* Single element */
-       &asn_SPC_MultiFrequencyBandListNR_SIB_specs_1   /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.h b/src/codec_utils/SYSINFO/MultiFrequencyBandListNR-SIB.h
deleted file mode 100644 (file)
index 8241d52..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _MultiFrequencyBandListNR_SIB_H_
-#define        _MultiFrequencyBandListNR_SIB_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 NR_MultiBandInfo;
-
-/* MultiFrequencyBandListNR-SIB */
-typedef struct MultiFrequencyBandListNR_SIB {
-       A_SEQUENCE_OF(struct NR_MultiBandInfo) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} MultiFrequencyBandListNR_SIB_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_MultiFrequencyBandListNR_SIB;
-extern asn_SET_OF_specifics_t asn_SPC_MultiFrequencyBandListNR_SIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_MultiFrequencyBandListNR_SIB_1[1];
-extern asn_per_constraints_t asn_PER_type_MultiFrequencyBandListNR_SIB_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _MultiFrequencyBandListNR_SIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/NR-MultiBandInfo.c b/src/codec_utils/SYSINFO/NR-MultiBandInfo.c
deleted file mode 100644 (file)
index 6c3f612..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "NR-MultiBandInfo.h"
-
-#include "NR-NS-PmaxList.h"
-asn_TYPE_member_t asn_MBR_NR_MultiBandInfo_1[] = {
-       { ATF_POINTER, 2, offsetof(struct NR_MultiBandInfo, freqBandIndicatorNR),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_FreqBandIndicatorNR,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "freqBandIndicatorNR"
-               },
-       { ATF_POINTER, 1, offsetof(struct NR_MultiBandInfo, nr_NS_PmaxList),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NR_NS_PmaxList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nr-NS-PmaxList"
-               },
-};
-static const int asn_MAP_NR_MultiBandInfo_oms_1[] = { 0, 1 };
-static const ber_tlv_tag_t asn_DEF_NR_MultiBandInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_NR_MultiBandInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* freqBandIndicatorNR */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* nr-NS-PmaxList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_NR_MultiBandInfo_specs_1 = {
-       sizeof(struct NR_MultiBandInfo),
-       offsetof(struct NR_MultiBandInfo, _asn_ctx),
-       asn_MAP_NR_MultiBandInfo_tag2el_1,
-       2,      /* Count of tags in the map */
-       asn_MAP_NR_MultiBandInfo_oms_1, /* Optional members */
-       2, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_NR_MultiBandInfo = {
-       "NR-MultiBandInfo",
-       "NR-MultiBandInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_NR_MultiBandInfo_tags_1,
-       sizeof(asn_DEF_NR_MultiBandInfo_tags_1)
-               /sizeof(asn_DEF_NR_MultiBandInfo_tags_1[0]), /* 1 */
-       asn_DEF_NR_MultiBandInfo_tags_1,        /* Same as above */
-       sizeof(asn_DEF_NR_MultiBandInfo_tags_1)
-               /sizeof(asn_DEF_NR_MultiBandInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_NR_MultiBandInfo_1,
-       2,      /* Elements count */
-       &asn_SPC_NR_MultiBandInfo_specs_1       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/NR-MultiBandInfo.h b/src/codec_utils/SYSINFO/NR-MultiBandInfo.h
deleted file mode 100644 (file)
index a838c64..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _NR_MultiBandInfo_H_
-#define        _NR_MultiBandInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "FreqBandIndicatorNR.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Forward declarations */
-struct NR_NS_PmaxList;
-
-/* NR-MultiBandInfo */
-typedef struct NR_MultiBandInfo {
-       FreqBandIndicatorNR_t   *freqBandIndicatorNR;   /* OPTIONAL */
-       struct NR_NS_PmaxList   *nr_NS_PmaxList;        /* OPTIONAL */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} NR_MultiBandInfo_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_NR_MultiBandInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_NR_MultiBandInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_NR_MultiBandInfo_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NR_MultiBandInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/NR-NS-PmaxList.c b/src/codec_utils/SYSINFO/NR-NS-PmaxList.c
deleted file mode 100644 (file)
index 8317ed5..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "NR-NS-PmaxList.h"
-
-#include "NR-NS-PmaxValue.h"
-static asn_oer_constraints_t asn_OER_type_NR_NS_PmaxList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..8)) */};
-asn_per_constraints_t asn_PER_type_NR_NS_PmaxList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_NR_NS_PmaxList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_NR_NS_PmaxValue,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_NR_NS_PmaxList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_NR_NS_PmaxList_specs_1 = {
-       sizeof(struct NR_NS_PmaxList),
-       offsetof(struct NR_NS_PmaxList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxList = {
-       "NR-NS-PmaxList",
-       "NR-NS-PmaxList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_NR_NS_PmaxList_tags_1,
-       sizeof(asn_DEF_NR_NS_PmaxList_tags_1)
-               /sizeof(asn_DEF_NR_NS_PmaxList_tags_1[0]), /* 1 */
-       asn_DEF_NR_NS_PmaxList_tags_1,  /* Same as above */
-       sizeof(asn_DEF_NR_NS_PmaxList_tags_1)
-               /sizeof(asn_DEF_NR_NS_PmaxList_tags_1[0]), /* 1 */
-       { &asn_OER_type_NR_NS_PmaxList_constr_1, &asn_PER_type_NR_NS_PmaxList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_NR_NS_PmaxList_1,
-       1,      /* Single element */
-       &asn_SPC_NR_NS_PmaxList_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/NR-NS-PmaxList.h b/src/codec_utils/SYSINFO/NR-NS-PmaxList.h
deleted file mode 100644 (file)
index e87586b..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _NR_NS_PmaxList_H_
-#define        _NR_NS_PmaxList_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 NR_NS_PmaxValue;
-
-/* NR-NS-PmaxList */
-typedef struct NR_NS_PmaxList {
-       A_SEQUENCE_OF(struct NR_NS_PmaxValue) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} NR_NS_PmaxList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxList;
-extern asn_SET_OF_specifics_t asn_SPC_NR_NS_PmaxList_specs_1;
-extern asn_TYPE_member_t asn_MBR_NR_NS_PmaxList_1[1];
-extern asn_per_constraints_t asn_PER_type_NR_NS_PmaxList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NR_NS_PmaxList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/NR-NS-PmaxValue.c b/src/codec_utils/SYSINFO/NR-NS-PmaxValue.c
deleted file mode 100644 (file)
index 6109654..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "NR-NS-PmaxValue.h"
-
-asn_TYPE_member_t asn_MBR_NR_NS_PmaxValue_1[] = {
-       { ATF_POINTER, 1, offsetof(struct NR_NS_PmaxValue, additionalPmax),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_P_Max,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "additionalPmax"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct NR_NS_PmaxValue, additionalSpectrumEmission),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_AdditionalSpectrumEmission,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "additionalSpectrumEmission"
-               },
-};
-static const int asn_MAP_NR_NS_PmaxValue_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_NR_NS_PmaxValue_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_NR_NS_PmaxValue_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* additionalPmax */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* additionalSpectrumEmission */
-};
-asn_SEQUENCE_specifics_t asn_SPC_NR_NS_PmaxValue_specs_1 = {
-       sizeof(struct NR_NS_PmaxValue),
-       offsetof(struct NR_NS_PmaxValue, _asn_ctx),
-       asn_MAP_NR_NS_PmaxValue_tag2el_1,
-       2,      /* Count of tags in the map */
-       asn_MAP_NR_NS_PmaxValue_oms_1,  /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxValue = {
-       "NR-NS-PmaxValue",
-       "NR-NS-PmaxValue",
-       &asn_OP_SEQUENCE,
-       asn_DEF_NR_NS_PmaxValue_tags_1,
-       sizeof(asn_DEF_NR_NS_PmaxValue_tags_1)
-               /sizeof(asn_DEF_NR_NS_PmaxValue_tags_1[0]), /* 1 */
-       asn_DEF_NR_NS_PmaxValue_tags_1, /* Same as above */
-       sizeof(asn_DEF_NR_NS_PmaxValue_tags_1)
-               /sizeof(asn_DEF_NR_NS_PmaxValue_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_NR_NS_PmaxValue_1,
-       2,      /* Elements count */
-       &asn_SPC_NR_NS_PmaxValue_specs_1        /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/NR-NS-PmaxValue.h b/src/codec_utils/SYSINFO/NR-NS-PmaxValue.h
deleted file mode 100644 (file)
index cc69b0e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _NR_NS_PmaxValue_H_
-#define        _NR_NS_PmaxValue_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "P-Max.h"
-#include "AdditionalSpectrumEmission.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* NR-NS-PmaxValue */
-typedef struct NR_NS_PmaxValue {
-       P_Max_t *additionalPmax;        /* OPTIONAL */
-       AdditionalSpectrumEmission_t     additionalSpectrumEmission;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} NR_NS_PmaxValue_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_NR_NS_PmaxValue;
-extern asn_SEQUENCE_specifics_t asn_SPC_NR_NS_PmaxValue_specs_1;
-extern asn_TYPE_member_t asn_MBR_NR_NS_PmaxValue_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _NR_NS_PmaxValue_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/P-Max.c b/src/codec_utils/SYSINFO/P-Max.c
deleted file mode 100644 (file)
index 597d977..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "P-Max.h"
-
-int
-P_Max_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 >= -30 && value <= 33)) {
-               /* 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_P_Max_constr_1 CC_NOTUSED = {
-       { 1, 0 }        /* (-30..33) */,
-       -1};
-asn_per_constraints_t asn_PER_type_P_Max_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6, -30,  33 }      /* (-30..33) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_P_Max_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_P_Max = {
-       "P-Max",
-       "P-Max",
-       &asn_OP_NativeInteger,
-       asn_DEF_P_Max_tags_1,
-       sizeof(asn_DEF_P_Max_tags_1)
-               /sizeof(asn_DEF_P_Max_tags_1[0]), /* 1 */
-       asn_DEF_P_Max_tags_1,   /* Same as above */
-       sizeof(asn_DEF_P_Max_tags_1)
-               /sizeof(asn_DEF_P_Max_tags_1[0]), /* 1 */
-       { &asn_OER_type_P_Max_constr_1, &asn_PER_type_P_Max_constr_1, P_Max_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/P-Max.h b/src/codec_utils/SYSINFO/P-Max.h
deleted file mode 100644 (file)
index c6bc9b6..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _P_Max_H_
-#define        _P_Max_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* P-Max */
-typedef long    P_Max_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_P_Max_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_P_Max;
-asn_struct_free_f P_Max_free;
-asn_struct_print_f P_Max_print;
-asn_constr_check_f P_Max_constraint;
-ber_type_decoder_f P_Max_decode_ber;
-der_type_encoder_f P_Max_encode_der;
-xer_type_decoder_f P_Max_decode_xer;
-xer_type_encoder_f P_Max_encode_xer;
-oer_type_decoder_f P_Max_decode_oer;
-oer_type_encoder_f P_Max_encode_oer;
-per_type_decoder_f P_Max_decode_uper;
-per_type_encoder_f P_Max_encode_uper;
-per_type_decoder_f P_Max_decode_aper;
-per_type_encoder_f P_Max_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _P_Max_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PCCH-Config.c b/src/codec_utils/SYSINFO/PCCH-Config.c
deleted file mode 100644 (file)
index 509bc97..0000000
+++ /dev/null
@@ -1,1365 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PCCH-Config.h"
-
-static int
-memb_halfT_constraint_3(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 <= 1)) {
-               /* 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_quarterT_constraint_3(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 <= 3)) {
-               /* 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_oneEighthT_constraint_3(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 <= 7)) {
-               /* 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_oneSixteenthT_constraint_3(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 <= 15)) {
-               /* 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_NativeInteger_constraint_14(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 <= 139)) {
-               /* 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_NativeInteger_constraint_16(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 <= 279)) {
-               /* 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_NativeInteger_constraint_18(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 <= 559)) {
-               /* 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_NativeInteger_constraint_20(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 <= 1119)) {
-               /* 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_NativeInteger_constraint_22(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 <= 2239)) {
-               /* 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_NativeInteger_constraint_24(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 <= 4479)) {
-               /* 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_NativeInteger_constraint_26(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 <= 8959)) {
-               /* 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_NativeInteger_constraint_28(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 <= 17919)) {
-               /* 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_sCS15KHZoneT_constraint_13(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 <= 4)) {
-               /* 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_sCS30KHZoneT_SCS15KHZhalfT_constraint_13(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 <= 4)) {
-               /* 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_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_memb_halfT_constr_5 CC_NOTUSED = {
-       { 1, 1 }        /* (0..1) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_halfT_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_quarterT_constr_6 CC_NOTUSED = {
-       { 1, 1 }        /* (0..3) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_quarterT_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_oneEighthT_constr_7 CC_NOTUSED = {
-       { 1, 1 }        /* (0..7) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_oneEighthT_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_oneSixteenthT_constr_8 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_oneSixteenthT_constr_8 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_nAndPagingFrameOffset_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_nAndPagingFrameOffset_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ns_constr_9 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ns_constr_9 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_15 CC_NOTUSED = {
-       { 1, 1 }        /* (0..139) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_15 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8,  0,  139 }      /* (0..139) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_17 CC_NOTUSED = {
-       { 2, 1 }        /* (0..279) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_17 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  279 }      /* (0..279) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_19 CC_NOTUSED = {
-       { 2, 1 }        /* (0..559) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_19 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  0,  559 }    /* (0..559) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_21 CC_NOTUSED = {
-       { 2, 1 }        /* (0..1119) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_21 CC_NOTUSED = {
-       { APC_CONSTRAINED,       11,  11,  0,  1119 }   /* (0..1119) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_23 CC_NOTUSED = {
-       { 2, 1 }        /* (0..2239) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_23 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  2239 }   /* (0..2239) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_25 CC_NOTUSED = {
-       { 2, 1 }        /* (0..4479) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_25 CC_NOTUSED = {
-       { APC_CONSTRAINED,       13,  13,  0,  4479 }   /* (0..4479) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_27 CC_NOTUSED = {
-       { 2, 1 }        /* (0..8959) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_27 CC_NOTUSED = {
-       { APC_CONSTRAINED,       14,  14,  0,  8959 }   /* (0..8959) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_29 CC_NOTUSED = {
-       { 2, 1 }        /* (0..17919) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_29 CC_NOTUSED = {
-       { APC_CONSTRAINED,       15,  15,  0,  17919 }  /* (0..17919) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_nAndPagingFrameOffset_3[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneT),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "oneT"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.halfT),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_halfT_constr_5, &asn_PER_memb_halfT_constr_5,  memb_halfT_constraint_3 },
-               0, 0, /* No default value */
-               "halfT"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.quarterT),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_quarterT_constr_6, &asn_PER_memb_quarterT_constr_6,  memb_quarterT_constraint_3 },
-               0, 0, /* No default value */
-               "quarterT"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneEighthT),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_oneEighthT_constr_7, &asn_PER_memb_oneEighthT_constr_7,  memb_oneEighthT_constraint_3 },
-               0, 0, /* No default value */
-               "oneEighthT"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config__nAndPagingFrameOffset, choice.oneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_oneSixteenthT_constr_8, &asn_PER_memb_oneSixteenthT_constr_8,  memb_oneSixteenthT_constraint_3 },
-               0, 0, /* No default value */
-               "oneSixteenthT"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_nAndPagingFrameOffset_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneT */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* halfT */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* quarterT */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* oneEighthT */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* oneSixteenthT */
-};
-static asn_CHOICE_specifics_t asn_SPC_nAndPagingFrameOffset_specs_3 = {
-       sizeof(struct PCCH_Config__nAndPagingFrameOffset),
-       offsetof(struct PCCH_Config__nAndPagingFrameOffset, _asn_ctx),
-       offsetof(struct PCCH_Config__nAndPagingFrameOffset, present),
-       sizeof(((struct PCCH_Config__nAndPagingFrameOffset *)0)->present),
-       asn_MAP_nAndPagingFrameOffset_tag2el_3,
-       5,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_nAndPagingFrameOffset_3 = {
-       "nAndPagingFrameOffset",
-       "nAndPagingFrameOffset",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_nAndPagingFrameOffset_constr_3, &asn_PER_type_nAndPagingFrameOffset_constr_3, CHOICE_constraint },
-       asn_MBR_nAndPagingFrameOffset_3,
-       5,      /* Elements count */
-       &asn_SPC_nAndPagingFrameOffset_specs_3  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ns_value2enum_9[] = {
-       { 0,    4,      "four" },
-       { 1,    3,      "two" },
-       { 2,    3,      "one" }
-};
-static const unsigned int asn_MAP_ns_enum2value_9[] = {
-       0,      /* four(0) */
-       2,      /* one(2) */
-       1       /* two(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ns_specs_9 = {
-       asn_MAP_ns_value2enum_9,        /* "tag" => N; sorted by tag */
-       asn_MAP_ns_enum2value_9,        /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ns_tags_9[] = {
-       (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_ns_9 = {
-       "ns",
-       "ns",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ns_tags_9,
-       sizeof(asn_DEF_ns_tags_9)
-               /sizeof(asn_DEF_ns_tags_9[0]) - 1, /* 1 */
-       asn_DEF_ns_tags_9,      /* Same as above */
-       sizeof(asn_DEF_ns_tags_9)
-               /sizeof(asn_DEF_ns_tags_9[0]), /* 2 */
-       { &asn_OER_type_ns_constr_9, &asn_PER_type_ns_constr_9, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ns_specs_9     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS15KHZoneT_14[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_15, &asn_PER_memb_Member_constr_15,  memb_NativeInteger_constraint_14 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS15KHZoneT_tags_14[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS15KHZoneT_specs_14 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS15KHZoneT_14 = {
-       "sCS15KHZoneT",
-       "sCS15KHZoneT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS15KHZoneT_tags_14,
-       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
-               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]) - 1, /* 1 */
-       asn_DEF_sCS15KHZoneT_tags_14,   /* Same as above */
-       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
-               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]), /* 2 */
-       { &asn_OER_type_sCS15KHZoneT_constr_14, &asn_PER_type_sCS15KHZoneT_constr_14, SEQUENCE_OF_constraint },
-       asn_MBR_sCS15KHZoneT_14,
-       1,      /* Single element */
-       &asn_SPC_sCS15KHZoneT_specs_14  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_17, &asn_PER_memb_Member_constr_17,  memb_NativeInteger_constraint_16 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16 = {
-       "sCS30KHZoneT-SCS15KHZhalfT",
-       "sCS30KHZoneT-SCS15KHZhalfT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,
-       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
-               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]) - 1, /* 1 */
-       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,     /* Same as above */
-       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
-               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]), /* 2 */
-       { &asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, SEQUENCE_OF_constraint },
-       asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16,
-       1,      /* Single element */
-       &asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_19, &asn_PER_memb_Member_constr_19,  memb_NativeInteger_constraint_18 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18 = {
-       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
-       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,
-       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
-               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]) - 1, /* 1 */
-       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,    /* Same as above */
-       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
-               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]), /* 2 */
-       { &asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, SEQUENCE_OF_constraint },
-       asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
-       1,      /* Single element */
-       &asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_21, &asn_PER_memb_Member_constr_21,  memb_NativeInteger_constraint_20 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20 = {
-       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
-       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,
-       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
-               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,        /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
-               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20       /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_23, &asn_PER_memb_Member_constr_23,  memb_NativeInteger_constraint_22 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[] = {
-       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22 = {
-       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
-       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,
-       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
-               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,       /* Same as above */
-       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
-               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22      /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_25, &asn_PER_memb_Member_constr_25,  memb_NativeInteger_constraint_24 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[] = {
-       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24 = {
-       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
-       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,
-       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
-               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,     /* Same as above */
-       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
-               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_27, &asn_PER_memb_Member_constr_27,  memb_NativeInteger_constraint_26 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[] = {
-       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26 = {
-       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
-       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,
-       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
-               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,      /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
-               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneSixteenthT_28[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_29, &asn_PER_memb_Member_constr_29,  memb_NativeInteger_constraint_28 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneSixteenthT_tags_28[] = {
-       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneSixteenthT_specs_28 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneSixteenthT_28 = {
-       "sCS120KHZoneSixteenthT",
-       "sCS120KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneSixteenthT_tags_28,
-       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
-               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneSixteenthT_tags_28, /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
-               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneSixteenthT_constr_28, &asn_PER_type_sCS120KHZoneSixteenthT_constr_28, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneSixteenthT_28,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneSixteenthT_specs_28        /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13[] = {
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS15KHZoneT),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_sCS15KHZoneT_14,
-               0,
-               { &asn_OER_memb_sCS15KHZoneT_constr_14, &asn_PER_memb_sCS15KHZoneT_constr_14,  memb_sCS15KHZoneT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS15KHZoneT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS30KHZoneT_SCS15KHZhalfT),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16,
-               0,
-               { &asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16,  memb_sCS30KHZoneT_SCS15KHZhalfT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS30KHZoneT-SCS15KHZhalfT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
-               0,
-               { &asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18,  memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
-               0,
-               { &asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20,  memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               0,
-               &asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
-               0,
-               { &asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22,  memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               0,
-               &asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
-               0,
-               { &asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24,  memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
-               0,
-               { &asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26,  memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneSixteenthT_28,
-               0,
-               { &asn_OER_memb_sCS120KHZoneSixteenthT_constr_28, &asn_PER_memb_sCS120KHZoneSixteenthT_constr_28,  memb_sCS120KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneSixteenthT"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCS15KHZoneT */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sCS30KHZoneT-SCS15KHZhalfT */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sCS120KHZoneEighthT-SCS60KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sCS120KHZoneSixteenthT */
-};
-static asn_CHOICE_specifics_t asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13 = {
-       sizeof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, _asn_ctx),
-       offsetof(struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO, present),
-       sizeof(((struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO *)0)->present),
-       asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13,
-       8,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13 = {
-       "firstPDCCH-MonitoringOccasionOfPO",
-       "firstPDCCH-MonitoringOccasionOfPO",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, &asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, CHOICE_constraint },
-       asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13,
-       8,      /* Elements count */
-       &asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PCCH_Config_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, defaultPagingCycle),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PagingCycle,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "defaultPagingCycle"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, nAndPagingFrameOffset),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_nAndPagingFrameOffset_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nAndPagingFrameOffset"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PCCH_Config, ns),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ns_9,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ns"
-               },
-       { ATF_POINTER, 1, offsetof(struct PCCH_Config, firstPDCCH_MonitoringOccasionOfPO),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "firstPDCCH-MonitoringOccasionOfPO"
-               },
-};
-static const int asn_MAP_PCCH_Config_oms_1[] = { 3 };
-static const ber_tlv_tag_t asn_DEF_PCCH_Config_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PCCH_Config_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* defaultPagingCycle */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nAndPagingFrameOffset */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ns */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* firstPDCCH-MonitoringOccasionOfPO */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PCCH_Config_specs_1 = {
-       sizeof(struct PCCH_Config),
-       offsetof(struct PCCH_Config, _asn_ctx),
-       asn_MAP_PCCH_Config_tag2el_1,
-       4,      /* Count of tags in the map */
-       asn_MAP_PCCH_Config_oms_1,      /* Optional members */
-       1, 0,   /* Root/Additions */
-       4,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PCCH_Config = {
-       "PCCH-Config",
-       "PCCH-Config",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PCCH_Config_tags_1,
-       sizeof(asn_DEF_PCCH_Config_tags_1)
-               /sizeof(asn_DEF_PCCH_Config_tags_1[0]), /* 1 */
-       asn_DEF_PCCH_Config_tags_1,     /* Same as above */
-       sizeof(asn_DEF_PCCH_Config_tags_1)
-               /sizeof(asn_DEF_PCCH_Config_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PCCH_Config_1,
-       4,      /* Elements count */
-       &asn_SPC_PCCH_Config_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PCCH-Config.h b/src/codec_utils/SYSINFO/PCCH-Config.h
deleted file mode 100644 (file)
index bbf5f5c..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PCCH_Config_H_
-#define        _PCCH_Config_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "PagingCycle.h"
-#include <NativeEnumerated.h>
-#include <NULL.h>
-#include <NativeInteger.h>
-#include <constr_CHOICE.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PCCH_Config__nAndPagingFrameOffset_PR {
-       PCCH_Config__nAndPagingFrameOffset_PR_NOTHING,  /* No components present */
-       PCCH_Config__nAndPagingFrameOffset_PR_oneT,
-       PCCH_Config__nAndPagingFrameOffset_PR_halfT,
-       PCCH_Config__nAndPagingFrameOffset_PR_quarterT,
-       PCCH_Config__nAndPagingFrameOffset_PR_oneEighthT,
-       PCCH_Config__nAndPagingFrameOffset_PR_oneSixteenthT
-} PCCH_Config__nAndPagingFrameOffset_PR;
-typedef enum PCCH_Config__ns {
-       PCCH_Config__ns_four    = 0,
-       PCCH_Config__ns_two     = 1,
-       PCCH_Config__ns_one     = 2
-} e_PCCH_Config__ns;
-typedef enum PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR {
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_NOTHING,      /* No components present */
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS15KHZoneT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS30KHZoneT_SCS15KHZhalfT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT,
-       PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneSixteenthT
-} PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR;
-
-/* PCCH-Config */
-typedef struct PCCH_Config {
-       PagingCycle_t    defaultPagingCycle;
-       struct PCCH_Config__nAndPagingFrameOffset {
-               PCCH_Config__nAndPagingFrameOffset_PR present;
-               union PCCH_Config__nAndPagingFrameOffset_u {
-                       NULL_t   oneT;
-                       long     halfT;
-                       long     quarterT;
-                       long     oneEighthT;
-                       long     oneSixteenthT;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } nAndPagingFrameOffset;
-       long     ns;
-       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO {
-               PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_PR present;
-               union PCCH_Config__firstPDCCH_MonitoringOccasionOfPO_u {
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS15KHZoneT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS30KHZoneT_SCS15KHZhalfT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS120KHZoneEighthT_SCS60KHZoneSixteenthT;
-                       struct PCCH_Config__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT {
-                               A_SEQUENCE_OF(long) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *sCS120KHZoneSixteenthT;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *firstPDCCH_MonitoringOccasionOfPO;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PCCH_Config_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_ns_9;  // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PCCH_Config;
-extern asn_SEQUENCE_specifics_t asn_SPC_PCCH_Config_specs_1;
-extern asn_TYPE_member_t asn_MBR_PCCH_Config_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PCCH_Config_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PDCCH-ConfigCommon.c b/src/codec_utils/SYSINFO/PDCCH-ConfigCommon.c
deleted file mode 100644 (file)
index b626d6b..0000000
+++ /dev/null
@@ -1,1271 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PDCCH-ConfigCommon.h"
-
-#include "ControlResourceSet.h"
-#include "SearchSpace.h"
-static int
-memb_NativeInteger_constraint_14(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 <= 139)) {
-               /* 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_NativeInteger_constraint_16(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 <= 279)) {
-               /* 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_NativeInteger_constraint_18(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 <= 559)) {
-               /* 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_NativeInteger_constraint_20(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 <= 1119)) {
-               /* 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_NativeInteger_constraint_22(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 <= 2239)) {
-               /* 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_NativeInteger_constraint_24(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 <= 4479)) {
-               /* 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_NativeInteger_constraint_26(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 <= 8959)) {
-               /* 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_NativeInteger_constraint_28(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 <= 17919)) {
-               /* 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_sCS15KHZoneT_constraint_13(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 <= 4)) {
-               /* 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_sCS30KHZoneT_SCS15KHZhalfT_constraint_13(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 <= 4)) {
-               /* 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_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_sCS120KHZoneSixteenthT_constraint_13(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 <= 4)) {
-               /* 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_commonSearchSpaceList_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 <= 4)) {
-               /* 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_commonSearchSpaceList_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_commonSearchSpaceList_constr_5 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_15 CC_NOTUSED = {
-       { 1, 1 }        /* (0..139) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_15 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8,  0,  139 }      /* (0..139) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_17 CC_NOTUSED = {
-       { 2, 1 }        /* (0..279) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_17 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  279 }      /* (0..279) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_19 CC_NOTUSED = {
-       { 2, 1 }        /* (0..559) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_19 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  0,  559 }    /* (0..559) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_21 CC_NOTUSED = {
-       { 2, 1 }        /* (0..1119) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_21 CC_NOTUSED = {
-       { APC_CONSTRAINED,       11,  11,  0,  1119 }   /* (0..1119) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_23 CC_NOTUSED = {
-       { 2, 1 }        /* (0..2239) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_23 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  2239 }   /* (0..2239) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_25 CC_NOTUSED = {
-       { 2, 1 }        /* (0..4479) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_25 CC_NOTUSED = {
-       { APC_CONSTRAINED,       13,  13,  0,  4479 }   /* (0..4479) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_27 CC_NOTUSED = {
-       { 2, 1 }        /* (0..8959) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_27 CC_NOTUSED = {
-       { APC_CONSTRAINED,       14,  14,  0,  8959 }   /* (0..8959) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_Member_constr_29 CC_NOTUSED = {
-       { 2, 1 }        /* (0..17919) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_Member_constr_29 CC_NOTUSED = {
-       { APC_CONSTRAINED,       15,  15,  0,  17919 }  /* (0..17919) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_type_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS15KHZoneT_constr_14 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_sCS120KHZoneSixteenthT_constr_28 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_commonSearchSpaceList_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..4)) */};
-static asn_per_constraints_t asn_PER_memb_commonSearchSpaceList_constr_5 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (SIZE(1..4)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_commonSearchSpaceList_5[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SearchSpace,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_commonSearchSpaceList_tags_5[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_commonSearchSpaceList_specs_5 = {
-       sizeof(struct PDCCH_ConfigCommon__commonSearchSpaceList),
-       offsetof(struct PDCCH_ConfigCommon__commonSearchSpaceList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_commonSearchSpaceList_5 = {
-       "commonSearchSpaceList",
-       "commonSearchSpaceList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_commonSearchSpaceList_tags_5,
-       sizeof(asn_DEF_commonSearchSpaceList_tags_5)
-               /sizeof(asn_DEF_commonSearchSpaceList_tags_5[0]) - 1, /* 1 */
-       asn_DEF_commonSearchSpaceList_tags_5,   /* Same as above */
-       sizeof(asn_DEF_commonSearchSpaceList_tags_5)
-               /sizeof(asn_DEF_commonSearchSpaceList_tags_5[0]), /* 2 */
-       { &asn_OER_type_commonSearchSpaceList_constr_5, &asn_PER_type_commonSearchSpaceList_constr_5, SEQUENCE_OF_constraint },
-       asn_MBR_commonSearchSpaceList_5,
-       1,      /* Single element */
-       &asn_SPC_commonSearchSpaceList_specs_5  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS15KHZoneT_14[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_15, &asn_PER_memb_Member_constr_15,  memb_NativeInteger_constraint_14 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS15KHZoneT_tags_14[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS15KHZoneT_specs_14 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS15KHZoneT_14 = {
-       "sCS15KHZoneT",
-       "sCS15KHZoneT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS15KHZoneT_tags_14,
-       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
-               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]) - 1, /* 1 */
-       asn_DEF_sCS15KHZoneT_tags_14,   /* Same as above */
-       sizeof(asn_DEF_sCS15KHZoneT_tags_14)
-               /sizeof(asn_DEF_sCS15KHZoneT_tags_14[0]), /* 2 */
-       { &asn_OER_type_sCS15KHZoneT_constr_14, &asn_PER_type_sCS15KHZoneT_constr_14, SEQUENCE_OF_constraint },
-       asn_MBR_sCS15KHZoneT_14,
-       1,      /* Single element */
-       &asn_SPC_sCS15KHZoneT_specs_14  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_17, &asn_PER_memb_Member_constr_17,  memb_NativeInteger_constraint_16 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16 = {
-       "sCS30KHZoneT-SCS15KHZhalfT",
-       "sCS30KHZoneT-SCS15KHZhalfT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,
-       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
-               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]) - 1, /* 1 */
-       asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16,     /* Same as above */
-       sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16)
-               /sizeof(asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_tags_16[0]), /* 2 */
-       { &asn_OER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_type_sCS30KHZoneT_SCS15KHZhalfT_constr_16, SEQUENCE_OF_constraint },
-       asn_MBR_sCS30KHZoneT_SCS15KHZhalfT_16,
-       1,      /* Single element */
-       &asn_SPC_sCS30KHZoneT_SCS15KHZhalfT_specs_16    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_19, &asn_PER_memb_Member_constr_19,  memb_NativeInteger_constraint_18 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18 = {
-       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
-       "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,
-       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
-               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]) - 1, /* 1 */
-       asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18,    /* Same as above */
-       sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18)
-               /sizeof(asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_tags_18[0]), /* 2 */
-       { &asn_OER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_type_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, SEQUENCE_OF_constraint },
-       asn_MBR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
-       1,      /* Single element */
-       &asn_SPC_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_specs_18   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_21, &asn_PER_memb_Member_constr_21,  memb_NativeInteger_constraint_20 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20 = {
-       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
-       "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,
-       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
-               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20,        /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20)
-               /sizeof(asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_tags_20[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_type_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_specs_20       /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_23, &asn_PER_memb_Member_constr_23,  memb_NativeInteger_constraint_22 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[] = {
-       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22 = {
-       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
-       "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,
-       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
-               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22,       /* Same as above */
-       sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22)
-               /sizeof(asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_tags_22[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_type_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_specs_22      /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_25, &asn_PER_memb_Member_constr_25,  memb_NativeInteger_constraint_24 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[] = {
-       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24 = {
-       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
-       "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,
-       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
-               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24,     /* Same as above */
-       sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24)
-               /sizeof(asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_tags_24[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_type_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_specs_24    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_27, &asn_PER_memb_Member_constr_27,  memb_NativeInteger_constraint_26 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[] = {
-       (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26 = {
-       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
-       "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,
-       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
-               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26,      /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26)
-               /sizeof(asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_tags_26[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_type_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_specs_26     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_sCS120KHZoneSixteenthT_28[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_Member_constr_29, &asn_PER_memb_Member_constr_29,  memb_NativeInteger_constraint_28 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_sCS120KHZoneSixteenthT_tags_28[] = {
-       (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_sCS120KHZoneSixteenthT_specs_28 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_sCS120KHZoneSixteenthT_28 = {
-       "sCS120KHZoneSixteenthT",
-       "sCS120KHZoneSixteenthT",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_sCS120KHZoneSixteenthT_tags_28,
-       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
-               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]) - 1, /* 1 */
-       asn_DEF_sCS120KHZoneSixteenthT_tags_28, /* Same as above */
-       sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28)
-               /sizeof(asn_DEF_sCS120KHZoneSixteenthT_tags_28[0]), /* 2 */
-       { &asn_OER_type_sCS120KHZoneSixteenthT_constr_28, &asn_PER_type_sCS120KHZoneSixteenthT_constr_28, SEQUENCE_OF_constraint },
-       asn_MBR_sCS120KHZoneSixteenthT_28,
-       1,      /* Single element */
-       &asn_SPC_sCS120KHZoneSixteenthT_specs_28        /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13[] = {
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS15KHZoneT),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_sCS15KHZoneT_14,
-               0,
-               { &asn_OER_memb_sCS15KHZoneT_constr_14, &asn_PER_memb_sCS15KHZoneT_constr_14,  memb_sCS15KHZoneT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS15KHZoneT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS30KHZoneT_SCS15KHZhalfT),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_sCS30KHZoneT_SCS15KHZhalfT_16,
-               0,
-               { &asn_OER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16, &asn_PER_memb_sCS30KHZoneT_SCS15KHZhalfT_constr_16,  memb_sCS30KHZoneT_SCS15KHZhalfT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS30KHZoneT-SCS15KHZhalfT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_18,
-               0,
-               { &asn_OER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18, &asn_PER_memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constr_18,  memb_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_20,
-               0,
-               { &asn_OER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20, &asn_PER_memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constr_20,  memb_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               0,
-               &asn_DEF_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_22,
-               0,
-               { &asn_OER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22, &asn_PER_memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constr_22,  memb_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               0,
-               &asn_DEF_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_24,
-               0,
-               { &asn_OER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24, &asn_PER_memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constr_24,  memb_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneEighthT_SCS60KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_26,
-               0,
-               { &asn_OER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26, &asn_PER_memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constr_26,  memb_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneEighthT-SCS60KHZoneSixteenthT"
-               },
-       { ATF_POINTER, 0, offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, choice.sCS120KHZoneSixteenthT),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               0,
-               &asn_DEF_sCS120KHZoneSixteenthT_28,
-               0,
-               { &asn_OER_memb_sCS120KHZoneSixteenthT_constr_28, &asn_PER_memb_sCS120KHZoneSixteenthT_constr_28,  memb_sCS120KHZoneSixteenthT_constraint_13 },
-               0, 0, /* No default value */
-               "sCS120KHZoneSixteenthT"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sCS15KHZoneT */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sCS30KHZoneT-SCS15KHZhalfT */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sCS60KHZoneT-SCS30KHZhalfT-SCS15KHZquarterT */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sCS120KHZoneT-SCS60KHZhalfT-SCS30KHZquarterT-SCS15KHZoneEighthT */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sCS120KHZhalfT-SCS60KHZquarterT-SCS30KHZoneEighthT-SCS15KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sCS120KHZquarterT-SCS60KHZoneEighthT-SCS30KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sCS120KHZoneEighthT-SCS60KHZoneSixteenthT */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sCS120KHZoneSixteenthT */
-};
-static asn_CHOICE_specifics_t asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, _asn_ctx),
-       offsetof(struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO, present),
-       sizeof(((struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO *)0)->present),
-       asn_MAP_firstPDCCH_MonitoringOccasionOfPO_tag2el_13,
-       8,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13 = {
-       "firstPDCCH-MonitoringOccasionOfPO",
-       "firstPDCCH-MonitoringOccasionOfPO",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, &asn_PER_type_firstPDCCH_MonitoringOccasionOfPO_constr_13, CHOICE_constraint },
-       asn_MBR_firstPDCCH_MonitoringOccasionOfPO_13,
-       8,      /* Elements count */
-       &asn_SPC_firstPDCCH_MonitoringOccasionOfPO_specs_13     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ext1_12[] = {
-       { ATF_POINTER, 1, offsetof(struct PDCCH_ConfigCommon__ext1, firstPDCCH_MonitoringOccasionOfPO),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_firstPDCCH_MonitoringOccasionOfPO_13,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "firstPDCCH-MonitoringOccasionOfPO"
-               },
-};
-static const int asn_MAP_ext1_oms_12[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_ext1_tags_12[] = {
-       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_12[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* firstPDCCH-MonitoringOccasionOfPO */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_12 = {
-       sizeof(struct PDCCH_ConfigCommon__ext1),
-       offsetof(struct PDCCH_ConfigCommon__ext1, _asn_ctx),
-       asn_MAP_ext1_tag2el_12,
-       1,      /* Count of tags in the map */
-       asn_MAP_ext1_oms_12,    /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ext1_12 = {
-       "ext1",
-       "ext1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ext1_tags_12,
-       sizeof(asn_DEF_ext1_tags_12)
-               /sizeof(asn_DEF_ext1_tags_12[0]) - 1, /* 1 */
-       asn_DEF_ext1_tags_12,   /* Same as above */
-       sizeof(asn_DEF_ext1_tags_12)
-               /sizeof(asn_DEF_ext1_tags_12[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ext1_12,
-       1,      /* Elements count */
-       &asn_SPC_ext1_specs_12  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PDCCH_ConfigCommon_1[] = {
-       { ATF_POINTER, 9, offsetof(struct PDCCH_ConfigCommon, controlResourceSetZero),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ControlResourceSetZero,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "controlResourceSetZero"
-               },
-       { ATF_POINTER, 8, offsetof(struct PDCCH_ConfigCommon, commonControlResourceSet),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ControlResourceSet,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "commonControlResourceSet"
-               },
-       { ATF_POINTER, 7, offsetof(struct PDCCH_ConfigCommon, searchSpaceZero),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceZero,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceZero"
-               },
-       { ATF_POINTER, 6, offsetof(struct PDCCH_ConfigCommon, commonSearchSpaceList),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_commonSearchSpaceList_5,
-               0,
-               { &asn_OER_memb_commonSearchSpaceList_constr_5, &asn_PER_memb_commonSearchSpaceList_constr_5,  memb_commonSearchSpaceList_constraint_1 },
-               0, 0, /* No default value */
-               "commonSearchSpaceList"
-               },
-       { ATF_POINTER, 5, offsetof(struct PDCCH_ConfigCommon, searchSpaceSIB1),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceSIB1"
-               },
-       { ATF_POINTER, 4, offsetof(struct PDCCH_ConfigCommon, searchSpaceOtherSystemInformation),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceOtherSystemInformation"
-               },
-       { ATF_POINTER, 3, offsetof(struct PDCCH_ConfigCommon, pagingSearchSpace),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pagingSearchSpace"
-               },
-       { ATF_POINTER, 2, offsetof(struct PDCCH_ConfigCommon, ra_SearchSpace),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ra-SearchSpace"
-               },
-       { ATF_POINTER, 1, offsetof(struct PDCCH_ConfigCommon, ext1),
-               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-               0,
-               &asn_DEF_ext1_12,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ext1"
-               },
-};
-static const int asn_MAP_PDCCH_ConfigCommon_oms_1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8 };
-static const ber_tlv_tag_t asn_DEF_PDCCH_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PDCCH_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetZero */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* commonControlResourceSet */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* searchSpaceZero */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* commonSearchSpaceList */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* searchSpaceSIB1 */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* searchSpaceOtherSystemInformation */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* pagingSearchSpace */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ra-SearchSpace */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 } /* ext1 */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigCommon_specs_1 = {
-       sizeof(struct PDCCH_ConfigCommon),
-       offsetof(struct PDCCH_ConfigCommon, _asn_ctx),
-       asn_MAP_PDCCH_ConfigCommon_tag2el_1,
-       9,      /* Count of tags in the map */
-       asn_MAP_PDCCH_ConfigCommon_oms_1,       /* Optional members */
-       8, 1,   /* Root/Additions */
-       8,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigCommon = {
-       "PDCCH-ConfigCommon",
-       "PDCCH-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PDCCH_ConfigCommon_tags_1,
-       sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_PDCCH_ConfigCommon_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PDCCH_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PDCCH_ConfigCommon_1,
-       9,      /* Elements count */
-       &asn_SPC_PDCCH_ConfigCommon_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PDCCH-ConfigCommon.h b/src/codec_utils/SYSINFO/PDCCH-ConfigCommon.h
deleted file mode 100644 (file)
index 46f8734..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PDCCH_ConfigCommon_H_
-#define        _PDCCH_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "ControlResourceSetZero.h"
-#include "SearchSpaceZero.h"
-#include "SearchSpaceId.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <NativeInteger.h>
-#include <constr_CHOICE.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR {
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_NOTHING, /* No components present */
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS15KHZoneT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS30KHZoneT_SCS15KHZhalfT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneEighthT_SCS60KHZoneSixteenthT,
-       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR_sCS120KHZoneSixteenthT
-} PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR;
-
-/* Forward declarations */
-struct ControlResourceSet;
-struct SearchSpace;
-
-/* PDCCH-ConfigCommon */
-typedef struct PDCCH_ConfigCommon {
-       ControlResourceSetZero_t        *controlResourceSetZero;        /* OPTIONAL */
-       struct ControlResourceSet       *commonControlResourceSet;      /* OPTIONAL */
-       SearchSpaceZero_t       *searchSpaceZero;       /* OPTIONAL */
-       struct PDCCH_ConfigCommon__commonSearchSpaceList {
-               A_SEQUENCE_OF(struct SearchSpace) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *commonSearchSpaceList;
-       SearchSpaceId_t *searchSpaceSIB1;       /* OPTIONAL */
-       SearchSpaceId_t *searchSpaceOtherSystemInformation;     /* OPTIONAL */
-       SearchSpaceId_t *pagingSearchSpace;     /* OPTIONAL */
-       SearchSpaceId_t *ra_SearchSpace;        /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       struct PDCCH_ConfigCommon__ext1 {
-               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO {
-                       PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_PR present;
-                       union PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO_u {
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS15KHZoneT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS15KHZoneT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS30KHZoneT_SCS15KHZhalfT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS30KHZoneT_SCS15KHZhalfT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS60KHZoneT_SCS30KHZhalfT_SCS15KHZquarterT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS120KHZoneT_SCS60KHZhalfT_SCS30KHZquarterT_SCS15KHZoneEighthT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS120KHZhalfT_SCS60KHZquarterT_SCS30KHZoneEighthT_SCS15KHZoneSixteenthT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS120KHZquarterT_SCS60KHZoneEighthT_SCS30KHZoneSixteenthT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneEighthT_SCS60KHZoneSixteenthT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS120KHZoneEighthT_SCS60KHZoneSixteenthT;
-                               struct PDCCH_ConfigCommon__ext1__firstPDCCH_MonitoringOccasionOfPO__sCS120KHZoneSixteenthT {
-                                       A_SEQUENCE_OF(long) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *sCS120KHZoneSixteenthT;
-                       } choice;
-                       
-                       /* Context for parsing across buffer boundaries */
-                       asn_struct_ctx_t _asn_ctx;
-               } *firstPDCCH_MonitoringOccasionOfPO;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *ext1;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PDCCH_ConfigCommon_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_PDCCH_ConfigCommon_1[9];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PDCCH_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.c b/src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.c
deleted file mode 100644 (file)
index 3abdb2d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PDCCH-ConfigSIB1.h"
-
-asn_TYPE_member_t asn_MBR_PDCCH_ConfigSIB1_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_ConfigSIB1, controlResourceSetZero),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ControlResourceSetZero,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "controlResourceSetZero"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PDCCH_ConfigSIB1, searchSpaceZero),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceZero,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceZero"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_PDCCH_ConfigSIB1_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PDCCH_ConfigSIB1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* controlResourceSetZero */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* searchSpaceZero */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigSIB1_specs_1 = {
-       sizeof(struct PDCCH_ConfigSIB1),
-       offsetof(struct PDCCH_ConfigSIB1, _asn_ctx),
-       asn_MAP_PDCCH_ConfigSIB1_tag2el_1,
-       2,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigSIB1 = {
-       "PDCCH-ConfigSIB1",
-       "PDCCH-ConfigSIB1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PDCCH_ConfigSIB1_tags_1,
-       sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1)
-               /sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1[0]), /* 1 */
-       asn_DEF_PDCCH_ConfigSIB1_tags_1,        /* Same as above */
-       sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1)
-               /sizeof(asn_DEF_PDCCH_ConfigSIB1_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PDCCH_ConfigSIB1_1,
-       2,      /* Elements count */
-       &asn_SPC_PDCCH_ConfigSIB1_specs_1       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.h b/src/codec_utils/SYSINFO/PDCCH-ConfigSIB1.h
deleted file mode 100644 (file)
index cdb4572..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PDCCH_ConfigSIB1_H_
-#define        _PDCCH_ConfigSIB1_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "ControlResourceSetZero.h"
-#include "SearchSpaceZero.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* PDCCH-ConfigSIB1 */
-typedef struct PDCCH_ConfigSIB1 {
-       ControlResourceSetZero_t         controlResourceSetZero;
-       SearchSpaceZero_t        searchSpaceZero;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PDCCH_ConfigSIB1_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PDCCH_ConfigSIB1;
-extern asn_SEQUENCE_specifics_t asn_SPC_PDCCH_ConfigSIB1_specs_1;
-extern asn_TYPE_member_t asn_MBR_PDCCH_ConfigSIB1_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PDCCH_ConfigSIB1_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PDSCH-ConfigCommon.c b/src/codec_utils/SYSINFO/PDSCH-ConfigCommon.c
deleted file mode 100644 (file)
index 0496c04..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PDSCH-ConfigCommon.h"
-
-#include "PDSCH-TimeDomainResourceAllocationList.h"
-asn_TYPE_member_t asn_MBR_PDSCH_ConfigCommon_1[] = {
-       { ATF_POINTER, 1, offsetof(struct PDSCH_ConfigCommon, pdsch_TimeDomainAllocationList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PDSCH_TimeDomainResourceAllocationList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pdsch-TimeDomainAllocationList"
-               },
-};
-static const int asn_MAP_PDSCH_ConfigCommon_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_PDSCH_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PDSCH_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* pdsch-TimeDomainAllocationList */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ConfigCommon_specs_1 = {
-       sizeof(struct PDSCH_ConfigCommon),
-       offsetof(struct PDSCH_ConfigCommon, _asn_ctx),
-       asn_MAP_PDSCH_ConfigCommon_tag2el_1,
-       1,      /* Count of tags in the map */
-       asn_MAP_PDSCH_ConfigCommon_oms_1,       /* Optional members */
-       1, 0,   /* Root/Additions */
-       1,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PDSCH_ConfigCommon = {
-       "PDSCH-ConfigCommon",
-       "PDSCH-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PDSCH_ConfigCommon_tags_1,
-       sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_PDSCH_ConfigCommon_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PDSCH_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PDSCH_ConfigCommon_1,
-       1,      /* Elements count */
-       &asn_SPC_PDSCH_ConfigCommon_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PDSCH-ConfigCommon.h b/src/codec_utils/SYSINFO/PDSCH-ConfigCommon.h
deleted file mode 100644 (file)
index cd38aab..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PDSCH_ConfigCommon_H_
-#define        _PDSCH_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Forward declarations */
-struct PDSCH_TimeDomainResourceAllocationList;
-
-/* PDSCH-ConfigCommon */
-typedef struct PDSCH_ConfigCommon {
-       struct PDSCH_TimeDomainResourceAllocationList   *pdsch_TimeDomainAllocationList;        /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PDSCH_ConfigCommon_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PDSCH_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_PDSCH_ConfigCommon_1[1];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PDSCH_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.c b/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.c
deleted file mode 100644 (file)
index a9c211f..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PDSCH-TimeDomainResourceAllocation.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_k0_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 >= 0 && value <= 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 int
-memb_startSymbolAndLength_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 >= 0 && value <= 127)) {
-               /* 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_mappingType_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_mappingType_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_k0_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (0..32) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_k0_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
-       { 1, 1 }        /* (0..127) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_mappingType_value2enum_3[] = {
-       { 0,    5,      "typeA" },
-       { 1,    5,      "typeB" }
-};
-static const unsigned int asn_MAP_mappingType_enum2value_3[] = {
-       0,      /* typeA(0) */
-       1       /* typeB(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_mappingType_specs_3 = {
-       asn_MAP_mappingType_value2enum_3,       /* "tag" => N; sorted by tag */
-       asn_MAP_mappingType_enum2value_3,       /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_mappingType_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_mappingType_3 = {
-       "mappingType",
-       "mappingType",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_mappingType_tags_3,
-       sizeof(asn_DEF_mappingType_tags_3)
-               /sizeof(asn_DEF_mappingType_tags_3[0]) - 1, /* 1 */
-       asn_DEF_mappingType_tags_3,     /* Same as above */
-       sizeof(asn_DEF_mappingType_tags_3)
-               /sizeof(asn_DEF_mappingType_tags_3[0]), /* 2 */
-       { &asn_OER_type_mappingType_constr_3, &asn_PER_type_mappingType_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_mappingType_specs_3    /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocation_1[] = {
-       { ATF_POINTER, 1, offsetof(struct PDSCH_TimeDomainResourceAllocation, k0),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_k0_constr_2, &asn_PER_memb_k0_constr_2,  memb_k0_constraint_1 },
-               0, 0, /* No default value */
-               "k0"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_TimeDomainResourceAllocation, mappingType),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_mappingType_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "mappingType"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PDSCH_TimeDomainResourceAllocation, startSymbolAndLength),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_startSymbolAndLength_constr_6, &asn_PER_memb_startSymbolAndLength_constr_6,  memb_startSymbolAndLength_constraint_1 },
-               0, 0, /* No default value */
-               "startSymbolAndLength"
-               },
-};
-static const int asn_MAP_PDSCH_TimeDomainResourceAllocation_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PDSCH_TimeDomainResourceAllocation_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* k0 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mappingType */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startSymbolAndLength */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1 = {
-       sizeof(struct PDSCH_TimeDomainResourceAllocation),
-       offsetof(struct PDSCH_TimeDomainResourceAllocation, _asn_ctx),
-       asn_MAP_PDSCH_TimeDomainResourceAllocation_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_PDSCH_TimeDomainResourceAllocation_oms_1,       /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocation = {
-       "PDSCH-TimeDomainResourceAllocation",
-       "PDSCH-TimeDomainResourceAllocation",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1,
-       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1)
-               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
-       asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1)
-               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PDSCH_TimeDomainResourceAllocation_1,
-       3,      /* Elements count */
-       &asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.h b/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocation.h
deleted file mode 100644 (file)
index 789f613..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PDSCH_TimeDomainResourceAllocation_H_
-#define        _PDSCH_TimeDomainResourceAllocation_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PDSCH_TimeDomainResourceAllocation__mappingType {
-       PDSCH_TimeDomainResourceAllocation__mappingType_typeA   = 0,
-       PDSCH_TimeDomainResourceAllocation__mappingType_typeB   = 1
-} e_PDSCH_TimeDomainResourceAllocation__mappingType;
-
-/* PDSCH-TimeDomainResourceAllocation */
-typedef struct PDSCH_TimeDomainResourceAllocation {
-       long    *k0;    /* OPTIONAL */
-       long     mappingType;
-       long     startSymbolAndLength;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PDSCH_TimeDomainResourceAllocation_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_mappingType_3; // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocation;
-extern asn_SEQUENCE_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocation_specs_1;
-extern asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocation_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PDSCH_TimeDomainResourceAllocation_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.c b/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.c
deleted file mode 100644 (file)
index ca4c6d6..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PDSCH-TimeDomainResourceAllocationList.h"
-
-#include "PDSCH-TimeDomainResourceAllocation.h"
-static asn_oer_constraints_t asn_OER_type_PDSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..16)) */};
-asn_per_constraints_t asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocationList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_PDSCH_TimeDomainResourceAllocation,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1 = {
-       sizeof(struct PDSCH_TimeDomainResourceAllocationList),
-       offsetof(struct PDSCH_TimeDomainResourceAllocationList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocationList = {
-       "PDSCH-TimeDomainResourceAllocationList",
-       "PDSCH-TimeDomainResourceAllocationList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1,
-       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1)
-               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
-       asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1,  /* Same as above */
-       sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1)
-               /sizeof(asn_DEF_PDSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
-       { &asn_OER_type_PDSCH_TimeDomainResourceAllocationList_constr_1, &asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_PDSCH_TimeDomainResourceAllocationList_1,
-       1,      /* Single element */
-       &asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.h b/src/codec_utils/SYSINFO/PDSCH-TimeDomainResourceAllocationList.h
deleted file mode 100644 (file)
index f79fe0f..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PDSCH_TimeDomainResourceAllocationList_H_
-#define        _PDSCH_TimeDomainResourceAllocationList_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 PDSCH_TimeDomainResourceAllocation;
-
-/* PDSCH-TimeDomainResourceAllocationList */
-typedef struct PDSCH_TimeDomainResourceAllocationList {
-       A_SEQUENCE_OF(struct PDSCH_TimeDomainResourceAllocation) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PDSCH_TimeDomainResourceAllocationList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PDSCH_TimeDomainResourceAllocationList;
-extern asn_SET_OF_specifics_t asn_SPC_PDSCH_TimeDomainResourceAllocationList_specs_1;
-extern asn_TYPE_member_t asn_MBR_PDSCH_TimeDomainResourceAllocationList_1[1];
-extern asn_per_constraints_t asn_PER_type_PDSCH_TimeDomainResourceAllocationList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PDSCH_TimeDomainResourceAllocationList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentitY.c b/src/codec_utils/SYSINFO/PLMN-IdentitY.c
deleted file mode 100644 (file)
index c8e5f18..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PLMN-IdentitY.h"
-
-#include "MCC.h"
-asn_TYPE_member_t asn_MBR_PLMN_IdentitY_1[] = {
-       { ATF_POINTER, 1, offsetof(struct PLMN_IdentitY, mcc),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_MCC,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "mcc"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentitY, mnc),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_MNC,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "mnc"
-               },
-};
-static const int asn_MAP_PLMN_IdentitY_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_PLMN_IdentitY_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PLMN_IdentitY_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* mcc */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* mnc */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentitY_specs_1 = {
-       sizeof(struct PLMN_IdentitY),
-       offsetof(struct PLMN_IdentitY, _asn_ctx),
-       asn_MAP_PLMN_IdentitY_tag2el_1,
-       2,      /* Count of tags in the map */
-       asn_MAP_PLMN_IdentitY_oms_1,    /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PLMN_IdentitY = {
-       "PLMN-IdentitY",
-       "PLMN-IdentitY",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PLMN_IdentitY_tags_1,
-       sizeof(asn_DEF_PLMN_IdentitY_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentitY_tags_1[0]), /* 1 */
-       asn_DEF_PLMN_IdentitY_tags_1,   /* Same as above */
-       sizeof(asn_DEF_PLMN_IdentitY_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentitY_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PLMN_IdentitY_1,
-       2,      /* Elements count */
-       &asn_SPC_PLMN_IdentitY_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentitY.h b/src/codec_utils/SYSINFO/PLMN-IdentitY.h
deleted file mode 100644 (file)
index 3c2e7b3..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PLMN_IdentitY_H_
-#define        _PLMN_IdentitY_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "MNC.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Forward declarations */
-struct MCC;
-
-/* PLMN-IdentitY */
-typedef struct PLMN_IdentitY {
-       struct MCC      *mcc;   /* OPTIONAL */
-       MNC_t    mnc;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PLMN_IdentitY_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentitY;
-extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentitY_specs_1;
-extern asn_TYPE_member_t asn_MBR_PLMN_IdentitY_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PLMN_IdentitY_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentityInfo.c b/src/codec_utils/SYSINFO/PLMN-IdentityInfo.c
deleted file mode 100644 (file)
index 4d6faa8..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PLMN-IdentityInfo.h"
-
-#include "PLMN-IdentitY.h"
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_plmn_IdentityList_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 <= 12)) {
-               /* 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_plmn_IdentityList_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_type_plmn_IdentityList_constr_2 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_cellReservedForOperatorUse_constr_7 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_cellReservedForOperatorUse_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_plmn_IdentityList_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..12)) */};
-static asn_per_constraints_t asn_PER_memb_plmn_IdentityList_constr_2 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_plmn_IdentityList_2[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_PLMN_IdentitY,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_plmn_IdentityList_tags_2[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_plmn_IdentityList_specs_2 = {
-       sizeof(struct PLMN_IdentityInfo__plmn_IdentityList),
-       offsetof(struct PLMN_IdentityInfo__plmn_IdentityList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_plmn_IdentityList_2 = {
-       "plmn-IdentityList",
-       "plmn-IdentityList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_plmn_IdentityList_tags_2,
-       sizeof(asn_DEF_plmn_IdentityList_tags_2)
-               /sizeof(asn_DEF_plmn_IdentityList_tags_2[0]) - 1, /* 1 */
-       asn_DEF_plmn_IdentityList_tags_2,       /* Same as above */
-       sizeof(asn_DEF_plmn_IdentityList_tags_2)
-               /sizeof(asn_DEF_plmn_IdentityList_tags_2[0]), /* 2 */
-       { &asn_OER_type_plmn_IdentityList_constr_2, &asn_PER_type_plmn_IdentityList_constr_2, SEQUENCE_OF_constraint },
-       asn_MBR_plmn_IdentityList_2,
-       1,      /* Single element */
-       &asn_SPC_plmn_IdentityList_specs_2      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_cellReservedForOperatorUse_value2enum_7[] = {
-       { 0,    8,      "reserved" },
-       { 1,    11,     "notReserved" }
-};
-static const unsigned int asn_MAP_cellReservedForOperatorUse_enum2value_7[] = {
-       1,      /* notReserved(1) */
-       0       /* reserved(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_cellReservedForOperatorUse_specs_7 = {
-       asn_MAP_cellReservedForOperatorUse_value2enum_7,        /* "tag" => N; sorted by tag */
-       asn_MAP_cellReservedForOperatorUse_enum2value_7,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_cellReservedForOperatorUse_tags_7[] = {
-       (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_cellReservedForOperatorUse_7 = {
-       "cellReservedForOperatorUse",
-       "cellReservedForOperatorUse",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_cellReservedForOperatorUse_tags_7,
-       sizeof(asn_DEF_cellReservedForOperatorUse_tags_7)
-               /sizeof(asn_DEF_cellReservedForOperatorUse_tags_7[0]) - 1, /* 1 */
-       asn_DEF_cellReservedForOperatorUse_tags_7,      /* Same as above */
-       sizeof(asn_DEF_cellReservedForOperatorUse_tags_7)
-               /sizeof(asn_DEF_cellReservedForOperatorUse_tags_7[0]), /* 2 */
-       { &asn_OER_type_cellReservedForOperatorUse_constr_7, &asn_PER_type_cellReservedForOperatorUse_constr_7, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_cellReservedForOperatorUse_specs_7     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PLMN_IdentityInfo_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, plmn_IdentityList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_plmn_IdentityList_2,
-               0,
-               { &asn_OER_memb_plmn_IdentityList_constr_2, &asn_PER_memb_plmn_IdentityList_constr_2,  memb_plmn_IdentityList_constraint_1 },
-               0, 0, /* No default value */
-               "plmn-IdentityList"
-               },
-       { ATF_POINTER, 2, offsetof(struct PLMN_IdentityInfo, trackingAreaCode),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_TrackingAreaCode,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "trackingAreaCode"
-               },
-       { ATF_POINTER, 1, offsetof(struct PLMN_IdentityInfo, ranac),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RAN_AreaCode,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ranac"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, cellIdentity),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_CellIdentity,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellIdentity"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PLMN_IdentityInfo, cellReservedForOperatorUse),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_cellReservedForOperatorUse_7,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellReservedForOperatorUse"
-               },
-};
-static const int asn_MAP_PLMN_IdentityInfo_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_PLMN_IdentityInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PLMN_IdentityInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* trackingAreaCode */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ranac */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* cellIdentity */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* cellReservedForOperatorUse */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentityInfo_specs_1 = {
-       sizeof(struct PLMN_IdentityInfo),
-       offsetof(struct PLMN_IdentityInfo, _asn_ctx),
-       asn_MAP_PLMN_IdentityInfo_tag2el_1,
-       5,      /* Count of tags in the map */
-       asn_MAP_PLMN_IdentityInfo_oms_1,        /* Optional members */
-       2, 0,   /* Root/Additions */
-       5,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfo = {
-       "PLMN-IdentityInfo",
-       "PLMN-IdentityInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PLMN_IdentityInfo_tags_1,
-       sizeof(asn_DEF_PLMN_IdentityInfo_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentityInfo_tags_1[0]), /* 1 */
-       asn_DEF_PLMN_IdentityInfo_tags_1,       /* Same as above */
-       sizeof(asn_DEF_PLMN_IdentityInfo_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentityInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PLMN_IdentityInfo_1,
-       5,      /* Elements count */
-       &asn_SPC_PLMN_IdentityInfo_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentityInfo.h b/src/codec_utils/SYSINFO/PLMN-IdentityInfo.h
deleted file mode 100644 (file)
index 36d891e..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PLMN_IdentityInfo_H_
-#define        _PLMN_IdentityInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "TrackingAreaCode.h"
-#include "RAN-AreaCode.h"
-#include "CellIdentity.h"
-#include <NativeEnumerated.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PLMN_IdentityInfo__cellReservedForOperatorUse {
-       PLMN_IdentityInfo__cellReservedForOperatorUse_reserved  = 0,
-       PLMN_IdentityInfo__cellReservedForOperatorUse_notReserved       = 1
-} e_PLMN_IdentityInfo__cellReservedForOperatorUse;
-
-/* Forward declarations */
-struct PLMN_IdentitY;
-
-/* PLMN-IdentityInfo */
-typedef struct PLMN_IdentityInfo {
-       struct PLMN_IdentityInfo__plmn_IdentityList {
-               A_SEQUENCE_OF(struct PLMN_IdentitY) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } plmn_IdentityList;
-       TrackingAreaCode_t      *trackingAreaCode;      /* OPTIONAL */
-       RAN_AreaCode_t  *ranac; /* OPTIONAL */
-       CellIdentity_t   cellIdentity;
-       long     cellReservedForOperatorUse;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PLMN_IdentityInfo_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_cellReservedForOperatorUse_7;  // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_PLMN_IdentityInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_PLMN_IdentityInfo_1[5];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PLMN_IdentityInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentityInfoList.c b/src/codec_utils/SYSINFO/PLMN-IdentityInfoList.c
deleted file mode 100644 (file)
index 6fe4c53..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PLMN-IdentityInfoList.h"
-
-#include "PLMN-IdentityInfo.h"
-static asn_oer_constraints_t asn_OER_type_PLMN_IdentityInfoList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..12)) */};
-asn_per_constraints_t asn_PER_type_PLMN_IdentityInfoList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PLMN_IdentityInfoList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_PLMN_IdentityInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_PLMN_IdentityInfoList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityInfoList_specs_1 = {
-       sizeof(struct PLMN_IdentityInfoList),
-       offsetof(struct PLMN_IdentityInfoList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfoList = {
-       "PLMN-IdentityInfoList",
-       "PLMN-IdentityInfoList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_PLMN_IdentityInfoList_tags_1,
-       sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1[0]), /* 1 */
-       asn_DEF_PLMN_IdentityInfoList_tags_1,   /* Same as above */
-       sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1)
-               /sizeof(asn_DEF_PLMN_IdentityInfoList_tags_1[0]), /* 1 */
-       { &asn_OER_type_PLMN_IdentityInfoList_constr_1, &asn_PER_type_PLMN_IdentityInfoList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_PLMN_IdentityInfoList_1,
-       1,      /* Single element */
-       &asn_SPC_PLMN_IdentityInfoList_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PLMN-IdentityInfoList.h b/src/codec_utils/SYSINFO/PLMN-IdentityInfoList.h
deleted file mode 100644 (file)
index 8018426..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PLMN_IdentityInfoList_H_
-#define        _PLMN_IdentityInfoList_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 PLMN_IdentityInfo;
-
-/* PLMN-IdentityInfoList */
-typedef struct PLMN_IdentityInfoList {
-       A_SEQUENCE_OF(struct PLMN_IdentityInfo) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PLMN_IdentityInfoList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PLMN_IdentityInfoList;
-extern asn_SET_OF_specifics_t asn_SPC_PLMN_IdentityInfoList_specs_1;
-extern asn_TYPE_member_t asn_MBR_PLMN_IdentityInfoList_1[1];
-extern asn_per_constraints_t asn_PER_type_PLMN_IdentityInfoList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PLMN_IdentityInfoList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PUCCH-ConfigCommon.c b/src/codec_utils/SYSINFO/PUCCH-ConfigCommon.c
deleted file mode 100644 (file)
index 858effd..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PUCCH-ConfigCommon.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_pucch_ResourceCommon_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 >= 0 && 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_hoppingId_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 >= 0 && value <= 1023)) {
-               /* 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_p0_nominal_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 >= -202 && value <= 24)) {
-               /* 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_pucch_GroupHopping_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_pucch_GroupHopping_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_pucch_ResourceCommon_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_pucch_ResourceCommon_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_hoppingId_constr_7 CC_NOTUSED = {
-       { 2, 1 }        /* (0..1023) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_hoppingId_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  0,  1023 }   /* (0..1023) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_p0_nominal_constr_8 CC_NOTUSED = {
-       { 2, 0 }        /* (-202..24) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_p0_nominal_constr_8 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_pucch_GroupHopping_value2enum_3[] = {
-       { 0,    7,      "neither" },
-       { 1,    6,      "enable" },
-       { 2,    7,      "disable" }
-};
-static const unsigned int asn_MAP_pucch_GroupHopping_enum2value_3[] = {
-       2,      /* disable(2) */
-       1,      /* enable(1) */
-       0       /* neither(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_pucch_GroupHopping_specs_3 = {
-       asn_MAP_pucch_GroupHopping_value2enum_3,        /* "tag" => N; sorted by tag */
-       asn_MAP_pucch_GroupHopping_enum2value_3,        /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_pucch_GroupHopping_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_pucch_GroupHopping_3 = {
-       "pucch-GroupHopping",
-       "pucch-GroupHopping",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_pucch_GroupHopping_tags_3,
-       sizeof(asn_DEF_pucch_GroupHopping_tags_3)
-               /sizeof(asn_DEF_pucch_GroupHopping_tags_3[0]) - 1, /* 1 */
-       asn_DEF_pucch_GroupHopping_tags_3,      /* Same as above */
-       sizeof(asn_DEF_pucch_GroupHopping_tags_3)
-               /sizeof(asn_DEF_pucch_GroupHopping_tags_3[0]), /* 2 */
-       { &asn_OER_type_pucch_GroupHopping_constr_3, &asn_PER_type_pucch_GroupHopping_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_pucch_GroupHopping_specs_3     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PUCCH_ConfigCommon_1[] = {
-       { ATF_POINTER, 1, offsetof(struct PUCCH_ConfigCommon, pucch_ResourceCommon),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_pucch_ResourceCommon_constr_2, &asn_PER_memb_pucch_ResourceCommon_constr_2,  memb_pucch_ResourceCommon_constraint_1 },
-               0, 0, /* No default value */
-               "pucch-ResourceCommon"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PUCCH_ConfigCommon, pucch_GroupHopping),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_pucch_GroupHopping_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pucch-GroupHopping"
-               },
-       { ATF_POINTER, 2, offsetof(struct PUCCH_ConfigCommon, hoppingId),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_hoppingId_constr_7, &asn_PER_memb_hoppingId_constr_7,  memb_hoppingId_constraint_1 },
-               0, 0, /* No default value */
-               "hoppingId"
-               },
-       { ATF_POINTER, 1, offsetof(struct PUCCH_ConfigCommon, p0_nominal),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_p0_nominal_constr_8, &asn_PER_memb_p0_nominal_constr_8,  memb_p0_nominal_constraint_1 },
-               0, 0, /* No default value */
-               "p0-nominal"
-               },
-};
-static const int asn_MAP_PUCCH_ConfigCommon_oms_1[] = { 0, 2, 3 };
-static const ber_tlv_tag_t asn_DEF_PUCCH_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PUCCH_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* pucch-ResourceCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pucch-GroupHopping */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* hoppingId */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* p0-nominal */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ConfigCommon_specs_1 = {
-       sizeof(struct PUCCH_ConfigCommon),
-       offsetof(struct PUCCH_ConfigCommon, _asn_ctx),
-       asn_MAP_PUCCH_ConfigCommon_tag2el_1,
-       4,      /* Count of tags in the map */
-       asn_MAP_PUCCH_ConfigCommon_oms_1,       /* Optional members */
-       3, 0,   /* Root/Additions */
-       4,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PUCCH_ConfigCommon = {
-       "PUCCH-ConfigCommon",
-       "PUCCH-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PUCCH_ConfigCommon_tags_1,
-       sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_PUCCH_ConfigCommon_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PUCCH_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PUCCH_ConfigCommon_1,
-       4,      /* Elements count */
-       &asn_SPC_PUCCH_ConfigCommon_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PUCCH-ConfigCommon.h b/src/codec_utils/SYSINFO/PUCCH-ConfigCommon.h
deleted file mode 100644 (file)
index 64d9f8a..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PUCCH_ConfigCommon_H_
-#define        _PUCCH_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PUCCH_ConfigCommon__pucch_GroupHopping {
-       PUCCH_ConfigCommon__pucch_GroupHopping_neither  = 0,
-       PUCCH_ConfigCommon__pucch_GroupHopping_enable   = 1,
-       PUCCH_ConfigCommon__pucch_GroupHopping_disable  = 2
-} e_PUCCH_ConfigCommon__pucch_GroupHopping;
-
-/* PUCCH-ConfigCommon */
-typedef struct PUCCH_ConfigCommon {
-       long    *pucch_ResourceCommon;  /* OPTIONAL */
-       long     pucch_GroupHopping;
-       long    *hoppingId;     /* OPTIONAL */
-       long    *p0_nominal;    /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PUCCH_ConfigCommon_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_pucch_GroupHopping_3;  // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PUCCH_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_PUCCH_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_PUCCH_ConfigCommon_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PUCCH_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PUSCH-ConfigCommon.c b/src/codec_utils/SYSINFO/PUSCH-ConfigCommon.c
deleted file mode 100644 (file)
index d8a2b36..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PUSCH-ConfigCommon.h"
-
-#include "PUSCH-TimeDomainResourceAllocationList.h"
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_msg3_DeltaPreamble_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 <= 6)) {
-               /* 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_p0_NominalWithGrant_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 >= -202 && value <= 24)) {
-               /* 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_groupHoppingEnabledTransformPrecoding_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_groupHoppingEnabledTransformPrecoding_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_msg3_DeltaPreamble_constr_5 CC_NOTUSED = {
-       { 1, 0 }        /* (-1..6) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_msg3_DeltaPreamble_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3, -1,  6 }        /* (-1..6) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_p0_NominalWithGrant_constr_6 CC_NOTUSED = {
-       { 2, 0 }        /* (-202..24) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_p0_NominalWithGrant_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8, -202,  24 }     /* (-202..24) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_groupHoppingEnabledTransformPrecoding_value2enum_2[] = {
-       { 0,    7,      "enabled" }
-};
-static const unsigned int asn_MAP_groupHoppingEnabledTransformPrecoding_enum2value_2[] = {
-       0       /* enabled(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_groupHoppingEnabledTransformPrecoding_specs_2 = {
-       asn_MAP_groupHoppingEnabledTransformPrecoding_value2enum_2,     /* "tag" => N; sorted by tag */
-       asn_MAP_groupHoppingEnabledTransformPrecoding_enum2value_2,     /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_groupHoppingEnabledTransformPrecoding_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_groupHoppingEnabledTransformPrecoding_2 = {
-       "groupHoppingEnabledTransformPrecoding",
-       "groupHoppingEnabledTransformPrecoding",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2,
-       sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2)
-               /sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2[0]) - 1, /* 1 */
-       asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2,   /* Same as above */
-       sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2)
-               /sizeof(asn_DEF_groupHoppingEnabledTransformPrecoding_tags_2[0]), /* 2 */
-       { &asn_OER_type_groupHoppingEnabledTransformPrecoding_constr_2, &asn_PER_type_groupHoppingEnabledTransformPrecoding_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_groupHoppingEnabledTransformPrecoding_specs_2  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PUSCH_ConfigCommon_1[] = {
-       { ATF_POINTER, 4, offsetof(struct PUSCH_ConfigCommon, groupHoppingEnabledTransformPrecoding),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_groupHoppingEnabledTransformPrecoding_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "groupHoppingEnabledTransformPrecoding"
-               },
-       { ATF_POINTER, 3, offsetof(struct PUSCH_ConfigCommon, pusch_TimeDomainAllocationList),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_PUSCH_TimeDomainResourceAllocationList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pusch-TimeDomainAllocationList"
-               },
-       { ATF_POINTER, 2, offsetof(struct PUSCH_ConfigCommon, msg3_DeltaPreamble),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_msg3_DeltaPreamble_constr_5, &asn_PER_memb_msg3_DeltaPreamble_constr_5,  memb_msg3_DeltaPreamble_constraint_1 },
-               0, 0, /* No default value */
-               "msg3-DeltaPreamble"
-               },
-       { ATF_POINTER, 1, offsetof(struct PUSCH_ConfigCommon, p0_NominalWithGrant),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_p0_NominalWithGrant_constr_6, &asn_PER_memb_p0_NominalWithGrant_constr_6,  memb_p0_NominalWithGrant_constraint_1 },
-               0, 0, /* No default value */
-               "p0-NominalWithGrant"
-               },
-};
-static const int asn_MAP_PUSCH_ConfigCommon_oms_1[] = { 0, 1, 2, 3 };
-static const ber_tlv_tag_t asn_DEF_PUSCH_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PUSCH_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* groupHoppingEnabledTransformPrecoding */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pusch-TimeDomainAllocationList */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msg3-DeltaPreamble */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* p0-NominalWithGrant */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ConfigCommon_specs_1 = {
-       sizeof(struct PUSCH_ConfigCommon),
-       offsetof(struct PUSCH_ConfigCommon, _asn_ctx),
-       asn_MAP_PUSCH_ConfigCommon_tag2el_1,
-       4,      /* Count of tags in the map */
-       asn_MAP_PUSCH_ConfigCommon_oms_1,       /* Optional members */
-       4, 0,   /* Root/Additions */
-       4,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PUSCH_ConfigCommon = {
-       "PUSCH-ConfigCommon",
-       "PUSCH-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PUSCH_ConfigCommon_tags_1,
-       sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_PUSCH_ConfigCommon_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_PUSCH_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PUSCH_ConfigCommon_1,
-       4,      /* Elements count */
-       &asn_SPC_PUSCH_ConfigCommon_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PUSCH-ConfigCommon.h b/src/codec_utils/SYSINFO/PUSCH-ConfigCommon.h
deleted file mode 100644 (file)
index f7dca4e..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PUSCH_ConfigCommon_H_
-#define        _PUSCH_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding {
-       PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding_enabled       = 0
-} e_PUSCH_ConfigCommon__groupHoppingEnabledTransformPrecoding;
-
-/* Forward declarations */
-struct PUSCH_TimeDomainResourceAllocationList;
-
-/* PUSCH-ConfigCommon */
-typedef struct PUSCH_ConfigCommon {
-       long    *groupHoppingEnabledTransformPrecoding; /* OPTIONAL */
-       struct PUSCH_TimeDomainResourceAllocationList   *pusch_TimeDomainAllocationList;        /* OPTIONAL */
-       long    *msg3_DeltaPreamble;    /* OPTIONAL */
-       long    *p0_NominalWithGrant;   /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PUSCH_ConfigCommon_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_groupHoppingEnabledTransformPrecoding_2;       // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PUSCH_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_PUSCH_ConfigCommon_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PUSCH_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.c b/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.c
deleted file mode 100644 (file)
index 7bc060f..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PUSCH-TimeDomainResourceAllocation.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_k2_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 >= 0 && value <= 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 int
-memb_startSymbolAndLength_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 >= 0 && value <= 127)) {
-               /* 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_mappingType_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_mappingType_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_k2_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (0..32) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_k2_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  0,  32 }       /* (0..32) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
-       { 1, 1 }        /* (0..127) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_startSymbolAndLength_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_mappingType_value2enum_3[] = {
-       { 0,    5,      "typeA" },
-       { 1,    5,      "typeB" }
-};
-static const unsigned int asn_MAP_mappingType_enum2value_3[] = {
-       0,      /* typeA(0) */
-       1       /* typeB(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_mappingType_specs_3 = {
-       asn_MAP_mappingType_value2enum_3,       /* "tag" => N; sorted by tag */
-       asn_MAP_mappingType_enum2value_3,       /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_mappingType_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_mappingType_3 = {
-       "mappingType",
-       "mappingType",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_mappingType_tags_3,
-       sizeof(asn_DEF_mappingType_tags_3)
-               /sizeof(asn_DEF_mappingType_tags_3[0]) - 1, /* 1 */
-       asn_DEF_mappingType_tags_3,     /* Same as above */
-       sizeof(asn_DEF_mappingType_tags_3)
-               /sizeof(asn_DEF_mappingType_tags_3[0]), /* 2 */
-       { &asn_OER_type_mappingType_constr_3, &asn_PER_type_mappingType_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_mappingType_specs_3    /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocation_1[] = {
-       { ATF_POINTER, 1, offsetof(struct PUSCH_TimeDomainResourceAllocation, k2),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_k2_constr_2, &asn_PER_memb_k2_constr_2,  memb_k2_constraint_1 },
-               0, 0, /* No default value */
-               "k2"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_TimeDomainResourceAllocation, mappingType),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_mappingType_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "mappingType"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct PUSCH_TimeDomainResourceAllocation, startSymbolAndLength),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_startSymbolAndLength_constr_6, &asn_PER_memb_startSymbolAndLength_constr_6,  memb_startSymbolAndLength_constraint_1 },
-               0, 0, /* No default value */
-               "startSymbolAndLength"
-               },
-};
-static const int asn_MAP_PUSCH_TimeDomainResourceAllocation_oms_1[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_PUSCH_TimeDomainResourceAllocation_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* k2 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* mappingType */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* startSymbolAndLength */
-};
-asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1 = {
-       sizeof(struct PUSCH_TimeDomainResourceAllocation),
-       offsetof(struct PUSCH_TimeDomainResourceAllocation, _asn_ctx),
-       asn_MAP_PUSCH_TimeDomainResourceAllocation_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_PUSCH_TimeDomainResourceAllocation_oms_1,       /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocation = {
-       "PUSCH-TimeDomainResourceAllocation",
-       "PUSCH-TimeDomainResourceAllocation",
-       &asn_OP_SEQUENCE,
-       asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1,
-       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1)
-               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
-       asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1,      /* Same as above */
-       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1)
-               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocation_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_PUSCH_TimeDomainResourceAllocation_1,
-       3,      /* Elements count */
-       &asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.h b/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocation.h
deleted file mode 100644 (file)
index 19e2d38..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PUSCH_TimeDomainResourceAllocation_H_
-#define        _PUSCH_TimeDomainResourceAllocation_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PUSCH_TimeDomainResourceAllocation__mappingType {
-       PUSCH_TimeDomainResourceAllocation__mappingType_typeA   = 0,
-       PUSCH_TimeDomainResourceAllocation__mappingType_typeB   = 1
-} e_PUSCH_TimeDomainResourceAllocation__mappingType;
-
-/* PUSCH-TimeDomainResourceAllocation */
-typedef struct PUSCH_TimeDomainResourceAllocation {
-       long    *k2;    /* OPTIONAL */
-       long     mappingType;
-       long     startSymbolAndLength;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PUSCH_TimeDomainResourceAllocation_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_mappingType_3; // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocation;
-extern asn_SEQUENCE_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocation_specs_1;
-extern asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocation_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PUSCH_TimeDomainResourceAllocation_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.c b/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.c
deleted file mode 100644 (file)
index df0ce05..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PUSCH-TimeDomainResourceAllocationList.h"
-
-#include "PUSCH-TimeDomainResourceAllocation.h"
-static asn_oer_constraints_t asn_OER_type_PUSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..16)) */};
-asn_per_constraints_t asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (SIZE(1..16)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocationList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_PUSCH_TimeDomainResourceAllocation,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1 = {
-       sizeof(struct PUSCH_TimeDomainResourceAllocationList),
-       offsetof(struct PUSCH_TimeDomainResourceAllocationList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocationList = {
-       "PUSCH-TimeDomainResourceAllocationList",
-       "PUSCH-TimeDomainResourceAllocationList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1,
-       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1)
-               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
-       asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1,  /* Same as above */
-       sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1)
-               /sizeof(asn_DEF_PUSCH_TimeDomainResourceAllocationList_tags_1[0]), /* 1 */
-       { &asn_OER_type_PUSCH_TimeDomainResourceAllocationList_constr_1, &asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_PUSCH_TimeDomainResourceAllocationList_1,
-       1,      /* Single element */
-       &asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.h b/src/codec_utils/SYSINFO/PUSCH-TimeDomainResourceAllocationList.h
deleted file mode 100644 (file)
index 2c77143..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PUSCH_TimeDomainResourceAllocationList_H_
-#define        _PUSCH_TimeDomainResourceAllocationList_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 PUSCH_TimeDomainResourceAllocation;
-
-/* PUSCH-TimeDomainResourceAllocationList */
-typedef struct PUSCH_TimeDomainResourceAllocationList {
-       A_SEQUENCE_OF(struct PUSCH_TimeDomainResourceAllocation) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} PUSCH_TimeDomainResourceAllocationList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_PUSCH_TimeDomainResourceAllocationList;
-extern asn_SET_OF_specifics_t asn_SPC_PUSCH_TimeDomainResourceAllocationList_specs_1;
-extern asn_TYPE_member_t asn_MBR_PUSCH_TimeDomainResourceAllocationList_1[1];
-extern asn_per_constraints_t asn_PER_type_PUSCH_TimeDomainResourceAllocationList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PUSCH_TimeDomainResourceAllocationList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/PagingCycle.c b/src/codec_utils/SYSINFO/PagingCycle.c
deleted file mode 100644 (file)
index 36b5c92..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "PagingCycle.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_PagingCycle_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-asn_per_constraints_t asn_PER_type_PagingCycle_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_PagingCycle_value2enum_1[] = {
-       { 0,    4,      "rf32" },
-       { 1,    4,      "rf64" },
-       { 2,    5,      "rf128" },
-       { 3,    5,      "rf256" }
-};
-static const unsigned int asn_MAP_PagingCycle_enum2value_1[] = {
-       2,      /* rf128(2) */
-       3,      /* rf256(3) */
-       0,      /* rf32(0) */
-       1       /* rf64(1) */
-};
-const asn_INTEGER_specifics_t asn_SPC_PagingCycle_specs_1 = {
-       asn_MAP_PagingCycle_value2enum_1,       /* "tag" => N; sorted by tag */
-       asn_MAP_PagingCycle_enum2value_1,       /* N => "tag"; sorted by N */
-       4,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_PagingCycle_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_PagingCycle = {
-       "PagingCycle",
-       "PagingCycle",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_PagingCycle_tags_1,
-       sizeof(asn_DEF_PagingCycle_tags_1)
-               /sizeof(asn_DEF_PagingCycle_tags_1[0]), /* 1 */
-       asn_DEF_PagingCycle_tags_1,     /* Same as above */
-       sizeof(asn_DEF_PagingCycle_tags_1)
-               /sizeof(asn_DEF_PagingCycle_tags_1[0]), /* 1 */
-       { &asn_OER_type_PagingCycle_constr_1, &asn_PER_type_PagingCycle_constr_1, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_PagingCycle_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/PagingCycle.h b/src/codec_utils/SYSINFO/PagingCycle.h
deleted file mode 100644 (file)
index d67d683..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _PagingCycle_H_
-#define        _PagingCycle_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum PagingCycle {
-       PagingCycle_rf32        = 0,
-       PagingCycle_rf64        = 1,
-       PagingCycle_rf128       = 2,
-       PagingCycle_rf256       = 3
-} e_PagingCycle;
-
-/* PagingCycle */
-typedef long    PagingCycle_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_PagingCycle_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_PagingCycle;
-extern const asn_INTEGER_specifics_t asn_SPC_PagingCycle_specs_1;
-asn_struct_free_f PagingCycle_free;
-asn_struct_print_f PagingCycle_print;
-asn_constr_check_f PagingCycle_constraint;
-ber_type_decoder_f PagingCycle_decode_ber;
-der_type_encoder_f PagingCycle_encode_der;
-xer_type_decoder_f PagingCycle_decode_xer;
-xer_type_encoder_f PagingCycle_encode_xer;
-oer_type_decoder_f PagingCycle_decode_oer;
-oer_type_encoder_f PagingCycle_encode_oer;
-per_type_decoder_f PagingCycle_decode_uper;
-per_type_encoder_f PagingCycle_encode_uper;
-per_type_decoder_f PagingCycle_decode_aper;
-per_type_encoder_f PagingCycle_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _PagingCycle_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/Q-QualMin.c b/src/codec_utils/SYSINFO/Q-QualMin.c
deleted file mode 100644 (file)
index 4b8f147..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "Q-QualMin.h"
-
-int
-Q_QualMin_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 >= -43 && value <= -12)) {
-               /* 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_Q_QualMin_constr_1 CC_NOTUSED = {
-       { 1, 0 }        /* (-43..-12) */,
-       -1};
-asn_per_constraints_t asn_PER_type_Q_QualMin_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       5,  5, -43, -12 }      /* (-43..-12) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_Q_QualMin_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_Q_QualMin = {
-       "Q-QualMin",
-       "Q-QualMin",
-       &asn_OP_NativeInteger,
-       asn_DEF_Q_QualMin_tags_1,
-       sizeof(asn_DEF_Q_QualMin_tags_1)
-               /sizeof(asn_DEF_Q_QualMin_tags_1[0]), /* 1 */
-       asn_DEF_Q_QualMin_tags_1,       /* Same as above */
-       sizeof(asn_DEF_Q_QualMin_tags_1)
-               /sizeof(asn_DEF_Q_QualMin_tags_1[0]), /* 1 */
-       { &asn_OER_type_Q_QualMin_constr_1, &asn_PER_type_Q_QualMin_constr_1, Q_QualMin_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/Q-QualMin.h b/src/codec_utils/SYSINFO/Q-QualMin.h
deleted file mode 100644 (file)
index b7ef2a4..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _Q_QualMin_H_
-#define        _Q_QualMin_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Q-QualMin */
-typedef long    Q_QualMin_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_Q_QualMin_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_Q_QualMin;
-asn_struct_free_f Q_QualMin_free;
-asn_struct_print_f Q_QualMin_print;
-asn_constr_check_f Q_QualMin_constraint;
-ber_type_decoder_f Q_QualMin_decode_ber;
-der_type_encoder_f Q_QualMin_encode_der;
-xer_type_decoder_f Q_QualMin_decode_xer;
-xer_type_encoder_f Q_QualMin_encode_xer;
-oer_type_decoder_f Q_QualMin_decode_oer;
-oer_type_encoder_f Q_QualMin_encode_oer;
-per_type_decoder_f Q_QualMin_decode_uper;
-per_type_encoder_f Q_QualMin_encode_uper;
-per_type_decoder_f Q_QualMin_decode_aper;
-per_type_encoder_f Q_QualMin_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _Q_QualMin_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/Q-RxLevMin.c b/src/codec_utils/SYSINFO/Q-RxLevMin.c
deleted file mode 100644 (file)
index 719b8eb..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "Q-RxLevMin.h"
-
-int
-Q_RxLevMin_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 >= -70 && value <= -22)) {
-               /* 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_Q_RxLevMin_constr_1 CC_NOTUSED = {
-       { 1, 0 }        /* (-70..-22) */,
-       -1};
-asn_per_constraints_t asn_PER_type_Q_RxLevMin_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6, -70, -22 }      /* (-70..-22) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_Q_RxLevMin_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_Q_RxLevMin = {
-       "Q-RxLevMin",
-       "Q-RxLevMin",
-       &asn_OP_NativeInteger,
-       asn_DEF_Q_RxLevMin_tags_1,
-       sizeof(asn_DEF_Q_RxLevMin_tags_1)
-               /sizeof(asn_DEF_Q_RxLevMin_tags_1[0]), /* 1 */
-       asn_DEF_Q_RxLevMin_tags_1,      /* Same as above */
-       sizeof(asn_DEF_Q_RxLevMin_tags_1)
-               /sizeof(asn_DEF_Q_RxLevMin_tags_1[0]), /* 1 */
-       { &asn_OER_type_Q_RxLevMin_constr_1, &asn_PER_type_Q_RxLevMin_constr_1, Q_RxLevMin_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/Q-RxLevMin.h b/src/codec_utils/SYSINFO/Q-RxLevMin.h
deleted file mode 100644 (file)
index 684c89c..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _Q_RxLevMin_H_
-#define        _Q_RxLevMin_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Q-RxLevMin */
-typedef long    Q_RxLevMin_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_Q_RxLevMin_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_Q_RxLevMin;
-asn_struct_free_f Q_RxLevMin_free;
-asn_struct_print_f Q_RxLevMin_print;
-asn_constr_check_f Q_RxLevMin_constraint;
-ber_type_decoder_f Q_RxLevMin_decode_ber;
-der_type_encoder_f Q_RxLevMin_encode_der;
-xer_type_decoder_f Q_RxLevMin_decode_xer;
-xer_type_encoder_f Q_RxLevMin_encode_xer;
-oer_type_decoder_f Q_RxLevMin_decode_oer;
-oer_type_encoder_f Q_RxLevMin_encode_oer;
-per_type_decoder_f Q_RxLevMin_decode_uper;
-per_type_encoder_f Q_RxLevMin_encode_uper;
-per_type_decoder_f Q_RxLevMin_decode_aper;
-per_type_encoder_f Q_RxLevMin_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _Q_RxLevMin_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/RACH-ConfigCommon.c b/src/codec_utils/SYSINFO/RACH-ConfigCommon.c
deleted file mode 100644 (file)
index b0c23f2..0000000
+++ /dev/null
@@ -1,1286 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "RACH-ConfigCommon.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.
- */
-static int
-memb_four_constraint_4(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 <= 16)) {
-               /* 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_eight_constraint_4(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 <= 8)) {
-               /* 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_sixteen_constraint_4(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 <= 4)) {
-               /* 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_numberOfRA_PreamblesGroupA_constraint_85(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 <= 64)) {
-               /* 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_l839_constraint_124(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 <= 837)) {
-               /* 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_l139_constraint_124(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 <= 137)) {
-               /* 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_totalNumberOfRA_Preambles_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 <= 63)) {
-               /* 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_oneEighth_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_oneEighth_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_oneFourth_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_oneFourth_constr_22 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_oneHalf_constr_39 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_oneHalf_constr_39 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_one_constr_56 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_one_constr_56 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_two_constr_73 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_two_constr_73 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_four_constr_82 CC_NOTUSED = {
-       { 1, 1 }        /* (1..16) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_four_constr_82 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  1,  16 }       /* (1..16) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_eight_constr_83 CC_NOTUSED = {
-       { 1, 1 }        /* (1..8) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_eight_constr_83 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sixteen_constr_84 CC_NOTUSED = {
-       { 1, 1 }        /* (1..4) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sixteen_constr_84 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  1,  4 }        /* (1..4) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ra_Msg3SizeGroupA_constr_86 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ra_Msg3SizeGroupA_constr_86 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_messagePowerOffsetGroupB_constr_103 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_messagePowerOffsetGroupB_constr_103 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_numberOfRA_PreamblesGroupA_constr_112 CC_NOTUSED = {
-       { 1, 1 }        /* (1..64) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_numberOfRA_PreamblesGroupA_constr_112 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  1,  64 }       /* (1..64) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ra_ContentionResolutionTimer_constr_113 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ra_ContentionResolutionTimer_constr_113 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_l839_constr_125 CC_NOTUSED = {
-       { 2, 1 }        /* (0..837) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_l839_constr_125 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  0,  837 }    /* (0..837) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_l139_constr_126 CC_NOTUSED = {
-       { 1, 1 }        /* (0..137) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_l139_constr_126 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8,  0,  137 }      /* (0..137) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_prach_RootSequenceIndex_constr_124 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_prach_RootSequenceIndex_constr_124 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_restrictedSetConfig_constr_128 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_restrictedSetConfig_constr_128 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_msg3_transformPrecoder_constr_132 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_msg3_transformPrecoder_constr_132 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_totalNumberOfRA_Preambles_constr_3 CC_NOTUSED = {
-       { 1, 1 }        /* (1..63) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_totalNumberOfRA_Preambles_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (1..63) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_oneEighth_value2enum_5[] = {
-       { 0,    2,      "n4" },
-       { 1,    2,      "n8" },
-       { 2,    3,      "n12" },
-       { 3,    3,      "n16" },
-       { 4,    3,      "n20" },
-       { 5,    3,      "n24" },
-       { 6,    3,      "n28" },
-       { 7,    3,      "n32" },
-       { 8,    3,      "n36" },
-       { 9,    3,      "n40" },
-       { 10,   3,      "n44" },
-       { 11,   3,      "n48" },
-       { 12,   3,      "n52" },
-       { 13,   3,      "n56" },
-       { 14,   3,      "n60" },
-       { 15,   3,      "n64" }
-};
-static const unsigned int asn_MAP_oneEighth_enum2value_5[] = {
-       2,      /* n12(2) */
-       3,      /* n16(3) */
-       4,      /* n20(4) */
-       5,      /* n24(5) */
-       6,      /* n28(6) */
-       7,      /* n32(7) */
-       8,      /* n36(8) */
-       0,      /* n4(0) */
-       9,      /* n40(9) */
-       10,     /* n44(10) */
-       11,     /* n48(11) */
-       12,     /* n52(12) */
-       13,     /* n56(13) */
-       14,     /* n60(14) */
-       15,     /* n64(15) */
-       1       /* n8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_oneEighth_specs_5 = {
-       asn_MAP_oneEighth_value2enum_5, /* "tag" => N; sorted by tag */
-       asn_MAP_oneEighth_enum2value_5, /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_oneEighth_tags_5[] = {
-       (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_oneEighth_5 = {
-       "oneEighth",
-       "oneEighth",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_oneEighth_tags_5,
-       sizeof(asn_DEF_oneEighth_tags_5)
-               /sizeof(asn_DEF_oneEighth_tags_5[0]) - 1, /* 1 */
-       asn_DEF_oneEighth_tags_5,       /* Same as above */
-       sizeof(asn_DEF_oneEighth_tags_5)
-               /sizeof(asn_DEF_oneEighth_tags_5[0]), /* 2 */
-       { &asn_OER_type_oneEighth_constr_5, &asn_PER_type_oneEighth_constr_5, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_oneEighth_specs_5      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_oneFourth_value2enum_22[] = {
-       { 0,    2,      "n4" },
-       { 1,    2,      "n8" },
-       { 2,    3,      "n12" },
-       { 3,    3,      "n16" },
-       { 4,    3,      "n20" },
-       { 5,    3,      "n24" },
-       { 6,    3,      "n28" },
-       { 7,    3,      "n32" },
-       { 8,    3,      "n36" },
-       { 9,    3,      "n40" },
-       { 10,   3,      "n44" },
-       { 11,   3,      "n48" },
-       { 12,   3,      "n52" },
-       { 13,   3,      "n56" },
-       { 14,   3,      "n60" },
-       { 15,   3,      "n64" }
-};
-static const unsigned int asn_MAP_oneFourth_enum2value_22[] = {
-       2,      /* n12(2) */
-       3,      /* n16(3) */
-       4,      /* n20(4) */
-       5,      /* n24(5) */
-       6,      /* n28(6) */
-       7,      /* n32(7) */
-       8,      /* n36(8) */
-       0,      /* n4(0) */
-       9,      /* n40(9) */
-       10,     /* n44(10) */
-       11,     /* n48(11) */
-       12,     /* n52(12) */
-       13,     /* n56(13) */
-       14,     /* n60(14) */
-       15,     /* n64(15) */
-       1       /* n8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_oneFourth_specs_22 = {
-       asn_MAP_oneFourth_value2enum_22,        /* "tag" => N; sorted by tag */
-       asn_MAP_oneFourth_enum2value_22,        /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_oneFourth_tags_22[] = {
-       (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_oneFourth_22 = {
-       "oneFourth",
-       "oneFourth",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_oneFourth_tags_22,
-       sizeof(asn_DEF_oneFourth_tags_22)
-               /sizeof(asn_DEF_oneFourth_tags_22[0]) - 1, /* 1 */
-       asn_DEF_oneFourth_tags_22,      /* Same as above */
-       sizeof(asn_DEF_oneFourth_tags_22)
-               /sizeof(asn_DEF_oneFourth_tags_22[0]), /* 2 */
-       { &asn_OER_type_oneFourth_constr_22, &asn_PER_type_oneFourth_constr_22, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_oneFourth_specs_22     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_oneHalf_value2enum_39[] = {
-       { 0,    2,      "n4" },
-       { 1,    2,      "n8" },
-       { 2,    3,      "n12" },
-       { 3,    3,      "n16" },
-       { 4,    3,      "n20" },
-       { 5,    3,      "n24" },
-       { 6,    3,      "n28" },
-       { 7,    3,      "n32" },
-       { 8,    3,      "n36" },
-       { 9,    3,      "n40" },
-       { 10,   3,      "n44" },
-       { 11,   3,      "n48" },
-       { 12,   3,      "n52" },
-       { 13,   3,      "n56" },
-       { 14,   3,      "n60" },
-       { 15,   3,      "n64" }
-};
-static const unsigned int asn_MAP_oneHalf_enum2value_39[] = {
-       2,      /* n12(2) */
-       3,      /* n16(3) */
-       4,      /* n20(4) */
-       5,      /* n24(5) */
-       6,      /* n28(6) */
-       7,      /* n32(7) */
-       8,      /* n36(8) */
-       0,      /* n4(0) */
-       9,      /* n40(9) */
-       10,     /* n44(10) */
-       11,     /* n48(11) */
-       12,     /* n52(12) */
-       13,     /* n56(13) */
-       14,     /* n60(14) */
-       15,     /* n64(15) */
-       1       /* n8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_oneHalf_specs_39 = {
-       asn_MAP_oneHalf_value2enum_39,  /* "tag" => N; sorted by tag */
-       asn_MAP_oneHalf_enum2value_39,  /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_oneHalf_tags_39[] = {
-       (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_oneHalf_39 = {
-       "oneHalf",
-       "oneHalf",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_oneHalf_tags_39,
-       sizeof(asn_DEF_oneHalf_tags_39)
-               /sizeof(asn_DEF_oneHalf_tags_39[0]) - 1, /* 1 */
-       asn_DEF_oneHalf_tags_39,        /* Same as above */
-       sizeof(asn_DEF_oneHalf_tags_39)
-               /sizeof(asn_DEF_oneHalf_tags_39[0]), /* 2 */
-       { &asn_OER_type_oneHalf_constr_39, &asn_PER_type_oneHalf_constr_39, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_oneHalf_specs_39       /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_one_value2enum_56[] = {
-       { 0,    2,      "n4" },
-       { 1,    2,      "n8" },
-       { 2,    3,      "n12" },
-       { 3,    3,      "n16" },
-       { 4,    3,      "n20" },
-       { 5,    3,      "n24" },
-       { 6,    3,      "n28" },
-       { 7,    3,      "n32" },
-       { 8,    3,      "n36" },
-       { 9,    3,      "n40" },
-       { 10,   3,      "n44" },
-       { 11,   3,      "n48" },
-       { 12,   3,      "n52" },
-       { 13,   3,      "n56" },
-       { 14,   3,      "n60" },
-       { 15,   3,      "n64" }
-};
-static const unsigned int asn_MAP_one_enum2value_56[] = {
-       2,      /* n12(2) */
-       3,      /* n16(3) */
-       4,      /* n20(4) */
-       5,      /* n24(5) */
-       6,      /* n28(6) */
-       7,      /* n32(7) */
-       8,      /* n36(8) */
-       0,      /* n4(0) */
-       9,      /* n40(9) */
-       10,     /* n44(10) */
-       11,     /* n48(11) */
-       12,     /* n52(12) */
-       13,     /* n56(13) */
-       14,     /* n60(14) */
-       15,     /* n64(15) */
-       1       /* n8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_one_specs_56 = {
-       asn_MAP_one_value2enum_56,      /* "tag" => N; sorted by tag */
-       asn_MAP_one_enum2value_56,      /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_one_tags_56[] = {
-       (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_one_56 = {
-       "one",
-       "one",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_one_tags_56,
-       sizeof(asn_DEF_one_tags_56)
-               /sizeof(asn_DEF_one_tags_56[0]) - 1, /* 1 */
-       asn_DEF_one_tags_56,    /* Same as above */
-       sizeof(asn_DEF_one_tags_56)
-               /sizeof(asn_DEF_one_tags_56[0]), /* 2 */
-       { &asn_OER_type_one_constr_56, &asn_PER_type_one_constr_56, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_one_specs_56   /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_two_value2enum_73[] = {
-       { 0,    2,      "n4" },
-       { 1,    2,      "n8" },
-       { 2,    3,      "n12" },
-       { 3,    3,      "n16" },
-       { 4,    3,      "n20" },
-       { 5,    3,      "n24" },
-       { 6,    3,      "n28" },
-       { 7,    3,      "n32" }
-};
-static const unsigned int asn_MAP_two_enum2value_73[] = {
-       2,      /* n12(2) */
-       3,      /* n16(3) */
-       4,      /* n20(4) */
-       5,      /* n24(5) */
-       6,      /* n28(6) */
-       7,      /* n32(7) */
-       0,      /* n4(0) */
-       1       /* n8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_two_specs_73 = {
-       asn_MAP_two_value2enum_73,      /* "tag" => N; sorted by tag */
-       asn_MAP_two_enum2value_73,      /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_two_tags_73[] = {
-       (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_two_73 = {
-       "two",
-       "two",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_two_tags_73,
-       sizeof(asn_DEF_two_tags_73)
-               /sizeof(asn_DEF_two_tags_73[0]) - 1, /* 1 */
-       asn_DEF_two_tags_73,    /* Same as above */
-       sizeof(asn_DEF_two_tags_73)
-               /sizeof(asn_DEF_two_tags_73[0]), /* 2 */
-       { &asn_OER_type_two_constr_73, &asn_PER_type_two_constr_73, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_two_specs_73   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneEighth),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_oneEighth_5,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "oneEighth"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneFourth),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_oneFourth_22,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "oneFourth"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.oneHalf),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_oneHalf_39,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "oneHalf"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.one),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_one_56,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "one"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.two),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_two_73,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "two"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.four),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_four_constr_82, &asn_PER_memb_four_constr_82,  memb_four_constraint_4 },
-               0, 0, /* No default value */
-               "four"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.eight),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_eight_constr_83, &asn_PER_memb_eight_constr_83,  memb_eight_constraint_4 },
-               0, 0, /* No default value */
-               "eight"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, choice.sixteen),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sixteen_constr_84, &asn_PER_memb_sixteen_constr_84,  memb_sixteen_constraint_4 },
-               0, 0, /* No default value */
-               "sixteen"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_tag2el_4[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* oneEighth */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* oneFourth */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* oneHalf */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* one */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* two */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* four */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eight */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* sixteen */
-};
-static asn_CHOICE_specifics_t asn_SPC_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_specs_4 = {
-       sizeof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB),
-       offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, _asn_ctx),
-       offsetof(struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB, present),
-       sizeof(((struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB *)0)->present),
-       asn_MAP_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_tag2el_4,
-       8,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4 = {
-       "ssb-perRACH-OccasionAndCB-PreamblesPerSSB",
-       "ssb-perRACH-OccasionAndCB-PreamblesPerSSB",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4, &asn_PER_type_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_constr_4, CHOICE_constraint },
-       asn_MBR_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4,
-       8,      /* Elements count */
-       &asn_SPC_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_specs_4      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ra_Msg3SizeGroupA_value2enum_86[] = {
-       { 0,    3,      "b56" },
-       { 1,    4,      "b144" },
-       { 2,    4,      "b208" },
-       { 3,    4,      "b256" },
-       { 4,    4,      "b282" },
-       { 5,    4,      "b480" },
-       { 6,    4,      "b640" },
-       { 7,    4,      "b800" },
-       { 8,    5,      "b1000" },
-       { 9,    3,      "b72" },
-       { 10,   6,      "spare6" },
-       { 11,   6,      "spare5" },
-       { 12,   6,      "spare4" },
-       { 13,   6,      "spare3" },
-       { 14,   6,      "spare2" },
-       { 15,   6,      "spare1" }
-};
-static const unsigned int asn_MAP_ra_Msg3SizeGroupA_enum2value_86[] = {
-       8,      /* b1000(8) */
-       1,      /* b144(1) */
-       2,      /* b208(2) */
-       3,      /* b256(3) */
-       4,      /* b282(4) */
-       5,      /* b480(5) */
-       0,      /* b56(0) */
-       6,      /* b640(6) */
-       9,      /* b72(9) */
-       7,      /* b800(7) */
-       15,     /* spare1(15) */
-       14,     /* spare2(14) */
-       13,     /* spare3(13) */
-       12,     /* spare4(12) */
-       11,     /* spare5(11) */
-       10      /* spare6(10) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ra_Msg3SizeGroupA_specs_86 = {
-       asn_MAP_ra_Msg3SizeGroupA_value2enum_86,        /* "tag" => N; sorted by tag */
-       asn_MAP_ra_Msg3SizeGroupA_enum2value_86,        /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ra_Msg3SizeGroupA_tags_86[] = {
-       (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_ra_Msg3SizeGroupA_86 = {
-       "ra-Msg3SizeGroupA",
-       "ra-Msg3SizeGroupA",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ra_Msg3SizeGroupA_tags_86,
-       sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86)
-               /sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86[0]) - 1, /* 1 */
-       asn_DEF_ra_Msg3SizeGroupA_tags_86,      /* Same as above */
-       sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86)
-               /sizeof(asn_DEF_ra_Msg3SizeGroupA_tags_86[0]), /* 2 */
-       { &asn_OER_type_ra_Msg3SizeGroupA_constr_86, &asn_PER_type_ra_Msg3SizeGroupA_constr_86, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ra_Msg3SizeGroupA_specs_86     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_messagePowerOffsetGroupB_value2enum_103[] = {
-       { 0,    13,     "minusinfinity" },
-       { 1,    3,      "dB0" },
-       { 2,    3,      "dB5" },
-       { 3,    3,      "dB8" },
-       { 4,    4,      "dB10" },
-       { 5,    4,      "dB12" },
-       { 6,    4,      "dB15" },
-       { 7,    4,      "dB18" }
-};
-static const unsigned int asn_MAP_messagePowerOffsetGroupB_enum2value_103[] = {
-       1,      /* dB0(1) */
-       4,      /* dB10(4) */
-       5,      /* dB12(5) */
-       6,      /* dB15(6) */
-       7,      /* dB18(7) */
-       2,      /* dB5(2) */
-       3,      /* dB8(3) */
-       0       /* minusinfinity(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_messagePowerOffsetGroupB_specs_103 = {
-       asn_MAP_messagePowerOffsetGroupB_value2enum_103,        /* "tag" => N; sorted by tag */
-       asn_MAP_messagePowerOffsetGroupB_enum2value_103,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_messagePowerOffsetGroupB_tags_103[] = {
-       (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_messagePowerOffsetGroupB_103 = {
-       "messagePowerOffsetGroupB",
-       "messagePowerOffsetGroupB",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_messagePowerOffsetGroupB_tags_103,
-       sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103)
-               /sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103[0]) - 1, /* 1 */
-       asn_DEF_messagePowerOffsetGroupB_tags_103,      /* Same as above */
-       sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103)
-               /sizeof(asn_DEF_messagePowerOffsetGroupB_tags_103[0]), /* 2 */
-       { &asn_OER_type_messagePowerOffsetGroupB_constr_103, &asn_PER_type_messagePowerOffsetGroupB_constr_103, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_messagePowerOffsetGroupB_specs_103     /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_groupBconfigured_85[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, ra_Msg3SizeGroupA),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ra_Msg3SizeGroupA_86,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ra-Msg3SizeGroupA"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, messagePowerOffsetGroupB),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_messagePowerOffsetGroupB_103,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "messagePowerOffsetGroupB"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__groupBconfigured, numberOfRA_PreamblesGroupA),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_numberOfRA_PreamblesGroupA_constr_112, &asn_PER_memb_numberOfRA_PreamblesGroupA_constr_112,  memb_numberOfRA_PreamblesGroupA_constraint_85 },
-               0, 0, /* No default value */
-               "numberOfRA-PreamblesGroupA"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_groupBconfigured_tags_85[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_groupBconfigured_tag2el_85[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ra-Msg3SizeGroupA */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* messagePowerOffsetGroupB */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* numberOfRA-PreamblesGroupA */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_groupBconfigured_specs_85 = {
-       sizeof(struct RACH_ConfigCommon__groupBconfigured),
-       offsetof(struct RACH_ConfigCommon__groupBconfigured, _asn_ctx),
-       asn_MAP_groupBconfigured_tag2el_85,
-       3,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_groupBconfigured_85 = {
-       "groupBconfigured",
-       "groupBconfigured",
-       &asn_OP_SEQUENCE,
-       asn_DEF_groupBconfigured_tags_85,
-       sizeof(asn_DEF_groupBconfigured_tags_85)
-               /sizeof(asn_DEF_groupBconfigured_tags_85[0]) - 1, /* 1 */
-       asn_DEF_groupBconfigured_tags_85,       /* Same as above */
-       sizeof(asn_DEF_groupBconfigured_tags_85)
-               /sizeof(asn_DEF_groupBconfigured_tags_85[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_groupBconfigured_85,
-       3,      /* Elements count */
-       &asn_SPC_groupBconfigured_specs_85      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ra_ContentionResolutionTimer_value2enum_113[] = {
-       { 0,    3,      "sf8" },
-       { 1,    4,      "sf16" },
-       { 2,    4,      "sf24" },
-       { 3,    4,      "sf32" },
-       { 4,    4,      "sf40" },
-       { 5,    4,      "sf48" },
-       { 6,    4,      "sf56" },
-       { 7,    4,      "sf64" }
-};
-static const unsigned int asn_MAP_ra_ContentionResolutionTimer_enum2value_113[] = {
-       1,      /* sf16(1) */
-       2,      /* sf24(2) */
-       3,      /* sf32(3) */
-       4,      /* sf40(4) */
-       5,      /* sf48(5) */
-       6,      /* sf56(6) */
-       7,      /* sf64(7) */
-       0       /* sf8(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ra_ContentionResolutionTimer_specs_113 = {
-       asn_MAP_ra_ContentionResolutionTimer_value2enum_113,    /* "tag" => N; sorted by tag */
-       asn_MAP_ra_ContentionResolutionTimer_enum2value_113,    /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ra_ContentionResolutionTimer_tags_113[] = {
-       (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_ra_ContentionResolutionTimer_113 = {
-       "ra-ContentionResolutionTimer",
-       "ra-ContentionResolutionTimer",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ra_ContentionResolutionTimer_tags_113,
-       sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113)
-               /sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113[0]) - 1, /* 1 */
-       asn_DEF_ra_ContentionResolutionTimer_tags_113,  /* Same as above */
-       sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113)
-               /sizeof(asn_DEF_ra_ContentionResolutionTimer_tags_113[0]), /* 2 */
-       { &asn_OER_type_ra_ContentionResolutionTimer_constr_113, &asn_PER_type_ra_ContentionResolutionTimer_constr_113, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ra_ContentionResolutionTimer_specs_113 /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_prach_RootSequenceIndex_124[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, choice.l839),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_l839_constr_125, &asn_PER_memb_l839_constr_125,  memb_l839_constraint_124 },
-               0, 0, /* No default value */
-               "l839"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, choice.l139),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_l139_constr_126, &asn_PER_memb_l139_constr_126,  memb_l139_constraint_124 },
-               0, 0, /* No default value */
-               "l139"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_prach_RootSequenceIndex_tag2el_124[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* l839 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* l139 */
-};
-static asn_CHOICE_specifics_t asn_SPC_prach_RootSequenceIndex_specs_124 = {
-       sizeof(struct RACH_ConfigCommon__prach_RootSequenceIndex),
-       offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, _asn_ctx),
-       offsetof(struct RACH_ConfigCommon__prach_RootSequenceIndex, present),
-       sizeof(((struct RACH_ConfigCommon__prach_RootSequenceIndex *)0)->present),
-       asn_MAP_prach_RootSequenceIndex_tag2el_124,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_prach_RootSequenceIndex_124 = {
-       "prach-RootSequenceIndex",
-       "prach-RootSequenceIndex",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_prach_RootSequenceIndex_constr_124, &asn_PER_type_prach_RootSequenceIndex_constr_124, CHOICE_constraint },
-       asn_MBR_prach_RootSequenceIndex_124,
-       2,      /* Elements count */
-       &asn_SPC_prach_RootSequenceIndex_specs_124      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_restrictedSetConfig_value2enum_128[] = {
-       { 0,    15,     "unrestrictedSet" },
-       { 1,    18,     "restrictedSetTypeA" },
-       { 2,    18,     "restrictedSetTypeB" }
-};
-static const unsigned int asn_MAP_restrictedSetConfig_enum2value_128[] = {
-       1,      /* restrictedSetTypeA(1) */
-       2,      /* restrictedSetTypeB(2) */
-       0       /* unrestrictedSet(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_restrictedSetConfig_specs_128 = {
-       asn_MAP_restrictedSetConfig_value2enum_128,     /* "tag" => N; sorted by tag */
-       asn_MAP_restrictedSetConfig_enum2value_128,     /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_restrictedSetConfig_tags_128[] = {
-       (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_restrictedSetConfig_128 = {
-       "restrictedSetConfig",
-       "restrictedSetConfig",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_restrictedSetConfig_tags_128,
-       sizeof(asn_DEF_restrictedSetConfig_tags_128)
-               /sizeof(asn_DEF_restrictedSetConfig_tags_128[0]) - 1, /* 1 */
-       asn_DEF_restrictedSetConfig_tags_128,   /* Same as above */
-       sizeof(asn_DEF_restrictedSetConfig_tags_128)
-               /sizeof(asn_DEF_restrictedSetConfig_tags_128[0]), /* 2 */
-       { &asn_OER_type_restrictedSetConfig_constr_128, &asn_PER_type_restrictedSetConfig_constr_128, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_restrictedSetConfig_specs_128  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_msg3_transformPrecoder_value2enum_132[] = {
-       { 0,    7,      "enabled" }
-};
-static const unsigned int asn_MAP_msg3_transformPrecoder_enum2value_132[] = {
-       0       /* enabled(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_msg3_transformPrecoder_specs_132 = {
-       asn_MAP_msg3_transformPrecoder_value2enum_132,  /* "tag" => N; sorted by tag */
-       asn_MAP_msg3_transformPrecoder_enum2value_132,  /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_msg3_transformPrecoder_tags_132[] = {
-       (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_msg3_transformPrecoder_132 = {
-       "msg3-transformPrecoder",
-       "msg3-transformPrecoder",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_msg3_transformPrecoder_tags_132,
-       sizeof(asn_DEF_msg3_transformPrecoder_tags_132)
-               /sizeof(asn_DEF_msg3_transformPrecoder_tags_132[0]) - 1, /* 1 */
-       asn_DEF_msg3_transformPrecoder_tags_132,        /* Same as above */
-       sizeof(asn_DEF_msg3_transformPrecoder_tags_132)
-               /sizeof(asn_DEF_msg3_transformPrecoder_tags_132[0]), /* 2 */
-       { &asn_OER_type_msg3_transformPrecoder_constr_132, &asn_PER_type_msg3_transformPrecoder_constr_132, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_msg3_transformPrecoder_specs_132       /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_RACH_ConfigCommon_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, rach_ConfigGeneric),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RACH_ConfigGeneric,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rach-ConfigGeneric"
-               },
-       { ATF_POINTER, 3, offsetof(struct RACH_ConfigCommon, totalNumberOfRA_Preambles),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_totalNumberOfRA_Preambles_constr_3, &asn_PER_memb_totalNumberOfRA_Preambles_constr_3,  memb_totalNumberOfRA_Preambles_constraint_1 },
-               0, 0, /* No default value */
-               "totalNumberOfRA-Preambles"
-               },
-       { ATF_POINTER, 2, offsetof(struct RACH_ConfigCommon, ssb_perRACH_OccasionAndCB_PreamblesPerSSB),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_ssb_perRACH_OccasionAndCB_PreamblesPerSSB_4,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ssb-perRACH-OccasionAndCB-PreamblesPerSSB"
-               },
-       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, groupBconfigured),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_groupBconfigured_85,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "groupBconfigured"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, ra_ContentionResolutionTimer),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ra_ContentionResolutionTimer_113,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ra-ContentionResolutionTimer"
-               },
-       { ATF_POINTER, 2, offsetof(struct RACH_ConfigCommon, rsrp_ThresholdSSB),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RSRP_Range,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rsrp-ThresholdSSB"
-               },
-       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, rsrp_ThresholdSSB_SUL),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RSRP_Range,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rsrp-ThresholdSSB-SUL"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, prach_RootSequenceIndex),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_prach_RootSequenceIndex_124,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "prach-RootSequenceIndex"
-               },
-       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, msg1_SubcarrierSpacing),
-               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SubcarrierSpacing,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "msg1-SubcarrierSpacing"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigCommon, restrictedSetConfig),
-               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_restrictedSetConfig_128,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "restrictedSetConfig"
-               },
-       { ATF_POINTER, 1, offsetof(struct RACH_ConfigCommon, msg3_transformPrecoder),
-               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_msg3_transformPrecoder_132,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "msg3-transformPrecoder"
-               },
-};
-static const int asn_MAP_RACH_ConfigCommon_oms_1[] = { 1, 2, 3, 5, 6, 8, 10 };
-static const ber_tlv_tag_t asn_DEF_RACH_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RACH_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-ConfigGeneric */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* totalNumberOfRA-Preambles */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* ssb-perRACH-OccasionAndCB-PreamblesPerSSB */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* groupBconfigured */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ra-ContentionResolutionTimer */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* rsrp-ThresholdSSB */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* rsrp-ThresholdSSB-SUL */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* prach-RootSequenceIndex */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* msg1-SubcarrierSpacing */
-    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* restrictedSetConfig */
-    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 } /* msg3-transformPrecoder */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigCommon_specs_1 = {
-       sizeof(struct RACH_ConfigCommon),
-       offsetof(struct RACH_ConfigCommon, _asn_ctx),
-       asn_MAP_RACH_ConfigCommon_tag2el_1,
-       11,     /* Count of tags in the map */
-       asn_MAP_RACH_ConfigCommon_oms_1,        /* Optional members */
-       7, 0,   /* Root/Additions */
-       11,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RACH_ConfigCommon = {
-       "RACH-ConfigCommon",
-       "RACH-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_RACH_ConfigCommon_tags_1,
-       sizeof(asn_DEF_RACH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_RACH_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_RACH_ConfigCommon_tags_1,       /* Same as above */
-       sizeof(asn_DEF_RACH_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_RACH_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_RACH_ConfigCommon_1,
-       11,     /* Elements count */
-       &asn_SPC_RACH_ConfigCommon_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/RACH-ConfigCommon.h b/src/codec_utils/SYSINFO/RACH-ConfigCommon.h
deleted file mode 100644 (file)
index 6b926a7..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _RACH_ConfigCommon_H_
-#define        _RACH_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "RACH-ConfigGeneric.h"
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include "RSRP-Range.h"
-#include "SubcarrierSpacing.h"
-#include <constr_CHOICE.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_NOTHING,        /* No components present */
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneEighth,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneFourth,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_oneHalf,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_one,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_two,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_four,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_eight,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR_sixteen
-} RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR;
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n4      = 0,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n8      = 1,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n12     = 2,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n16     = 3,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n20     = 4,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n24     = 5,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n28     = 6,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n32     = 7,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n36     = 8,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n40     = 9,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n44     = 10,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n48     = 11,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n52     = 12,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n56     = 13,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n60     = 14,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth_n64     = 15
-} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneEighth;
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n4      = 0,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n8      = 1,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n12     = 2,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n16     = 3,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n20     = 4,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n24     = 5,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n28     = 6,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n32     = 7,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n36     = 8,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n40     = 9,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n44     = 10,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n48     = 11,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n52     = 12,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n56     = 13,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n60     = 14,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth_n64     = 15
-} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneFourth;
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n4        = 0,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n8        = 1,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n12       = 2,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n16       = 3,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n20       = 4,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n24       = 5,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n28       = 6,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n32       = 7,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n36       = 8,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n40       = 9,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n44       = 10,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n48       = 11,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n52       = 12,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n56       = 13,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n60       = 14,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf_n64       = 15
-} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__oneHalf;
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n4    = 0,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n8    = 1,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n12   = 2,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n16   = 3,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n20   = 4,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n24   = 5,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n28   = 6,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n32   = 7,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n36   = 8,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n40   = 9,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n44   = 10,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n48   = 11,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n52   = 12,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n56   = 13,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n60   = 14,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one_n64   = 15
-} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__one;
-typedef enum RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two {
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n4    = 0,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n8    = 1,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n12   = 2,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n16   = 3,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n20   = 4,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n24   = 5,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n28   = 6,
-       RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two_n32   = 7
-} e_RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB__two;
-typedef enum RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA {
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b56      = 0,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b144     = 1,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b208     = 2,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b256     = 3,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b282     = 4,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b480     = 5,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b640     = 6,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b800     = 7,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b1000    = 8,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_b72      = 9,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare6   = 10,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare5   = 11,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare4   = 12,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare3   = 13,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare2   = 14,
-       RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA_spare1   = 15
-} e_RACH_ConfigCommon__groupBconfigured__ra_Msg3SizeGroupA;
-typedef enum RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB {
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_minusinfinity     = 0,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB0       = 1,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB5       = 2,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB8       = 3,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB10      = 4,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB12      = 5,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB15      = 6,
-       RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB_dB18      = 7
-} e_RACH_ConfigCommon__groupBconfigured__messagePowerOffsetGroupB;
-typedef enum RACH_ConfigCommon__ra_ContentionResolutionTimer {
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf8     = 0,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf16    = 1,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf24    = 2,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf32    = 3,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf40    = 4,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf48    = 5,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf56    = 6,
-       RACH_ConfigCommon__ra_ContentionResolutionTimer_sf64    = 7
-} e_RACH_ConfigCommon__ra_ContentionResolutionTimer;
-typedef enum RACH_ConfigCommon__prach_RootSequenceIndex_PR {
-       RACH_ConfigCommon__prach_RootSequenceIndex_PR_NOTHING,  /* No components present */
-       RACH_ConfigCommon__prach_RootSequenceIndex_PR_l839,
-       RACH_ConfigCommon__prach_RootSequenceIndex_PR_l139
-} RACH_ConfigCommon__prach_RootSequenceIndex_PR;
-typedef enum RACH_ConfigCommon__restrictedSetConfig {
-       RACH_ConfigCommon__restrictedSetConfig_unrestrictedSet  = 0,
-       RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeA       = 1,
-       RACH_ConfigCommon__restrictedSetConfig_restrictedSetTypeB       = 2
-} e_RACH_ConfigCommon__restrictedSetConfig;
-typedef enum RACH_ConfigCommon__msg3_transformPrecoder {
-       RACH_ConfigCommon__msg3_transformPrecoder_enabled       = 0
-} e_RACH_ConfigCommon__msg3_transformPrecoder;
-
-/* RACH-ConfigCommon */
-typedef struct RACH_ConfigCommon {
-       RACH_ConfigGeneric_t     rach_ConfigGeneric;
-       long    *totalNumberOfRA_Preambles;     /* OPTIONAL */
-       struct RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB {
-               RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR present;
-               union RACH_ConfigCommon__ssb_perRACH_OccasionAndCB_PreamblesPerSSB_u {
-                       long     oneEighth;
-                       long     oneFourth;
-                       long     oneHalf;
-                       long     one;
-                       long     two;
-                       long     four;
-                       long     eight;
-                       long     sixteen;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *ssb_perRACH_OccasionAndCB_PreamblesPerSSB;
-       struct RACH_ConfigCommon__groupBconfigured {
-               long     ra_Msg3SizeGroupA;
-               long     messagePowerOffsetGroupB;
-               long     numberOfRA_PreamblesGroupA;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *groupBconfigured;
-       long     ra_ContentionResolutionTimer;
-       RSRP_Range_t    *rsrp_ThresholdSSB;     /* OPTIONAL */
-       RSRP_Range_t    *rsrp_ThresholdSSB_SUL; /* OPTIONAL */
-       struct RACH_ConfigCommon__prach_RootSequenceIndex {
-               RACH_ConfigCommon__prach_RootSequenceIndex_PR present;
-               union RACH_ConfigCommon__prach_RootSequenceIndex_u {
-                       long     l839;
-                       long     l139;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } prach_RootSequenceIndex;
-       SubcarrierSpacing_t     *msg1_SubcarrierSpacing;        /* OPTIONAL */
-       long     restrictedSetConfig;
-       long    *msg3_transformPrecoder;        /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} RACH_ConfigCommon_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_oneEighth_5;   // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_oneFourth_22;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_oneHalf_39;    // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_one_56;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_two_73;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_ra_Msg3SizeGroupA_86;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_messagePowerOffsetGroupB_103;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_ra_ContentionResolutionTimer_113;      // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_restrictedSetConfig_128;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_msg3_transformPrecoder_132;    // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_RACH_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_RACH_ConfigCommon_1[11];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RACH_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/RACH-ConfigGeneric.c b/src/codec_utils/SYSINFO/RACH-ConfigGeneric.c
deleted file mode 100644 (file)
index 5fe032a..0000000
+++ /dev/null
@@ -1,486 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "RACH-ConfigGeneric.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.
- */
-static int
-memb_prach_ConfigurationIndex_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 >= 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;
-       }
-}
-
-static int
-memb_msg1_FrequencyStart_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 >= 0 && value <= 274)) {
-               /* 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_zeroCorrelationZoneConfig_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 >= 0 && 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_preambleReceivedTargetPower_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 >= -202 && value <= -60)) {
-               /* 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_msg1_FDM_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_msg1_FDM_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_preambleTransMax_constr_11 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_preambleTransMax_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  10 }       /* (0..10) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_powerRampingStep_constr_23 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_powerRampingStep_constr_23 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ra_ResponseWindow_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ra_ResponseWindow_constr_28 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_prach_ConfigurationIndex_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (0..255) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_prach_ConfigurationIndex_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8,  0,  255 }      /* (0..255) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_msg1_FrequencyStart_constr_8 CC_NOTUSED = {
-       { 2, 1 }        /* (0..274) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_msg1_FrequencyStart_constr_8 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  274 }      /* (0..274) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_zeroCorrelationZoneConfig_constr_9 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_zeroCorrelationZoneConfig_constr_9 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_preambleReceivedTargetPower_constr_10 CC_NOTUSED = {
-       { 2, 0 }        /* (-202..-60) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_preambleReceivedTargetPower_constr_10 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8, -202, -60 }     /* (-202..-60) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_msg1_FDM_value2enum_3[] = {
-       { 0,    3,      "one" },
-       { 1,    3,      "two" },
-       { 2,    4,      "four" },
-       { 3,    5,      "eight" }
-};
-static const unsigned int asn_MAP_msg1_FDM_enum2value_3[] = {
-       3,      /* eight(3) */
-       2,      /* four(2) */
-       0,      /* one(0) */
-       1       /* two(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_msg1_FDM_specs_3 = {
-       asn_MAP_msg1_FDM_value2enum_3,  /* "tag" => N; sorted by tag */
-       asn_MAP_msg1_FDM_enum2value_3,  /* N => "tag"; sorted by N */
-       4,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_msg1_FDM_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_msg1_FDM_3 = {
-       "msg1-FDM",
-       "msg1-FDM",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_msg1_FDM_tags_3,
-       sizeof(asn_DEF_msg1_FDM_tags_3)
-               /sizeof(asn_DEF_msg1_FDM_tags_3[0]) - 1, /* 1 */
-       asn_DEF_msg1_FDM_tags_3,        /* Same as above */
-       sizeof(asn_DEF_msg1_FDM_tags_3)
-               /sizeof(asn_DEF_msg1_FDM_tags_3[0]), /* 2 */
-       { &asn_OER_type_msg1_FDM_constr_3, &asn_PER_type_msg1_FDM_constr_3, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_msg1_FDM_specs_3       /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_preambleTransMax_value2enum_11[] = {
-       { 0,    2,      "n3" },
-       { 1,    2,      "n4" },
-       { 2,    2,      "n5" },
-       { 3,    2,      "n6" },
-       { 4,    2,      "n7" },
-       { 5,    2,      "n8" },
-       { 6,    3,      "n10" },
-       { 7,    3,      "n20" },
-       { 8,    3,      "n50" },
-       { 9,    4,      "n100" },
-       { 10,   4,      "n200" }
-};
-static const unsigned int asn_MAP_preambleTransMax_enum2value_11[] = {
-       6,      /* n10(6) */
-       9,      /* n100(9) */
-       7,      /* n20(7) */
-       10,     /* n200(10) */
-       0,      /* n3(0) */
-       1,      /* n4(1) */
-       2,      /* n5(2) */
-       8,      /* n50(8) */
-       3,      /* n6(3) */
-       4,      /* n7(4) */
-       5       /* n8(5) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_preambleTransMax_specs_11 = {
-       asn_MAP_preambleTransMax_value2enum_11, /* "tag" => N; sorted by tag */
-       asn_MAP_preambleTransMax_enum2value_11, /* N => "tag"; sorted by N */
-       11,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_preambleTransMax_tags_11[] = {
-       (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_preambleTransMax_11 = {
-       "preambleTransMax",
-       "preambleTransMax",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_preambleTransMax_tags_11,
-       sizeof(asn_DEF_preambleTransMax_tags_11)
-               /sizeof(asn_DEF_preambleTransMax_tags_11[0]) - 1, /* 1 */
-       asn_DEF_preambleTransMax_tags_11,       /* Same as above */
-       sizeof(asn_DEF_preambleTransMax_tags_11)
-               /sizeof(asn_DEF_preambleTransMax_tags_11[0]), /* 2 */
-       { &asn_OER_type_preambleTransMax_constr_11, &asn_PER_type_preambleTransMax_constr_11, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_preambleTransMax_specs_11      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_powerRampingStep_value2enum_23[] = {
-       { 0,    3,      "dB0" },
-       { 1,    3,      "dB2" },
-       { 2,    3,      "dB4" },
-       { 3,    3,      "dB6" }
-};
-static const unsigned int asn_MAP_powerRampingStep_enum2value_23[] = {
-       0,      /* dB0(0) */
-       1,      /* dB2(1) */
-       2,      /* dB4(2) */
-       3       /* dB6(3) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_powerRampingStep_specs_23 = {
-       asn_MAP_powerRampingStep_value2enum_23, /* "tag" => N; sorted by tag */
-       asn_MAP_powerRampingStep_enum2value_23, /* N => "tag"; sorted by N */
-       4,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_powerRampingStep_tags_23[] = {
-       (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_powerRampingStep_23 = {
-       "powerRampingStep",
-       "powerRampingStep",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_powerRampingStep_tags_23,
-       sizeof(asn_DEF_powerRampingStep_tags_23)
-               /sizeof(asn_DEF_powerRampingStep_tags_23[0]) - 1, /* 1 */
-       asn_DEF_powerRampingStep_tags_23,       /* Same as above */
-       sizeof(asn_DEF_powerRampingStep_tags_23)
-               /sizeof(asn_DEF_powerRampingStep_tags_23[0]), /* 2 */
-       { &asn_OER_type_powerRampingStep_constr_23, &asn_PER_type_powerRampingStep_constr_23, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_powerRampingStep_specs_23      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ra_ResponseWindow_value2enum_28[] = {
-       { 0,    3,      "sl1" },
-       { 1,    3,      "sl2" },
-       { 2,    3,      "sl4" },
-       { 3,    3,      "sl8" },
-       { 4,    4,      "sl10" },
-       { 5,    4,      "sl20" },
-       { 6,    4,      "sl40" },
-       { 7,    4,      "sl80" }
-};
-static const unsigned int asn_MAP_ra_ResponseWindow_enum2value_28[] = {
-       0,      /* sl1(0) */
-       4,      /* sl10(4) */
-       1,      /* sl2(1) */
-       5,      /* sl20(5) */
-       2,      /* sl4(2) */
-       6,      /* sl40(6) */
-       3,      /* sl8(3) */
-       7       /* sl80(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ra_ResponseWindow_specs_28 = {
-       asn_MAP_ra_ResponseWindow_value2enum_28,        /* "tag" => N; sorted by tag */
-       asn_MAP_ra_ResponseWindow_enum2value_28,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ra_ResponseWindow_tags_28[] = {
-       (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_ra_ResponseWindow_28 = {
-       "ra-ResponseWindow",
-       "ra-ResponseWindow",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ra_ResponseWindow_tags_28,
-       sizeof(asn_DEF_ra_ResponseWindow_tags_28)
-               /sizeof(asn_DEF_ra_ResponseWindow_tags_28[0]) - 1, /* 1 */
-       asn_DEF_ra_ResponseWindow_tags_28,      /* Same as above */
-       sizeof(asn_DEF_ra_ResponseWindow_tags_28)
-               /sizeof(asn_DEF_ra_ResponseWindow_tags_28[0]), /* 2 */
-       { &asn_OER_type_ra_ResponseWindow_constr_28, &asn_PER_type_ra_ResponseWindow_constr_28, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ra_ResponseWindow_specs_28     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_RACH_ConfigGeneric_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, prach_ConfigurationIndex),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_prach_ConfigurationIndex_constr_2, &asn_PER_memb_prach_ConfigurationIndex_constr_2,  memb_prach_ConfigurationIndex_constraint_1 },
-               0, 0, /* No default value */
-               "prach-ConfigurationIndex"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, msg1_FDM),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_msg1_FDM_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "msg1-FDM"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, msg1_FrequencyStart),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_msg1_FrequencyStart_constr_8, &asn_PER_memb_msg1_FrequencyStart_constr_8,  memb_msg1_FrequencyStart_constraint_1 },
-               0, 0, /* No default value */
-               "msg1-FrequencyStart"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, zeroCorrelationZoneConfig),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_zeroCorrelationZoneConfig_constr_9, &asn_PER_memb_zeroCorrelationZoneConfig_constr_9,  memb_zeroCorrelationZoneConfig_constraint_1 },
-               0, 0, /* No default value */
-               "zeroCorrelationZoneConfig"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, preambleReceivedTargetPower),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_preambleReceivedTargetPower_constr_10, &asn_PER_memb_preambleReceivedTargetPower_constr_10,  memb_preambleReceivedTargetPower_constraint_1 },
-               0, 0, /* No default value */
-               "preambleReceivedTargetPower"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, preambleTransMax),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_preambleTransMax_11,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "preambleTransMax"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, powerRampingStep),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_powerRampingStep_23,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "powerRampingStep"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct RACH_ConfigGeneric, ra_ResponseWindow),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ra_ResponseWindow_28,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ra-ResponseWindow"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_RACH_ConfigGeneric_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_RACH_ConfigGeneric_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* prach-ConfigurationIndex */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* msg1-FDM */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* msg1-FrequencyStart */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* zeroCorrelationZoneConfig */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* preambleReceivedTargetPower */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* preambleTransMax */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* powerRampingStep */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ra-ResponseWindow */
-};
-asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigGeneric_specs_1 = {
-       sizeof(struct RACH_ConfigGeneric),
-       offsetof(struct RACH_ConfigGeneric, _asn_ctx),
-       asn_MAP_RACH_ConfigGeneric_tag2el_1,
-       8,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       8,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_RACH_ConfigGeneric = {
-       "RACH-ConfigGeneric",
-       "RACH-ConfigGeneric",
-       &asn_OP_SEQUENCE,
-       asn_DEF_RACH_ConfigGeneric_tags_1,
-       sizeof(asn_DEF_RACH_ConfigGeneric_tags_1)
-               /sizeof(asn_DEF_RACH_ConfigGeneric_tags_1[0]), /* 1 */
-       asn_DEF_RACH_ConfigGeneric_tags_1,      /* Same as above */
-       sizeof(asn_DEF_RACH_ConfigGeneric_tags_1)
-               /sizeof(asn_DEF_RACH_ConfigGeneric_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_RACH_ConfigGeneric_1,
-       8,      /* Elements count */
-       &asn_SPC_RACH_ConfigGeneric_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/RACH-ConfigGeneric.h b/src/codec_utils/SYSINFO/RACH-ConfigGeneric.h
deleted file mode 100644 (file)
index 2907de9..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _RACH_ConfigGeneric_H_
-#define        _RACH_ConfigGeneric_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum RACH_ConfigGeneric__msg1_FDM {
-       RACH_ConfigGeneric__msg1_FDM_one        = 0,
-       RACH_ConfigGeneric__msg1_FDM_two        = 1,
-       RACH_ConfigGeneric__msg1_FDM_four       = 2,
-       RACH_ConfigGeneric__msg1_FDM_eight      = 3
-} e_RACH_ConfigGeneric__msg1_FDM;
-typedef enum RACH_ConfigGeneric__preambleTransMax {
-       RACH_ConfigGeneric__preambleTransMax_n3 = 0,
-       RACH_ConfigGeneric__preambleTransMax_n4 = 1,
-       RACH_ConfigGeneric__preambleTransMax_n5 = 2,
-       RACH_ConfigGeneric__preambleTransMax_n6 = 3,
-       RACH_ConfigGeneric__preambleTransMax_n7 = 4,
-       RACH_ConfigGeneric__preambleTransMax_n8 = 5,
-       RACH_ConfigGeneric__preambleTransMax_n10        = 6,
-       RACH_ConfigGeneric__preambleTransMax_n20        = 7,
-       RACH_ConfigGeneric__preambleTransMax_n50        = 8,
-       RACH_ConfigGeneric__preambleTransMax_n100       = 9,
-       RACH_ConfigGeneric__preambleTransMax_n200       = 10
-} e_RACH_ConfigGeneric__preambleTransMax;
-typedef enum RACH_ConfigGeneric__powerRampingStep {
-       RACH_ConfigGeneric__powerRampingStep_dB0        = 0,
-       RACH_ConfigGeneric__powerRampingStep_dB2        = 1,
-       RACH_ConfigGeneric__powerRampingStep_dB4        = 2,
-       RACH_ConfigGeneric__powerRampingStep_dB6        = 3
-} e_RACH_ConfigGeneric__powerRampingStep;
-typedef enum RACH_ConfigGeneric__ra_ResponseWindow {
-       RACH_ConfigGeneric__ra_ResponseWindow_sl1       = 0,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl2       = 1,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl4       = 2,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl8       = 3,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl10      = 4,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl20      = 5,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl40      = 6,
-       RACH_ConfigGeneric__ra_ResponseWindow_sl80      = 7
-} e_RACH_ConfigGeneric__ra_ResponseWindow;
-
-/* RACH-ConfigGeneric */
-typedef struct RACH_ConfigGeneric {
-       long     prach_ConfigurationIndex;
-       long     msg1_FDM;
-       long     msg1_FrequencyStart;
-       long     zeroCorrelationZoneConfig;
-       long     preambleReceivedTargetPower;
-       long     preambleTransMax;
-       long     powerRampingStep;
-       long     ra_ResponseWindow;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} RACH_ConfigGeneric_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_msg1_FDM_3;    // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_preambleTransMax_11;   // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_powerRampingStep_23;   // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_ra_ResponseWindow_28;  // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_RACH_ConfigGeneric;
-extern asn_SEQUENCE_specifics_t asn_SPC_RACH_ConfigGeneric_specs_1;
-extern asn_TYPE_member_t asn_MBR_RACH_ConfigGeneric_1[8];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RACH_ConfigGeneric_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/RAN-AreaCode.c b/src/codec_utils/SYSINFO/RAN-AreaCode.c
deleted file mode 100644 (file)
index 36dec9b..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "RAN-AreaCode.h"
-
-int
-RAN_AreaCode_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_RAN_AreaCode_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..255) */,
-       -1};
-asn_per_constraints_t asn_PER_type_RAN_AreaCode_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_RAN_AreaCode_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RAN_AreaCode = {
-       "RAN-AreaCode",
-       "RAN-AreaCode",
-       &asn_OP_NativeInteger,
-       asn_DEF_RAN_AreaCode_tags_1,
-       sizeof(asn_DEF_RAN_AreaCode_tags_1)
-               /sizeof(asn_DEF_RAN_AreaCode_tags_1[0]), /* 1 */
-       asn_DEF_RAN_AreaCode_tags_1,    /* Same as above */
-       sizeof(asn_DEF_RAN_AreaCode_tags_1)
-               /sizeof(asn_DEF_RAN_AreaCode_tags_1[0]), /* 1 */
-       { &asn_OER_type_RAN_AreaCode_constr_1, &asn_PER_type_RAN_AreaCode_constr_1, RAN_AreaCode_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/RAN-AreaCode.h b/src/codec_utils/SYSINFO/RAN-AreaCode.h
deleted file mode 100644 (file)
index 7f08c3e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _RAN_AreaCode_H_
-#define        _RAN_AreaCode_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* RAN-AreaCode */
-typedef long    RAN_AreaCode_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_RAN_AreaCode_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_RAN_AreaCode;
-asn_struct_free_f RAN_AreaCode_free;
-asn_struct_print_f RAN_AreaCode_print;
-asn_constr_check_f RAN_AreaCode_constraint;
-ber_type_decoder_f RAN_AreaCode_decode_ber;
-der_type_encoder_f RAN_AreaCode_encode_der;
-xer_type_decoder_f RAN_AreaCode_decode_xer;
-xer_type_encoder_f RAN_AreaCode_encode_xer;
-oer_type_decoder_f RAN_AreaCode_decode_oer;
-oer_type_encoder_f RAN_AreaCode_encode_oer;
-per_type_decoder_f RAN_AreaCode_decode_uper;
-per_type_encoder_f RAN_AreaCode_encode_uper;
-per_type_decoder_f RAN_AreaCode_decode_aper;
-per_type_encoder_f RAN_AreaCode_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RAN_AreaCode_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/RSRP-Range.c b/src/codec_utils/SYSINFO/RSRP-Range.c
deleted file mode 100644 (file)
index 7878cf6..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "RSRP-Range.h"
-
-int
-RSRP_Range_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 <= 127)) {
-               /* 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_RSRP_Range_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..127) */,
-       -1};
-asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_RSRP_Range_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_RSRP_Range = {
-       "RSRP-Range",
-       "RSRP-Range",
-       &asn_OP_NativeInteger,
-       asn_DEF_RSRP_Range_tags_1,
-       sizeof(asn_DEF_RSRP_Range_tags_1)
-               /sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
-       asn_DEF_RSRP_Range_tags_1,      /* Same as above */
-       sizeof(asn_DEF_RSRP_Range_tags_1)
-               /sizeof(asn_DEF_RSRP_Range_tags_1[0]), /* 1 */
-       { &asn_OER_type_RSRP_Range_constr_1, &asn_PER_type_RSRP_Range_constr_1, RSRP_Range_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/RSRP-Range.h b/src/codec_utils/SYSINFO/RSRP-Range.h
deleted file mode 100644 (file)
index ba4f7df..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _RSRP_Range_H_
-#define        _RSRP_Range_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* RSRP-Range */
-typedef long    RSRP_Range_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_RSRP_Range_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_RSRP_Range;
-asn_struct_free_f RSRP_Range_free;
-asn_struct_print_f RSRP_Range_print;
-asn_constr_check_f RSRP_Range_constraint;
-ber_type_decoder_f RSRP_Range_decode_ber;
-der_type_encoder_f RSRP_Range_encode_der;
-xer_type_decoder_f RSRP_Range_decode_xer;
-xer_type_encoder_f RSRP_Range_encode_xer;
-oer_type_decoder_f RSRP_Range_decode_oer;
-oer_type_encoder_f RSRP_Range_encode_oer;
-per_type_decoder_f RSRP_Range_decode_uper;
-per_type_encoder_f RSRP_Range_encode_uper;
-per_type_decoder_f RSRP_Range_decode_aper;
-per_type_encoder_f RSRP_Range_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RSRP_Range_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SCS-SpecificCarrier.c b/src/codec_utils/SYSINFO/SCS-SpecificCarrier.c
deleted file mode 100644 (file)
index b2a2340..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SCS-SpecificCarrier.h"
-
-static int
-memb_txDirectCurrentLocation_v1530_constraint_6(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;
-       }
-}
-
-static int
-memb_offsetToCarrier_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 >= 0 && value <= 2199)) {
-               /* 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_carrierBandwidth_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 <= 275)) {
-               /* 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_txDirectCurrentLocation_v1530_constr_7 CC_NOTUSED = {
-       { 2, 1 }        /* (0..4095) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_txDirectCurrentLocation_v1530_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  4095 }   /* (0..4095) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_offsetToCarrier_constr_2 CC_NOTUSED = {
-       { 2, 1 }        /* (0..2199) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_offsetToCarrier_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  2199 }   /* (0..2199) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_carrierBandwidth_constr_4 CC_NOTUSED = {
-       { 2, 1 }        /* (1..275) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_carrierBandwidth_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  1,  275 }      /* (1..275) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_ext1_6[] = {
-       { ATF_POINTER, 1, offsetof(struct SCS_SpecificCarrier__ext1, txDirectCurrentLocation_v1530),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_txDirectCurrentLocation_v1530_constr_7, &asn_PER_memb_txDirectCurrentLocation_v1530_constr_7,  memb_txDirectCurrentLocation_v1530_constraint_6 },
-               0, 0, /* No default value */
-               "txDirectCurrentLocation-v1530"
-               },
-};
-static const int asn_MAP_ext1_oms_6[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_ext1_tags_6[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_6[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* txDirectCurrentLocation-v1530 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_6 = {
-       sizeof(struct SCS_SpecificCarrier__ext1),
-       offsetof(struct SCS_SpecificCarrier__ext1, _asn_ctx),
-       asn_MAP_ext1_tag2el_6,
-       1,      /* Count of tags in the map */
-       asn_MAP_ext1_oms_6,     /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ext1_6 = {
-       "ext1",
-       "ext1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ext1_tags_6,
-       sizeof(asn_DEF_ext1_tags_6)
-               /sizeof(asn_DEF_ext1_tags_6[0]) - 1, /* 1 */
-       asn_DEF_ext1_tags_6,    /* Same as above */
-       sizeof(asn_DEF_ext1_tags_6)
-               /sizeof(asn_DEF_ext1_tags_6[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ext1_6,
-       1,      /* Elements count */
-       &asn_SPC_ext1_specs_6   /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SCS_SpecificCarrier_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, offsetToCarrier),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_offsetToCarrier_constr_2, &asn_PER_memb_offsetToCarrier_constr_2,  memb_offsetToCarrier_constraint_1 },
-               0, 0, /* No default value */
-               "offsetToCarrier"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, subcarrierSpacing),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SubcarrierSpacing,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "subcarrierSpacing"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SCS_SpecificCarrier, carrierBandwidth),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_carrierBandwidth_constr_4, &asn_PER_memb_carrierBandwidth_constr_4,  memb_carrierBandwidth_constraint_1 },
-               0, 0, /* No default value */
-               "carrierBandwidth"
-               },
-       { ATF_POINTER, 1, offsetof(struct SCS_SpecificCarrier, ext1),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_ext1_6,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ext1"
-               },
-};
-static const int asn_MAP_SCS_SpecificCarrier_oms_1[] = { 3 };
-static const ber_tlv_tag_t asn_DEF_SCS_SpecificCarrier_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SCS_SpecificCarrier_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* offsetToCarrier */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* subcarrierSpacing */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* carrierBandwidth */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* ext1 */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SCS_SpecificCarrier_specs_1 = {
-       sizeof(struct SCS_SpecificCarrier),
-       offsetof(struct SCS_SpecificCarrier, _asn_ctx),
-       asn_MAP_SCS_SpecificCarrier_tag2el_1,
-       4,      /* Count of tags in the map */
-       asn_MAP_SCS_SpecificCarrier_oms_1,      /* Optional members */
-       0, 1,   /* Root/Additions */
-       3,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SCS_SpecificCarrier = {
-       "SCS-SpecificCarrier",
-       "SCS-SpecificCarrier",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SCS_SpecificCarrier_tags_1,
-       sizeof(asn_DEF_SCS_SpecificCarrier_tags_1)
-               /sizeof(asn_DEF_SCS_SpecificCarrier_tags_1[0]), /* 1 */
-       asn_DEF_SCS_SpecificCarrier_tags_1,     /* Same as above */
-       sizeof(asn_DEF_SCS_SpecificCarrier_tags_1)
-               /sizeof(asn_DEF_SCS_SpecificCarrier_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SCS_SpecificCarrier_1,
-       4,      /* Elements count */
-       &asn_SPC_SCS_SpecificCarrier_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SCS-SpecificCarrier.h b/src/codec_utils/SYSINFO/SCS-SpecificCarrier.h
deleted file mode 100644 (file)
index 76edac7..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SCS_SpecificCarrier_H_
-#define        _SCS_SpecificCarrier_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include "SubcarrierSpacing.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* SCS-SpecificCarrier */
-typedef struct SCS_SpecificCarrier {
-       long     offsetToCarrier;
-       SubcarrierSpacing_t      subcarrierSpacing;
-       long     carrierBandwidth;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       struct SCS_SpecificCarrier__ext1 {
-               long    *txDirectCurrentLocation_v1530; /* OPTIONAL */
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *ext1;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SCS_SpecificCarrier_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_SCS_SpecificCarrier;
-extern asn_SEQUENCE_specifics_t asn_SPC_SCS_SpecificCarrier_specs_1;
-extern asn_TYPE_member_t asn_MBR_SCS_SpecificCarrier_1[4];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SCS_SpecificCarrier_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SI-RequestConfig.c b/src/codec_utils/SYSINFO/SI-RequestConfig.c
deleted file mode 100644 (file)
index 9bb6711..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SI-RequestConfig.h"
-
-#include "SI-RequestResources.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.
- */
-static int
-memb_si_RequestResources_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 <= 32)) {
-               /* 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_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ssb_perRACH_Occasion_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_si_RequestPeriod_constr_13 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_si_RequestPeriod_constr_13 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_si_RequestResources_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..32)) */};
-static asn_per_constraints_t asn_PER_type_si_RequestResources_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_si_RequestResources_constr_22 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..32)) */};
-static asn_per_constraints_t asn_PER_memb_si_RequestResources_constr_22 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_ssb_perRACH_Occasion_value2enum_4[] = {
-       { 0,    9,      "oneEighth" },
-       { 1,    9,      "oneFourth" },
-       { 2,    7,      "oneHalf" },
-       { 3,    3,      "one" },
-       { 4,    3,      "two" },
-       { 5,    4,      "four" },
-       { 6,    5,      "eight" },
-       { 7,    7,      "sixteen" }
-};
-static const unsigned int asn_MAP_ssb_perRACH_Occasion_enum2value_4[] = {
-       6,      /* eight(6) */
-       5,      /* four(5) */
-       3,      /* one(3) */
-       0,      /* oneEighth(0) */
-       1,      /* oneFourth(1) */
-       2,      /* oneHalf(2) */
-       7,      /* sixteen(7) */
-       4       /* two(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ssb_perRACH_Occasion_specs_4 = {
-       asn_MAP_ssb_perRACH_Occasion_value2enum_4,      /* "tag" => N; sorted by tag */
-       asn_MAP_ssb_perRACH_Occasion_enum2value_4,      /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ssb_perRACH_Occasion_tags_4[] = {
-       (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_ssb_perRACH_Occasion_4 = {
-       "ssb-perRACH-Occasion",
-       "ssb-perRACH-Occasion",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ssb_perRACH_Occasion_tags_4,
-       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
-               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]) - 1, /* 1 */
-       asn_DEF_ssb_perRACH_Occasion_tags_4,    /* Same as above */
-       sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4)
-               /sizeof(asn_DEF_ssb_perRACH_Occasion_tags_4[0]), /* 2 */
-       { &asn_OER_type_ssb_perRACH_Occasion_constr_4, &asn_PER_type_ssb_perRACH_Occasion_constr_4, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ssb_perRACH_Occasion_specs_4   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_rach_OccasionsSI_2[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig__rach_OccasionsSI, rach_ConfigSI),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_RACH_ConfigGeneric,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rach-ConfigSI"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig__rach_OccasionsSI, ssb_perRACH_Occasion),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ssb_perRACH_Occasion_4,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ssb-perRACH-Occasion"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_rach_OccasionsSI_tags_2[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_rach_OccasionsSI_tag2el_2[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-ConfigSI */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ssb-perRACH-Occasion */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_rach_OccasionsSI_specs_2 = {
-       sizeof(struct SI_RequestConfig__rach_OccasionsSI),
-       offsetof(struct SI_RequestConfig__rach_OccasionsSI, _asn_ctx),
-       asn_MAP_rach_OccasionsSI_tag2el_2,
-       2,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_rach_OccasionsSI_2 = {
-       "rach-OccasionsSI",
-       "rach-OccasionsSI",
-       &asn_OP_SEQUENCE,
-       asn_DEF_rach_OccasionsSI_tags_2,
-       sizeof(asn_DEF_rach_OccasionsSI_tags_2)
-               /sizeof(asn_DEF_rach_OccasionsSI_tags_2[0]) - 1, /* 1 */
-       asn_DEF_rach_OccasionsSI_tags_2,        /* Same as above */
-       sizeof(asn_DEF_rach_OccasionsSI_tags_2)
-               /sizeof(asn_DEF_rach_OccasionsSI_tags_2[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_rach_OccasionsSI_2,
-       2,      /* Elements count */
-       &asn_SPC_rach_OccasionsSI_specs_2       /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_si_RequestPeriod_value2enum_13[] = {
-       { 0,    3,      "one" },
-       { 1,    3,      "two" },
-       { 2,    4,      "four" },
-       { 3,    3,      "six" },
-       { 4,    5,      "eight" },
-       { 5,    3,      "ten" },
-       { 6,    6,      "twelve" },
-       { 7,    7,      "sixteen" }
-};
-static const unsigned int asn_MAP_si_RequestPeriod_enum2value_13[] = {
-       4,      /* eight(4) */
-       2,      /* four(2) */
-       0,      /* one(0) */
-       3,      /* six(3) */
-       7,      /* sixteen(7) */
-       5,      /* ten(5) */
-       6,      /* twelve(6) */
-       1       /* two(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_si_RequestPeriod_specs_13 = {
-       asn_MAP_si_RequestPeriod_value2enum_13, /* "tag" => N; sorted by tag */
-       asn_MAP_si_RequestPeriod_enum2value_13, /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_si_RequestPeriod_tags_13[] = {
-       (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_si_RequestPeriod_13 = {
-       "si-RequestPeriod",
-       "si-RequestPeriod",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_si_RequestPeriod_tags_13,
-       sizeof(asn_DEF_si_RequestPeriod_tags_13)
-               /sizeof(asn_DEF_si_RequestPeriod_tags_13[0]) - 1, /* 1 */
-       asn_DEF_si_RequestPeriod_tags_13,       /* Same as above */
-       sizeof(asn_DEF_si_RequestPeriod_tags_13)
-               /sizeof(asn_DEF_si_RequestPeriod_tags_13[0]), /* 2 */
-       { &asn_OER_type_si_RequestPeriod_constr_13, &asn_PER_type_si_RequestPeriod_constr_13, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_si_RequestPeriod_specs_13      /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_si_RequestResources_22[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SI_RequestResources,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_si_RequestResources_tags_22[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_si_RequestResources_specs_22 = {
-       sizeof(struct SI_RequestConfig__si_RequestResources),
-       offsetof(struct SI_RequestConfig__si_RequestResources, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_si_RequestResources_22 = {
-       "si-RequestResources",
-       "si-RequestResources",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_si_RequestResources_tags_22,
-       sizeof(asn_DEF_si_RequestResources_tags_22)
-               /sizeof(asn_DEF_si_RequestResources_tags_22[0]) - 1, /* 1 */
-       asn_DEF_si_RequestResources_tags_22,    /* Same as above */
-       sizeof(asn_DEF_si_RequestResources_tags_22)
-               /sizeof(asn_DEF_si_RequestResources_tags_22[0]), /* 2 */
-       { &asn_OER_type_si_RequestResources_constr_22, &asn_PER_type_si_RequestResources_constr_22, SEQUENCE_OF_constraint },
-       asn_MBR_si_RequestResources_22,
-       1,      /* Single element */
-       &asn_SPC_si_RequestResources_specs_22   /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SI_RequestConfig_1[] = {
-       { ATF_POINTER, 2, offsetof(struct SI_RequestConfig, rach_OccasionsSI),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_rach_OccasionsSI_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "rach-OccasionsSI"
-               },
-       { ATF_POINTER, 1, offsetof(struct SI_RequestConfig, si_RequestPeriod),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_si_RequestPeriod_13,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-RequestPeriod"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestConfig, si_RequestResources),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_si_RequestResources_22,
-               0,
-               { &asn_OER_memb_si_RequestResources_constr_22, &asn_PER_memb_si_RequestResources_constr_22,  memb_si_RequestResources_constraint_1 },
-               0, 0, /* No default value */
-               "si-RequestResources"
-               },
-};
-static const int asn_MAP_SI_RequestConfig_oms_1[] = { 0, 1 };
-static const ber_tlv_tag_t asn_DEF_SI_RequestConfig_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SI_RequestConfig_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* rach-OccasionsSI */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-RequestPeriod */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* si-RequestResources */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SI_RequestConfig_specs_1 = {
-       sizeof(struct SI_RequestConfig),
-       offsetof(struct SI_RequestConfig, _asn_ctx),
-       asn_MAP_SI_RequestConfig_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_SI_RequestConfig_oms_1, /* Optional members */
-       2, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SI_RequestConfig = {
-       "SI-RequestConfig",
-       "SI-RequestConfig",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SI_RequestConfig_tags_1,
-       sizeof(asn_DEF_SI_RequestConfig_tags_1)
-               /sizeof(asn_DEF_SI_RequestConfig_tags_1[0]), /* 1 */
-       asn_DEF_SI_RequestConfig_tags_1,        /* Same as above */
-       sizeof(asn_DEF_SI_RequestConfig_tags_1)
-               /sizeof(asn_DEF_SI_RequestConfig_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SI_RequestConfig_1,
-       3,      /* Elements count */
-       &asn_SPC_SI_RequestConfig_specs_1       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SI-RequestConfig.h b/src/codec_utils/SYSINFO/SI-RequestConfig.h
deleted file mode 100644 (file)
index 3ebd2d4..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SI_RequestConfig_H_
-#define        _SI_RequestConfig_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include "RACH-ConfigGeneric.h"
-#include <constr_SEQUENCE.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion {
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneEighth      = 0,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneFourth      = 1,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_oneHalf        = 2,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_one    = 3,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_two    = 4,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_four   = 5,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_eight  = 6,
-       SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion_sixteen        = 7
-} e_SI_RequestConfig__rach_OccasionsSI__ssb_perRACH_Occasion;
-typedef enum SI_RequestConfig__si_RequestPeriod {
-       SI_RequestConfig__si_RequestPeriod_one  = 0,
-       SI_RequestConfig__si_RequestPeriod_two  = 1,
-       SI_RequestConfig__si_RequestPeriod_four = 2,
-       SI_RequestConfig__si_RequestPeriod_six  = 3,
-       SI_RequestConfig__si_RequestPeriod_eight        = 4,
-       SI_RequestConfig__si_RequestPeriod_ten  = 5,
-       SI_RequestConfig__si_RequestPeriod_twelve       = 6,
-       SI_RequestConfig__si_RequestPeriod_sixteen      = 7
-} e_SI_RequestConfig__si_RequestPeriod;
-
-/* Forward declarations */
-struct SI_RequestResources;
-
-/* SI-RequestConfig */
-typedef struct SI_RequestConfig {
-       struct SI_RequestConfig__rach_OccasionsSI {
-               RACH_ConfigGeneric_t     rach_ConfigSI;
-               long     ssb_perRACH_Occasion;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *rach_OccasionsSI;
-       long    *si_RequestPeriod;      /* OPTIONAL */
-       struct SI_RequestConfig__si_RequestResources {
-               A_SEQUENCE_OF(struct SI_RequestResources) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } si_RequestResources;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SI_RequestConfig_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_ssb_perRACH_Occasion_4;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_si_RequestPeriod_13;   // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SI_RequestConfig;
-extern asn_SEQUENCE_specifics_t asn_SPC_SI_RequestConfig_specs_1;
-extern asn_TYPE_member_t asn_MBR_SI_RequestConfig_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SI_RequestConfig_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SI-RequestResources.c b/src/codec_utils/SYSINFO/SI-RequestResources.c
deleted file mode 100644 (file)
index 7650513..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SI-RequestResources.h"
-
-static int
-memb_ra_PreambleStartIndex_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 >= 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;
-       }
-}
-
-static int
-memb_ra_AssociationPeriodIndex_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 >= 0 && 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_ra_ssb_OccasionMaskIndex_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 >= 0 && 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 asn_oer_constraints_t asn_OER_memb_ra_PreambleStartIndex_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (0..63) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_ra_PreambleStartIndex_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  0,  63 }       /* (0..63) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ra_AssociationPeriodIndex_constr_3 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_ra_AssociationPeriodIndex_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_4 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_SI_RequestResources_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SI_RequestResources, ra_PreambleStartIndex),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_ra_PreambleStartIndex_constr_2, &asn_PER_memb_ra_PreambleStartIndex_constr_2,  memb_ra_PreambleStartIndex_constraint_1 },
-               0, 0, /* No default value */
-               "ra-PreambleStartIndex"
-               },
-       { ATF_POINTER, 2, offsetof(struct SI_RequestResources, ra_AssociationPeriodIndex),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_ra_AssociationPeriodIndex_constr_3, &asn_PER_memb_ra_AssociationPeriodIndex_constr_3,  memb_ra_AssociationPeriodIndex_constraint_1 },
-               0, 0, /* No default value */
-               "ra-AssociationPeriodIndex"
-               },
-       { ATF_POINTER, 1, offsetof(struct SI_RequestResources, ra_ssb_OccasionMaskIndex),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_ra_ssb_OccasionMaskIndex_constr_4, &asn_PER_memb_ra_ssb_OccasionMaskIndex_constr_4,  memb_ra_ssb_OccasionMaskIndex_constraint_1 },
-               0, 0, /* No default value */
-               "ra-ssb-OccasionMaskIndex"
-               },
-};
-static const int asn_MAP_SI_RequestResources_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_SI_RequestResources_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SI_RequestResources_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ra-PreambleStartIndex */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* ra-AssociationPeriodIndex */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* ra-ssb-OccasionMaskIndex */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SI_RequestResources_specs_1 = {
-       sizeof(struct SI_RequestResources),
-       offsetof(struct SI_RequestResources, _asn_ctx),
-       asn_MAP_SI_RequestResources_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_SI_RequestResources_oms_1,      /* Optional members */
-       2, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SI_RequestResources = {
-       "SI-RequestResources",
-       "SI-RequestResources",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SI_RequestResources_tags_1,
-       sizeof(asn_DEF_SI_RequestResources_tags_1)
-               /sizeof(asn_DEF_SI_RequestResources_tags_1[0]), /* 1 */
-       asn_DEF_SI_RequestResources_tags_1,     /* Same as above */
-       sizeof(asn_DEF_SI_RequestResources_tags_1)
-               /sizeof(asn_DEF_SI_RequestResources_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SI_RequestResources_1,
-       3,      /* Elements count */
-       &asn_SPC_SI_RequestResources_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SI-RequestResources.h b/src/codec_utils/SYSINFO/SI-RequestResources.h
deleted file mode 100644 (file)
index 3f7bb85..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SI_RequestResources_H_
-#define        _SI_RequestResources_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* SI-RequestResources */
-typedef struct SI_RequestResources {
-       long     ra_PreambleStartIndex;
-       long    *ra_AssociationPeriodIndex;     /* OPTIONAL */
-       long    *ra_ssb_OccasionMaskIndex;      /* OPTIONAL */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SI_RequestResources_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_SI_RequestResources;
-extern asn_SEQUENCE_specifics_t asn_SPC_SI_RequestResources_specs_1;
-extern asn_TYPE_member_t asn_MBR_SI_RequestResources_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SI_RequestResources_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SI-SchedulingInfo.c b/src/codec_utils/SYSINFO/SI-SchedulingInfo.c
deleted file mode 100644 (file)
index f076381..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SI-SchedulingInfo.h"
-
-#include "SI-RequestConfig.h"
-#include "SchedulingInfo.h"
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_schedulingInfoList_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 <= 32)) {
-               /* 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_systemInformationAreaID_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 == 24)) {
-               /* 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_schedulingInfoList_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..32)) */};
-static asn_per_constraints_t asn_PER_type_schedulingInfoList_constr_2 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_si_WindowLength_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_si_WindowLength_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  8 }        /* (0..8) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_schedulingInfoList_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..32)) */};
-static asn_per_constraints_t asn_PER_memb_schedulingInfoList_constr_2 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_systemInformationAreaID_constr_16 CC_NOTUSED = {
-       { 0, 0 },
-       24      /* (SIZE(24..24)) */};
-static asn_per_constraints_t asn_PER_memb_systemInformationAreaID_constr_16 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_schedulingInfoList_2[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SchedulingInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_schedulingInfoList_tags_2[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_schedulingInfoList_specs_2 = {
-       sizeof(struct SI_SchedulingInfo__schedulingInfoList),
-       offsetof(struct SI_SchedulingInfo__schedulingInfoList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_schedulingInfoList_2 = {
-       "schedulingInfoList",
-       "schedulingInfoList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_schedulingInfoList_tags_2,
-       sizeof(asn_DEF_schedulingInfoList_tags_2)
-               /sizeof(asn_DEF_schedulingInfoList_tags_2[0]) - 1, /* 1 */
-       asn_DEF_schedulingInfoList_tags_2,      /* Same as above */
-       sizeof(asn_DEF_schedulingInfoList_tags_2)
-               /sizeof(asn_DEF_schedulingInfoList_tags_2[0]), /* 2 */
-       { &asn_OER_type_schedulingInfoList_constr_2, &asn_PER_type_schedulingInfoList_constr_2, SEQUENCE_OF_constraint },
-       asn_MBR_schedulingInfoList_2,
-       1,      /* Single element */
-       &asn_SPC_schedulingInfoList_specs_2     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_si_WindowLength_value2enum_4[] = {
-       { 0,    2,      "s5" },
-       { 1,    3,      "s10" },
-       { 2,    3,      "s20" },
-       { 3,    3,      "s40" },
-       { 4,    3,      "s80" },
-       { 5,    4,      "s160" },
-       { 6,    4,      "s320" },
-       { 7,    4,      "s640" },
-       { 8,    5,      "s1280" }
-};
-static const unsigned int asn_MAP_si_WindowLength_enum2value_4[] = {
-       1,      /* s10(1) */
-       8,      /* s1280(8) */
-       5,      /* s160(5) */
-       2,      /* s20(2) */
-       6,      /* s320(6) */
-       3,      /* s40(3) */
-       0,      /* s5(0) */
-       7,      /* s640(7) */
-       4       /* s80(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_si_WindowLength_specs_4 = {
-       asn_MAP_si_WindowLength_value2enum_4,   /* "tag" => N; sorted by tag */
-       asn_MAP_si_WindowLength_enum2value_4,   /* N => "tag"; sorted by N */
-       9,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_si_WindowLength_tags_4[] = {
-       (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_si_WindowLength_4 = {
-       "si-WindowLength",
-       "si-WindowLength",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_si_WindowLength_tags_4,
-       sizeof(asn_DEF_si_WindowLength_tags_4)
-               /sizeof(asn_DEF_si_WindowLength_tags_4[0]) - 1, /* 1 */
-       asn_DEF_si_WindowLength_tags_4, /* Same as above */
-       sizeof(asn_DEF_si_WindowLength_tags_4)
-               /sizeof(asn_DEF_si_WindowLength_tags_4[0]), /* 2 */
-       { &asn_OER_type_si_WindowLength_constr_4, &asn_PER_type_si_WindowLength_constr_4, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_si_WindowLength_specs_4        /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SI_SchedulingInfo_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SI_SchedulingInfo, schedulingInfoList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_schedulingInfoList_2,
-               0,
-               { &asn_OER_memb_schedulingInfoList_constr_2, &asn_PER_memb_schedulingInfoList_constr_2,  memb_schedulingInfoList_constraint_1 },
-               0, 0, /* No default value */
-               "schedulingInfoList"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SI_SchedulingInfo, si_WindowLength),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_si_WindowLength_4,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-WindowLength"
-               },
-       { ATF_POINTER, 3, offsetof(struct SI_SchedulingInfo, si_RequestConfig),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SI_RequestConfig,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-RequestConfig"
-               },
-       { ATF_POINTER, 2, offsetof(struct SI_SchedulingInfo, si_RequestConfigSUL),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SI_RequestConfig,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-RequestConfigSUL"
-               },
-       { ATF_POINTER, 1, offsetof(struct SI_SchedulingInfo, systemInformationAreaID),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_systemInformationAreaID_constr_16, &asn_PER_memb_systemInformationAreaID_constr_16,  memb_systemInformationAreaID_constraint_1 },
-               0, 0, /* No default value */
-               "systemInformationAreaID"
-               },
-};
-static const int asn_MAP_SI_SchedulingInfo_oms_1[] = { 2, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_SI_SchedulingInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SI_SchedulingInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* schedulingInfoList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-WindowLength */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* si-RequestConfig */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* si-RequestConfigSUL */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* systemInformationAreaID */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SI_SchedulingInfo_specs_1 = {
-       sizeof(struct SI_SchedulingInfo),
-       offsetof(struct SI_SchedulingInfo, _asn_ctx),
-       asn_MAP_SI_SchedulingInfo_tag2el_1,
-       5,      /* Count of tags in the map */
-       asn_MAP_SI_SchedulingInfo_oms_1,        /* Optional members */
-       3, 0,   /* Root/Additions */
-       5,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SI_SchedulingInfo = {
-       "SI-SchedulingInfo",
-       "SI-SchedulingInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SI_SchedulingInfo_tags_1,
-       sizeof(asn_DEF_SI_SchedulingInfo_tags_1)
-               /sizeof(asn_DEF_SI_SchedulingInfo_tags_1[0]), /* 1 */
-       asn_DEF_SI_SchedulingInfo_tags_1,       /* Same as above */
-       sizeof(asn_DEF_SI_SchedulingInfo_tags_1)
-               /sizeof(asn_DEF_SI_SchedulingInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SI_SchedulingInfo_1,
-       5,      /* Elements count */
-       &asn_SPC_SI_SchedulingInfo_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SI-SchedulingInfo.h b/src/codec_utils/SYSINFO/SI-SchedulingInfo.h
deleted file mode 100644 (file)
index a4619bf..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SI_SchedulingInfo_H_
-#define        _SI_SchedulingInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <BIT_STRING.h>
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SI_SchedulingInfo__si_WindowLength {
-       SI_SchedulingInfo__si_WindowLength_s5   = 0,
-       SI_SchedulingInfo__si_WindowLength_s10  = 1,
-       SI_SchedulingInfo__si_WindowLength_s20  = 2,
-       SI_SchedulingInfo__si_WindowLength_s40  = 3,
-       SI_SchedulingInfo__si_WindowLength_s80  = 4,
-       SI_SchedulingInfo__si_WindowLength_s160 = 5,
-       SI_SchedulingInfo__si_WindowLength_s320 = 6,
-       SI_SchedulingInfo__si_WindowLength_s640 = 7,
-       SI_SchedulingInfo__si_WindowLength_s1280        = 8
-} e_SI_SchedulingInfo__si_WindowLength;
-
-/* Forward declarations */
-struct SI_RequestConfig;
-struct SchedulingInfo;
-
-/* SI-SchedulingInfo */
-typedef struct SI_SchedulingInfo {
-       struct SI_SchedulingInfo__schedulingInfoList {
-               A_SEQUENCE_OF(struct SchedulingInfo) list;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } schedulingInfoList;
-       long     si_WindowLength;
-       struct SI_RequestConfig *si_RequestConfig;      /* OPTIONAL */
-       struct SI_RequestConfig *si_RequestConfigSUL;   /* OPTIONAL */
-       BIT_STRING_t    *systemInformationAreaID;       /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SI_SchedulingInfo_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_si_WindowLength_4;     // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SI_SchedulingInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_SI_SchedulingInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_SI_SchedulingInfo_1[5];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SI_SchedulingInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SIB-Mapping.c b/src/codec_utils/SYSINFO/SIB-Mapping.c
deleted file mode 100644 (file)
index 4360f95..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SIB-Mapping.h"
-
-#include "SIB-TypeInfo.h"
-static asn_oer_constraints_t asn_OER_type_SIB_Mapping_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..32)) */};
-asn_per_constraints_t asn_PER_type_SIB_Mapping_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       5,  5,  1,  32 }       /* (SIZE(1..32)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_SIB_Mapping_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_SIB_TypeInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_SIB_Mapping_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_SIB_Mapping_specs_1 = {
-       sizeof(struct SIB_Mapping),
-       offsetof(struct SIB_Mapping, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_SIB_Mapping = {
-       "SIB-Mapping",
-       "SIB-Mapping",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_SIB_Mapping_tags_1,
-       sizeof(asn_DEF_SIB_Mapping_tags_1)
-               /sizeof(asn_DEF_SIB_Mapping_tags_1[0]), /* 1 */
-       asn_DEF_SIB_Mapping_tags_1,     /* Same as above */
-       sizeof(asn_DEF_SIB_Mapping_tags_1)
-               /sizeof(asn_DEF_SIB_Mapping_tags_1[0]), /* 1 */
-       { &asn_OER_type_SIB_Mapping_constr_1, &asn_PER_type_SIB_Mapping_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_SIB_Mapping_1,
-       1,      /* Single element */
-       &asn_SPC_SIB_Mapping_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SIB-Mapping.h b/src/codec_utils/SYSINFO/SIB-Mapping.h
deleted file mode 100644 (file)
index 2d23677..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SIB_Mapping_H_
-#define        _SIB_Mapping_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 SIB_TypeInfo;
-
-/* SIB-Mapping */
-typedef struct SIB_Mapping {
-       A_SEQUENCE_OF(struct SIB_TypeInfo) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SIB_Mapping_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_SIB_Mapping;
-extern asn_SET_OF_specifics_t asn_SPC_SIB_Mapping_specs_1;
-extern asn_TYPE_member_t asn_MBR_SIB_Mapping_1[1];
-extern asn_per_constraints_t asn_PER_type_SIB_Mapping_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SIB_Mapping_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SIB-TypeInfo.c b/src/codec_utils/SYSINFO/SIB-TypeInfo.c
deleted file mode 100644 (file)
index 648622e..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SIB-TypeInfo.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.
- */
-static int
-memb_valueTag_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 >= 0 && value <= 31)) {
-               /* 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_type_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_type_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  15 }   /* (0..15,...) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_areaScope_constr_21 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_areaScope_constr_21 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_valueTag_constr_20 CC_NOTUSED = {
-       { 1, 1 }        /* (0..31) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_valueTag_constr_20 CC_NOTUSED = {
-       { APC_CONSTRAINED,       5,  5,  0,  31 }       /* (0..31) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_type_value2enum_2[] = {
-       { 0,    8,      "sibType2" },
-       { 1,    8,      "sibType3" },
-       { 2,    8,      "sibType4" },
-       { 3,    8,      "sibType5" },
-       { 4,    8,      "sibType6" },
-       { 5,    8,      "sibType7" },
-       { 6,    8,      "sibType8" },
-       { 7,    8,      "sibType9" },
-       { 8,    6,      "spare8" },
-       { 9,    6,      "spare7" },
-       { 10,   6,      "spare6" },
-       { 11,   6,      "spare5" },
-       { 12,   6,      "spare4" },
-       { 13,   6,      "spare3" },
-       { 14,   6,      "spare2" },
-       { 15,   6,      "spare1" }
-       /* This list is extensible */
-};
-static const unsigned int asn_MAP_type_enum2value_2[] = {
-       0,      /* sibType2(0) */
-       1,      /* sibType3(1) */
-       2,      /* sibType4(2) */
-       3,      /* sibType5(3) */
-       4,      /* sibType6(4) */
-       5,      /* sibType7(5) */
-       6,      /* sibType8(6) */
-       7,      /* sibType9(7) */
-       15,     /* spare1(15) */
-       14,     /* spare2(14) */
-       13,     /* spare3(13) */
-       12,     /* spare4(12) */
-       11,     /* spare5(11) */
-       10,     /* spare6(10) */
-       9,      /* spare7(9) */
-       8       /* spare8(8) */
-       /* This list is extensible */
-};
-static const asn_INTEGER_specifics_t asn_SPC_type_specs_2 = {
-       asn_MAP_type_value2enum_2,      /* "tag" => N; sorted by tag */
-       asn_MAP_type_enum2value_2,      /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       17,     /* Extensions before this member */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_type_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_type_2 = {
-       "type",
-       "type",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_type_tags_2,
-       sizeof(asn_DEF_type_tags_2)
-               /sizeof(asn_DEF_type_tags_2[0]) - 1, /* 1 */
-       asn_DEF_type_tags_2,    /* Same as above */
-       sizeof(asn_DEF_type_tags_2)
-               /sizeof(asn_DEF_type_tags_2[0]), /* 2 */
-       { &asn_OER_type_type_constr_2, &asn_PER_type_type_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_type_specs_2   /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_areaScope_value2enum_21[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_areaScope_enum2value_21[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_areaScope_specs_21 = {
-       asn_MAP_areaScope_value2enum_21,        /* "tag" => N; sorted by tag */
-       asn_MAP_areaScope_enum2value_21,        /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_areaScope_tags_21[] = {
-       (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_areaScope_21 = {
-       "areaScope",
-       "areaScope",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_areaScope_tags_21,
-       sizeof(asn_DEF_areaScope_tags_21)
-               /sizeof(asn_DEF_areaScope_tags_21[0]) - 1, /* 1 */
-       asn_DEF_areaScope_tags_21,      /* Same as above */
-       sizeof(asn_DEF_areaScope_tags_21)
-               /sizeof(asn_DEF_areaScope_tags_21[0]), /* 2 */
-       { &asn_OER_type_areaScope_constr_21, &asn_PER_type_areaScope_constr_21, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_areaScope_specs_21     /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SIB_TypeInfo_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SIB_TypeInfo, type),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_type_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "type"
-               },
-       { ATF_POINTER, 2, offsetof(struct SIB_TypeInfo, valueTag),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_valueTag_constr_20, &asn_PER_memb_valueTag_constr_20,  memb_valueTag_constraint_1 },
-               0, 0, /* No default value */
-               "valueTag"
-               },
-       { ATF_POINTER, 1, offsetof(struct SIB_TypeInfo, areaScope),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_areaScope_21,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "areaScope"
-               },
-};
-static const int asn_MAP_SIB_TypeInfo_oms_1[] = { 1, 2 };
-static const ber_tlv_tag_t asn_DEF_SIB_TypeInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SIB_TypeInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* type */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* valueTag */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* areaScope */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SIB_TypeInfo_specs_1 = {
-       sizeof(struct SIB_TypeInfo),
-       offsetof(struct SIB_TypeInfo, _asn_ctx),
-       asn_MAP_SIB_TypeInfo_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_SIB_TypeInfo_oms_1,     /* Optional members */
-       2, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SIB_TypeInfo = {
-       "SIB-TypeInfo",
-       "SIB-TypeInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SIB_TypeInfo_tags_1,
-       sizeof(asn_DEF_SIB_TypeInfo_tags_1)
-               /sizeof(asn_DEF_SIB_TypeInfo_tags_1[0]), /* 1 */
-       asn_DEF_SIB_TypeInfo_tags_1,    /* Same as above */
-       sizeof(asn_DEF_SIB_TypeInfo_tags_1)
-               /sizeof(asn_DEF_SIB_TypeInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SIB_TypeInfo_1,
-       3,      /* Elements count */
-       &asn_SPC_SIB_TypeInfo_specs_1   /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SIB-TypeInfo.h b/src/codec_utils/SYSINFO/SIB-TypeInfo.h
deleted file mode 100644 (file)
index c6aa37d..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SIB_TypeInfo_H_
-#define        _SIB_TypeInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SIB_TypeInfo__type {
-       SIB_TypeInfo__type_sibType2     = 0,
-       SIB_TypeInfo__type_sibType3     = 1,
-       SIB_TypeInfo__type_sibType4     = 2,
-       SIB_TypeInfo__type_sibType5     = 3,
-       SIB_TypeInfo__type_sibType6     = 4,
-       SIB_TypeInfo__type_sibType7     = 5,
-       SIB_TypeInfo__type_sibType8     = 6,
-       SIB_TypeInfo__type_sibType9     = 7,
-       SIB_TypeInfo__type_spare8       = 8,
-       SIB_TypeInfo__type_spare7       = 9,
-       SIB_TypeInfo__type_spare6       = 10,
-       SIB_TypeInfo__type_spare5       = 11,
-       SIB_TypeInfo__type_spare4       = 12,
-       SIB_TypeInfo__type_spare3       = 13,
-       SIB_TypeInfo__type_spare2       = 14,
-       SIB_TypeInfo__type_spare1       = 15
-       /*
-        * Enumeration is extensible
-        */
-} e_SIB_TypeInfo__type;
-typedef enum SIB_TypeInfo__areaScope {
-       SIB_TypeInfo__areaScope_true    = 0
-} e_SIB_TypeInfo__areaScope;
-
-/* SIB-TypeInfo */
-typedef struct SIB_TypeInfo {
-       long     type;
-       long    *valueTag;      /* OPTIONAL */
-       long    *areaScope;     /* OPTIONAL */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SIB_TypeInfo_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_type_2;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_areaScope_21;  // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SIB_TypeInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_SIB_TypeInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_SIB_TypeInfo_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SIB_TypeInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SIB1.c b/src/codec_utils/SYSINFO/SIB1.c
deleted file mode 100644 (file)
index 5dcf37a..0000000
+++ /dev/null
@@ -1,699 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SIB1.h"
-
-#include "ConnEstFailureControl.h"
-#include "SI-SchedulingInfo.h"
-#include "ServingCellConfigCommonSIB.h"
-#include "UE-TimersAndConstants.h"
-#include "UAC-BarringPerCatList.h"
-#include "UAC-BarringPerPLMN-List.h"
-static int
-memb_q_RxLevMinOffset_constraint_2(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 <= 8)) {
-               /* 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_q_QualMinOffset_constraint_2(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 <= 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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_individualPLMNList_constraint_21(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 >= 2 && size <= 12)) {
-               /* 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;
-       }
-}
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_memb_q_RxLevMinOffset_constr_4 CC_NOTUSED = {
-       { 1, 1 }        /* (1..8) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_q_RxLevMinOffset_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_q_QualMinOffset_constr_7 CC_NOTUSED = {
-       { 1, 1 }        /* (1..8) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_q_QualMinOffset_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ims_EmergencySupport_constr_12 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ims_EmergencySupport_constr_12 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_eCallOverIMS_Support_constr_14 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_eCallOverIMS_Support_constr_14 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_individualPLMNList_constr_23 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(2..12)) */};
-static asn_per_constraints_t asn_PER_type_individualPLMNList_constr_23 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  2,  12 }       /* (SIZE(2..12)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_individualPLMNList_constr_23 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(2..12)) */};
-static asn_per_constraints_t asn_PER_memb_individualPLMNList_constr_23 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  2,  12 }       /* (SIZE(2..12)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_useFullResumeID_constr_25 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_useFullResumeID_constr_25 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_cellSelectionInfo_2[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMin),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_Q_RxLevMin,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "q-RxLevMin"
-               },
-       { ATF_POINTER, 4, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMinOffset),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_q_RxLevMinOffset_constr_4, &asn_PER_memb_q_RxLevMinOffset_constr_4,  memb_q_RxLevMinOffset_constraint_2 },
-               0, 0, /* No default value */
-               "q-RxLevMinOffset"
-               },
-       { ATF_POINTER, 3, offsetof(struct SIB1__cellSelectionInfo, q_RxLevMinSUL),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_Q_RxLevMin,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "q-RxLevMinSUL"
-               },
-       { ATF_POINTER, 2, offsetof(struct SIB1__cellSelectionInfo, q_QualMin),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_Q_QualMin,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "q-QualMin"
-               },
-       { ATF_POINTER, 1, offsetof(struct SIB1__cellSelectionInfo, q_QualMinOffset),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_q_QualMinOffset_constr_7, &asn_PER_memb_q_QualMinOffset_constr_7,  memb_q_QualMinOffset_constraint_2 },
-               0, 0, /* No default value */
-               "q-QualMinOffset"
-               },
-};
-static const int asn_MAP_cellSelectionInfo_oms_2[] = { 1, 2, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_cellSelectionInfo_tags_2[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_cellSelectionInfo_tag2el_2[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* q-RxLevMin */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* q-RxLevMinOffset */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* q-RxLevMinSUL */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* q-QualMin */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* q-QualMinOffset */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_cellSelectionInfo_specs_2 = {
-       sizeof(struct SIB1__cellSelectionInfo),
-       offsetof(struct SIB1__cellSelectionInfo, _asn_ctx),
-       asn_MAP_cellSelectionInfo_tag2el_2,
-       5,      /* Count of tags in the map */
-       asn_MAP_cellSelectionInfo_oms_2,        /* Optional members */
-       4, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_cellSelectionInfo_2 = {
-       "cellSelectionInfo",
-       "cellSelectionInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_cellSelectionInfo_tags_2,
-       sizeof(asn_DEF_cellSelectionInfo_tags_2)
-               /sizeof(asn_DEF_cellSelectionInfo_tags_2[0]) - 1, /* 1 */
-       asn_DEF_cellSelectionInfo_tags_2,       /* Same as above */
-       sizeof(asn_DEF_cellSelectionInfo_tags_2)
-               /sizeof(asn_DEF_cellSelectionInfo_tags_2[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_cellSelectionInfo_2,
-       5,      /* Elements count */
-       &asn_SPC_cellSelectionInfo_specs_2      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ims_EmergencySupport_value2enum_12[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_ims_EmergencySupport_enum2value_12[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ims_EmergencySupport_specs_12 = {
-       asn_MAP_ims_EmergencySupport_value2enum_12,     /* "tag" => N; sorted by tag */
-       asn_MAP_ims_EmergencySupport_enum2value_12,     /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ims_EmergencySupport_tags_12[] = {
-       (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_ims_EmergencySupport_12 = {
-       "ims-EmergencySupport",
-       "ims-EmergencySupport",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ims_EmergencySupport_tags_12,
-       sizeof(asn_DEF_ims_EmergencySupport_tags_12)
-               /sizeof(asn_DEF_ims_EmergencySupport_tags_12[0]) - 1, /* 1 */
-       asn_DEF_ims_EmergencySupport_tags_12,   /* Same as above */
-       sizeof(asn_DEF_ims_EmergencySupport_tags_12)
-               /sizeof(asn_DEF_ims_EmergencySupport_tags_12[0]), /* 2 */
-       { &asn_OER_type_ims_EmergencySupport_constr_12, &asn_PER_type_ims_EmergencySupport_constr_12, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ims_EmergencySupport_specs_12  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_eCallOverIMS_Support_value2enum_14[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_eCallOverIMS_Support_enum2value_14[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_eCallOverIMS_Support_specs_14 = {
-       asn_MAP_eCallOverIMS_Support_value2enum_14,     /* "tag" => N; sorted by tag */
-       asn_MAP_eCallOverIMS_Support_enum2value_14,     /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_eCallOverIMS_Support_tags_14[] = {
-       (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_eCallOverIMS_Support_14 = {
-       "eCallOverIMS-Support",
-       "eCallOverIMS-Support",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_eCallOverIMS_Support_tags_14,
-       sizeof(asn_DEF_eCallOverIMS_Support_tags_14)
-               /sizeof(asn_DEF_eCallOverIMS_Support_tags_14[0]) - 1, /* 1 */
-       asn_DEF_eCallOverIMS_Support_tags_14,   /* Same as above */
-       sizeof(asn_DEF_eCallOverIMS_Support_tags_14)
-               /sizeof(asn_DEF_eCallOverIMS_Support_tags_14[0]), /* 2 */
-       { &asn_OER_type_eCallOverIMS_Support_constr_14, &asn_PER_type_eCallOverIMS_Support_constr_14, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_eCallOverIMS_Support_specs_14  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_individualPLMNList_23[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
-               0,
-               &asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_individualPLMNList_tags_23[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_individualPLMNList_specs_23 = {
-       sizeof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList),
-       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList, _asn_ctx),
-       1,      /* XER encoding is XMLValueList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_individualPLMNList_23 = {
-       "individualPLMNList",
-       "individualPLMNList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_individualPLMNList_tags_23,
-       sizeof(asn_DEF_individualPLMNList_tags_23)
-               /sizeof(asn_DEF_individualPLMNList_tags_23[0]) - 1, /* 1 */
-       asn_DEF_individualPLMNList_tags_23,     /* Same as above */
-       sizeof(asn_DEF_individualPLMNList_tags_23)
-               /sizeof(asn_DEF_individualPLMNList_tags_23[0]), /* 2 */
-       { &asn_OER_type_individualPLMNList_constr_23, &asn_PER_type_individualPLMNList_constr_23, SEQUENCE_OF_constraint },
-       asn_MBR_individualPLMNList_23,
-       1,      /* Single element */
-       &asn_SPC_individualPLMNList_specs_23    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_uac_AccessCategory1_SelectionAssistanceInfo_21[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, choice.plmnCommon),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "plmnCommon"
-               },
-       { ATF_POINTER, 0, offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, choice.individualPLMNList),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_individualPLMNList_23,
-               0,
-               { &asn_OER_memb_individualPLMNList_constr_23, &asn_PER_memb_individualPLMNList_constr_23,  memb_individualPLMNList_constraint_21 },
-               0, 0, /* No default value */
-               "individualPLMNList"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_uac_AccessCategory1_SelectionAssistanceInfo_tag2el_21[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmnCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* individualPLMNList */
-};
-static asn_CHOICE_specifics_t asn_SPC_uac_AccessCategory1_SelectionAssistanceInfo_specs_21 = {
-       sizeof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo),
-       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, _asn_ctx),
-       offsetof(struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo, present),
-       sizeof(((struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo *)0)->present),
-       asn_MAP_uac_AccessCategory1_SelectionAssistanceInfo_tag2el_21,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_uac_AccessCategory1_SelectionAssistanceInfo_21 = {
-       "uac-AccessCategory1-SelectionAssistanceInfo",
-       "uac-AccessCategory1-SelectionAssistanceInfo",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21, &asn_PER_type_uac_AccessCategory1_SelectionAssistanceInfo_constr_21, CHOICE_constraint },
-       asn_MBR_uac_AccessCategory1_SelectionAssistanceInfo_21,
-       2,      /* Elements count */
-       &asn_SPC_uac_AccessCategory1_SelectionAssistanceInfo_specs_21   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_uac_BarringInfo_17[] = {
-       { ATF_POINTER, 2, offsetof(struct SIB1__uac_BarringInfo, uac_BarringForCommon),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_BarringPerCatList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringForCommon"
-               },
-       { ATF_POINTER, 1, offsetof(struct SIB1__uac_BarringInfo, uac_BarringPerPLMN_List),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_BarringPerPLMN_List,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringPerPLMN-List"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SIB1__uac_BarringInfo, uac_BarringInfoSetList),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_BarringInfoSetList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringInfoSetList"
-               },
-       { ATF_POINTER, 1, offsetof(struct SIB1__uac_BarringInfo, uac_AccessCategory1_SelectionAssistanceInfo),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_uac_AccessCategory1_SelectionAssistanceInfo_21,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-AccessCategory1-SelectionAssistanceInfo"
-               },
-};
-static const int asn_MAP_uac_BarringInfo_oms_17[] = { 0, 1, 3 };
-static const ber_tlv_tag_t asn_DEF_uac_BarringInfo_tags_17[] = {
-       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_uac_BarringInfo_tag2el_17[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-BarringForCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uac-BarringPerPLMN-List */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* uac-BarringInfoSetList */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* uac-AccessCategory1-SelectionAssistanceInfo */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_uac_BarringInfo_specs_17 = {
-       sizeof(struct SIB1__uac_BarringInfo),
-       offsetof(struct SIB1__uac_BarringInfo, _asn_ctx),
-       asn_MAP_uac_BarringInfo_tag2el_17,
-       4,      /* Count of tags in the map */
-       asn_MAP_uac_BarringInfo_oms_17, /* Optional members */
-       3, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_uac_BarringInfo_17 = {
-       "uac-BarringInfo",
-       "uac-BarringInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_uac_BarringInfo_tags_17,
-       sizeof(asn_DEF_uac_BarringInfo_tags_17)
-               /sizeof(asn_DEF_uac_BarringInfo_tags_17[0]) - 1, /* 1 */
-       asn_DEF_uac_BarringInfo_tags_17,        /* Same as above */
-       sizeof(asn_DEF_uac_BarringInfo_tags_17)
-               /sizeof(asn_DEF_uac_BarringInfo_tags_17[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_uac_BarringInfo_17,
-       4,      /* Elements count */
-       &asn_SPC_uac_BarringInfo_specs_17       /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_useFullResumeID_value2enum_25[] = {
-       { 0,    4,      "true" }
-};
-static const unsigned int asn_MAP_useFullResumeID_enum2value_25[] = {
-       0       /* true(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_useFullResumeID_specs_25 = {
-       asn_MAP_useFullResumeID_value2enum_25,  /* "tag" => N; sorted by tag */
-       asn_MAP_useFullResumeID_enum2value_25,  /* N => "tag"; sorted by N */
-       1,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_useFullResumeID_tags_25[] = {
-       (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_useFullResumeID_25 = {
-       "useFullResumeID",
-       "useFullResumeID",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_useFullResumeID_tags_25,
-       sizeof(asn_DEF_useFullResumeID_tags_25)
-               /sizeof(asn_DEF_useFullResumeID_tags_25[0]) - 1, /* 1 */
-       asn_DEF_useFullResumeID_tags_25,        /* Same as above */
-       sizeof(asn_DEF_useFullResumeID_tags_25)
-               /sizeof(asn_DEF_useFullResumeID_tags_25[0]), /* 2 */
-       { &asn_OER_type_useFullResumeID_constr_25, &asn_PER_type_useFullResumeID_constr_25, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_useFullResumeID_specs_25       /* Additional specs */
-};
-
-static const ber_tlv_tag_t asn_DEF_nonCriticalExtension_tags_28[] = {
-       (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SEQUENCE_specifics_t asn_SPC_nonCriticalExtension_specs_28 = {
-       sizeof(struct SIB1__nonCriticalExtension),
-       offsetof(struct SIB1__nonCriticalExtension, _asn_ctx),
-       0,      /* No top level tags */
-       0,      /* No tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_nonCriticalExtension_28 = {
-       "nonCriticalExtension",
-       "nonCriticalExtension",
-       &asn_OP_SEQUENCE,
-       asn_DEF_nonCriticalExtension_tags_28,
-       sizeof(asn_DEF_nonCriticalExtension_tags_28)
-               /sizeof(asn_DEF_nonCriticalExtension_tags_28[0]) - 1, /* 1 */
-       asn_DEF_nonCriticalExtension_tags_28,   /* Same as above */
-       sizeof(asn_DEF_nonCriticalExtension_tags_28)
-               /sizeof(asn_DEF_nonCriticalExtension_tags_28[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_nonCriticalExtension_specs_28  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_SIB1_1[] = {
-       { ATF_POINTER, 1, offsetof(struct SIB1, cellSelectionInfo),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_cellSelectionInfo_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellSelectionInfo"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SIB1, cellAccessRelatedInfo),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_CellAccessRelatedInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "cellAccessRelatedInfo"
-               },
-       { ATF_POINTER, 10, offsetof(struct SIB1, connEstFailureControl),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ConnEstFailureControl,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "connEstFailureControl"
-               },
-       { ATF_POINTER, 9, offsetof(struct SIB1, si_SchedulingInfo),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SI_SchedulingInfo,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-SchedulingInfo"
-               },
-       { ATF_POINTER, 8, offsetof(struct SIB1, servingCellConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ServingCellConfigCommonSIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "servingCellConfigCommon"
-               },
-       { ATF_POINTER, 7, offsetof(struct SIB1, ims_EmergencySupport),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ims_EmergencySupport_12,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ims-EmergencySupport"
-               },
-       { ATF_POINTER, 6, offsetof(struct SIB1, eCallOverIMS_Support),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_eCallOverIMS_Support_14,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "eCallOverIMS-Support"
-               },
-       { ATF_POINTER, 5, offsetof(struct SIB1, ue_TimersAndConstants),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UE_TimersAndConstants,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ue-TimersAndConstants"
-               },
-       { ATF_POINTER, 4, offsetof(struct SIB1, uac_BarringInfo),
-               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-               0,
-               &asn_DEF_uac_BarringInfo_17,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringInfo"
-               },
-       { ATF_POINTER, 3, offsetof(struct SIB1, useFullResumeID),
-               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_useFullResumeID_25,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "useFullResumeID"
-               },
-       { ATF_POINTER, 2, offsetof(struct SIB1, lateNonCriticalExtension),
-               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_OCTET_STRING,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "lateNonCriticalExtension"
-               },
-       { ATF_POINTER, 1, offsetof(struct SIB1, nonCriticalExtension),
-               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
-               0,
-               &asn_DEF_nonCriticalExtension_28,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nonCriticalExtension"
-               },
-};
-static const int asn_MAP_SIB1_oms_1[] = { 0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
-static const ber_tlv_tag_t asn_DEF_SIB1_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SIB1_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* cellSelectionInfo */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* cellAccessRelatedInfo */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* connEstFailureControl */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* si-SchedulingInfo */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* servingCellConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ims-EmergencySupport */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* eCallOverIMS-Support */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* ue-TimersAndConstants */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* uac-BarringInfo */
-    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* useFullResumeID */
-    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* lateNonCriticalExtension */
-    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 } /* nonCriticalExtension */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_SIB1_specs_1 = {
-       sizeof(struct SIB1),
-       offsetof(struct SIB1, _asn_ctx),
-       asn_MAP_SIB1_tag2el_1,
-       12,     /* Count of tags in the map */
-       asn_MAP_SIB1_oms_1,     /* Optional members */
-       11, 0,  /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SIB1 = {
-       "SIB1",
-       "SIB1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SIB1_tags_1,
-       sizeof(asn_DEF_SIB1_tags_1)
-               /sizeof(asn_DEF_SIB1_tags_1[0]), /* 1 */
-       asn_DEF_SIB1_tags_1,    /* Same as above */
-       sizeof(asn_DEF_SIB1_tags_1)
-               /sizeof(asn_DEF_SIB1_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SIB1_1,
-       12,     /* Elements count */
-       &asn_SPC_SIB1_specs_1   /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SIB1.h b/src/codec_utils/SYSINFO/SIB1.h
deleted file mode 100644 (file)
index ad87727..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SIB1_H_
-#define        _SIB1_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "CellAccessRelatedInfo.h"
-#include <NativeEnumerated.h>
-#include <OCTET_STRING.h>
-#include "Q-RxLevMin.h"
-#include <NativeInteger.h>
-#include "Q-QualMin.h"
-#include <constr_SEQUENCE.h>
-#include "UAC-BarringInfoSetList.h"
-#include "UAC-AccessCategory1-SelectionAssistanceInfo.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_CHOICE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SIB1__ims_EmergencySupport {
-       SIB1__ims_EmergencySupport_true = 0
-} e_SIB1__ims_EmergencySupport;
-typedef enum SIB1__eCallOverIMS_Support {
-       SIB1__eCallOverIMS_Support_true = 0
-} e_SIB1__eCallOverIMS_Support;
-typedef enum SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR {
-       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_NOTHING,  /* No components present */
-       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_plmnCommon,
-       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR_individualPLMNList
-} SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR;
-typedef enum SIB1__useFullResumeID {
-       SIB1__useFullResumeID_true      = 0
-} e_SIB1__useFullResumeID;
-
-/* Forward declarations */
-struct ConnEstFailureControl;
-struct SI_SchedulingInfo;
-struct ServingCellConfigCommonSIB;
-struct UE_TimersAndConstants;
-struct UAC_BarringPerCatList;
-struct UAC_BarringPerPLMN_List;
-
-/* SIB1 */
-typedef struct SIB1 {
-       struct SIB1__cellSelectionInfo {
-               Q_RxLevMin_t     q_RxLevMin;
-               long    *q_RxLevMinOffset;      /* OPTIONAL */
-               Q_RxLevMin_t    *q_RxLevMinSUL; /* OPTIONAL */
-               Q_QualMin_t     *q_QualMin;     /* OPTIONAL */
-               long    *q_QualMinOffset;       /* OPTIONAL */
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *cellSelectionInfo;
-       CellAccessRelatedInfo_t  cellAccessRelatedInfo;
-       struct ConnEstFailureControl    *connEstFailureControl; /* OPTIONAL */
-       struct SI_SchedulingInfo        *si_SchedulingInfo;     /* OPTIONAL */
-       struct ServingCellConfigCommonSIB       *servingCellConfigCommon;       /* OPTIONAL */
-       long    *ims_EmergencySupport;  /* OPTIONAL */
-       long    *eCallOverIMS_Support;  /* OPTIONAL */
-       struct UE_TimersAndConstants    *ue_TimersAndConstants; /* OPTIONAL */
-       struct SIB1__uac_BarringInfo {
-               struct UAC_BarringPerCatList    *uac_BarringForCommon;  /* OPTIONAL */
-               struct UAC_BarringPerPLMN_List  *uac_BarringPerPLMN_List;       /* OPTIONAL */
-               UAC_BarringInfoSetList_t         uac_BarringInfoSetList;
-               struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo {
-                       SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_PR present;
-                       union SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo_u {
-                               UAC_AccessCategory1_SelectionAssistanceInfo_t    plmnCommon;
-                               struct SIB1__uac_BarringInfo__uac_AccessCategory1_SelectionAssistanceInfo__individualPLMNList {
-                                       A_SEQUENCE_OF(UAC_AccessCategory1_SelectionAssistanceInfo_t) list;
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *individualPLMNList;
-                       } choice;
-                       
-                       /* Context for parsing across buffer boundaries */
-                       asn_struct_ctx_t _asn_ctx;
-               } *uac_AccessCategory1_SelectionAssistanceInfo;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *uac_BarringInfo;
-       long    *useFullResumeID;       /* OPTIONAL */
-       OCTET_STRING_t  *lateNonCriticalExtension;      /* OPTIONAL */
-       struct SIB1__nonCriticalExtension {
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *nonCriticalExtension;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SIB1_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_ims_EmergencySupport_12;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_eCallOverIMS_Support_14;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_useFullResumeID_25;    // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SIB1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SIB1_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SchedulingInfo.c b/src/codec_utils/SYSINFO/SchedulingInfo.c
deleted file mode 100644 (file)
index 0b85aa6..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SchedulingInfo.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.
- */
-static asn_oer_constraints_t asn_OER_type_si_BroadcastStatus_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_si_BroadcastStatus_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_si_Periodicity_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_si_Periodicity_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_si_BroadcastStatus_value2enum_2[] = {
-       { 0,    12,     "broadcasting" },
-       { 1,    15,     "notBroadcasting" }
-};
-static const unsigned int asn_MAP_si_BroadcastStatus_enum2value_2[] = {
-       0,      /* broadcasting(0) */
-       1       /* notBroadcasting(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_si_BroadcastStatus_specs_2 = {
-       asn_MAP_si_BroadcastStatus_value2enum_2,        /* "tag" => N; sorted by tag */
-       asn_MAP_si_BroadcastStatus_enum2value_2,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_si_BroadcastStatus_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_si_BroadcastStatus_2 = {
-       "si-BroadcastStatus",
-       "si-BroadcastStatus",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_si_BroadcastStatus_tags_2,
-       sizeof(asn_DEF_si_BroadcastStatus_tags_2)
-               /sizeof(asn_DEF_si_BroadcastStatus_tags_2[0]) - 1, /* 1 */
-       asn_DEF_si_BroadcastStatus_tags_2,      /* Same as above */
-       sizeof(asn_DEF_si_BroadcastStatus_tags_2)
-               /sizeof(asn_DEF_si_BroadcastStatus_tags_2[0]), /* 2 */
-       { &asn_OER_type_si_BroadcastStatus_constr_2, &asn_PER_type_si_BroadcastStatus_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_si_BroadcastStatus_specs_2     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_si_Periodicity_value2enum_5[] = {
-       { 0,    3,      "rf8" },
-       { 1,    4,      "rf16" },
-       { 2,    4,      "rf32" },
-       { 3,    4,      "rf64" },
-       { 4,    5,      "rf128" },
-       { 5,    5,      "rf256" },
-       { 6,    5,      "rf512" }
-};
-static const unsigned int asn_MAP_si_Periodicity_enum2value_5[] = {
-       4,      /* rf128(4) */
-       1,      /* rf16(1) */
-       5,      /* rf256(5) */
-       2,      /* rf32(2) */
-       6,      /* rf512(6) */
-       3,      /* rf64(3) */
-       0       /* rf8(0) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_si_Periodicity_specs_5 = {
-       asn_MAP_si_Periodicity_value2enum_5,    /* "tag" => N; sorted by tag */
-       asn_MAP_si_Periodicity_enum2value_5,    /* N => "tag"; sorted by N */
-       7,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_si_Periodicity_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_si_Periodicity_5 = {
-       "si-Periodicity",
-       "si-Periodicity",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_si_Periodicity_tags_5,
-       sizeof(asn_DEF_si_Periodicity_tags_5)
-               /sizeof(asn_DEF_si_Periodicity_tags_5[0]) - 1, /* 1 */
-       asn_DEF_si_Periodicity_tags_5,  /* Same as above */
-       sizeof(asn_DEF_si_Periodicity_tags_5)
-               /sizeof(asn_DEF_si_Periodicity_tags_5[0]), /* 2 */
-       { &asn_OER_type_si_Periodicity_constr_5, &asn_PER_type_si_Periodicity_constr_5, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_si_Periodicity_specs_5 /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SchedulingInfo_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, si_BroadcastStatus),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_si_BroadcastStatus_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-BroadcastStatus"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, si_Periodicity),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_si_Periodicity_5,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "si-Periodicity"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SchedulingInfo, sib_MappingInfo),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SIB_Mapping,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "sib-MappingInfo"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_SchedulingInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SchedulingInfo_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* si-BroadcastStatus */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* si-Periodicity */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* sib-MappingInfo */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SchedulingInfo_specs_1 = {
-       sizeof(struct SchedulingInfo),
-       offsetof(struct SchedulingInfo, _asn_ctx),
-       asn_MAP_SchedulingInfo_tag2el_1,
-       3,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SchedulingInfo = {
-       "SchedulingInfo",
-       "SchedulingInfo",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SchedulingInfo_tags_1,
-       sizeof(asn_DEF_SchedulingInfo_tags_1)
-               /sizeof(asn_DEF_SchedulingInfo_tags_1[0]), /* 1 */
-       asn_DEF_SchedulingInfo_tags_1,  /* Same as above */
-       sizeof(asn_DEF_SchedulingInfo_tags_1)
-               /sizeof(asn_DEF_SchedulingInfo_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SchedulingInfo_1,
-       3,      /* Elements count */
-       &asn_SPC_SchedulingInfo_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SchedulingInfo.h b/src/codec_utils/SYSINFO/SchedulingInfo.h
deleted file mode 100644 (file)
index a607806..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SchedulingInfo_H_
-#define        _SchedulingInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include "SIB-Mapping.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SchedulingInfo__si_BroadcastStatus {
-       SchedulingInfo__si_BroadcastStatus_broadcasting = 0,
-       SchedulingInfo__si_BroadcastStatus_notBroadcasting      = 1
-} e_SchedulingInfo__si_BroadcastStatus;
-typedef enum SchedulingInfo__si_Periodicity {
-       SchedulingInfo__si_Periodicity_rf8      = 0,
-       SchedulingInfo__si_Periodicity_rf16     = 1,
-       SchedulingInfo__si_Periodicity_rf32     = 2,
-       SchedulingInfo__si_Periodicity_rf64     = 3,
-       SchedulingInfo__si_Periodicity_rf128    = 4,
-       SchedulingInfo__si_Periodicity_rf256    = 5,
-       SchedulingInfo__si_Periodicity_rf512    = 6
-} e_SchedulingInfo__si_Periodicity;
-
-/* SchedulingInfo */
-typedef struct SchedulingInfo {
-       long     si_BroadcastStatus;
-       long     si_Periodicity;
-       SIB_Mapping_t    sib_MappingInfo;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SchedulingInfo_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_si_BroadcastStatus_2;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_si_Periodicity_5;      // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SchedulingInfo;
-extern asn_SEQUENCE_specifics_t asn_SPC_SchedulingInfo_specs_1;
-extern asn_TYPE_member_t asn_MBR_SchedulingInfo_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SchedulingInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SearchSpace.c b/src/codec_utils/SYSINFO/SearchSpace.c
deleted file mode 100644 (file)
index ba35a34..0000000
+++ /dev/null
@@ -1,2077 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SearchSpace.h"
-
-static int
-memb_sl2_constraint_4(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 <= 1)) {
-               /* 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_sl4_constraint_4(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 <= 3)) {
-               /* 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_sl5_constraint_4(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 <= 4)) {
-               /* 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_sl8_constraint_4(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 <= 7)) {
-               /* 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_sl10_constraint_4(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 <= 9)) {
-               /* 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_sl16_constraint_4(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 <= 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_sl20_constraint_4(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 <= 19)) {
-               /* 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_sl40_constraint_4(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 <= 39)) {
-               /* 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_sl80_constraint_4(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 <= 79)) {
-               /* 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_sl160_constraint_4(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 <= 159)) {
-               /* 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_sl320_constraint_4(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 <= 319)) {
-               /* 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_sl640_constraint_4(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 <= 639)) {
-               /* 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_sl1280_constraint_4(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 <= 1279)) {
-               /* 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_sl2560_constraint_4(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 <= 2559)) {
-               /* 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 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.
- */
-/*
- * 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_duration_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 >= 2 && value <= 2559)) {
-               /* 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_monitoringSymbolsWithinSlot_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 == 14)) {
-               /* 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_sl2_constr_6 CC_NOTUSED = {
-       { 1, 1 }        /* (0..1) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl2_constr_6 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_sl4_constr_7 CC_NOTUSED = {
-       { 1, 1 }        /* (0..3) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl4_constr_7 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  3 }        /* (0..3) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl5_constr_8 CC_NOTUSED = {
-       { 1, 1 }        /* (0..4) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl5_constr_8 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  4 }        /* (0..4) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl8_constr_9 CC_NOTUSED = {
-       { 1, 1 }        /* (0..7) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl8_constr_9 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl10_constr_10 CC_NOTUSED = {
-       { 1, 1 }        /* (0..9) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl10_constr_10 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  9 }        /* (0..9) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl16_constr_11 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl16_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl20_constr_12 CC_NOTUSED = {
-       { 1, 1 }        /* (0..19) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl20_constr_12 CC_NOTUSED = {
-       { APC_CONSTRAINED,       5,  5,  0,  19 }       /* (0..19) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl40_constr_13 CC_NOTUSED = {
-       { 1, 1 }        /* (0..39) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl40_constr_13 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl80_constr_14 CC_NOTUSED = {
-       { 1, 1 }        /* (0..79) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl80_constr_14 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7,  0,  79 }       /* (0..79) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl160_constr_15 CC_NOTUSED = {
-       { 1, 1 }        /* (0..159) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl160_constr_15 CC_NOTUSED = {
-       { APC_CONSTRAINED,       8,  8,  0,  159 }      /* (0..159) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl320_constr_16 CC_NOTUSED = {
-       { 2, 1 }        /* (0..319) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl320_constr_16 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  319 }      /* (0..319) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl640_constr_17 CC_NOTUSED = {
-       { 2, 1 }        /* (0..639) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl640_constr_17 CC_NOTUSED = {
-       { APC_CONSTRAINED,       10,  10,  0,  639 }    /* (0..639) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl1280_constr_18 CC_NOTUSED = {
-       { 2, 1 }        /* (0..1279) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl1280_constr_18 CC_NOTUSED = {
-       { APC_CONSTRAINED,       11,  11,  0,  1279 }   /* (0..1279) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_sl2560_constr_19 CC_NOTUSED = {
-       { 2, 1 }        /* (0..2559) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_sl2560_constr_19 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  0,  2559 }   /* (0..2559) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_monitoringSlotPeriodicityAndOffset_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_monitoringSlotPeriodicityAndOffset_constr_4 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  14 }       /* (0..14) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel1_constr_23 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel1_constr_23 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel2_constr_32 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel2_constr_32 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel4_constr_41 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel4_constr_41 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel8_constr_50 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel8_constr_50 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel16_constr_59 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel16_constr_59 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_aggregationLevel1_constr_74 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel1_constr_74 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_aggregationLevel2_constr_77 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel2_constr_77 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_aggregationLevel4_constr_80 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel4_constr_80 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_aggregationLevel8_constr_83 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel8_constr_83 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_aggregationLevel16_constr_86 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_aggregationLevel16_constr_86 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_dummy1_constr_95 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dummy1_constr_95 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_dummy2_constr_104 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dummy2_constr_104 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_dci_Formats_constr_109 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dci_Formats_constr_109 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_searchSpaceType_constr_68 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_searchSpaceType_constr_68 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_duration_constr_20 CC_NOTUSED = {
-       { 2, 1 }        /* (2..2559) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_duration_constr_20 CC_NOTUSED = {
-       { APC_CONSTRAINED,       12,  12,  2,  2559 }   /* (2..2559) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_monitoringSymbolsWithinSlot_constr_21 CC_NOTUSED = {
-       { 0, 0 },
-       14      /* (SIZE(14..14)) */};
-static asn_per_constraints_t asn_PER_memb_monitoringSymbolsWithinSlot_constr_21 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  14,  14 }      /* (SIZE(14..14)) */,
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_monitoringSlotPeriodicityAndOffset_4[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl1),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NULL,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "sl1"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl2),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl2_constr_6, &asn_PER_memb_sl2_constr_6,  memb_sl2_constraint_4 },
-               0, 0, /* No default value */
-               "sl2"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl4),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl4_constr_7, &asn_PER_memb_sl4_constr_7,  memb_sl4_constraint_4 },
-               0, 0, /* No default value */
-               "sl4"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl5),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl5_constr_8, &asn_PER_memb_sl5_constr_8,  memb_sl5_constraint_4 },
-               0, 0, /* No default value */
-               "sl5"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl8),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl8_constr_9, &asn_PER_memb_sl8_constr_9,  memb_sl8_constraint_4 },
-               0, 0, /* No default value */
-               "sl8"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl10),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl10_constr_10, &asn_PER_memb_sl10_constr_10,  memb_sl10_constraint_4 },
-               0, 0, /* No default value */
-               "sl10"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl16),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl16_constr_11, &asn_PER_memb_sl16_constr_11,  memb_sl16_constraint_4 },
-               0, 0, /* No default value */
-               "sl16"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl20),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl20_constr_12, &asn_PER_memb_sl20_constr_12,  memb_sl20_constraint_4 },
-               0, 0, /* No default value */
-               "sl20"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl40),
-               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl40_constr_13, &asn_PER_memb_sl40_constr_13,  memb_sl40_constraint_4 },
-               0, 0, /* No default value */
-               "sl40"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl80),
-               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl80_constr_14, &asn_PER_memb_sl80_constr_14,  memb_sl80_constraint_4 },
-               0, 0, /* No default value */
-               "sl80"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl160),
-               (ASN_TAG_CLASS_CONTEXT | (10 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl160_constr_15, &asn_PER_memb_sl160_constr_15,  memb_sl160_constraint_4 },
-               0, 0, /* No default value */
-               "sl160"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl320),
-               (ASN_TAG_CLASS_CONTEXT | (11 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl320_constr_16, &asn_PER_memb_sl320_constr_16,  memb_sl320_constraint_4 },
-               0, 0, /* No default value */
-               "sl320"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl640),
-               (ASN_TAG_CLASS_CONTEXT | (12 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl640_constr_17, &asn_PER_memb_sl640_constr_17,  memb_sl640_constraint_4 },
-               0, 0, /* No default value */
-               "sl640"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl1280),
-               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl1280_constr_18, &asn_PER_memb_sl1280_constr_18,  memb_sl1280_constraint_4 },
-               0, 0, /* No default value */
-               "sl1280"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, choice.sl2560),
-               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_sl2560_constr_19, &asn_PER_memb_sl2560_constr_19,  memb_sl2560_constraint_4 },
-               0, 0, /* No default value */
-               "sl2560"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_monitoringSlotPeriodicityAndOffset_tag2el_4[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sl1 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sl2 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* sl4 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sl5 */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* sl8 */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* sl10 */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* sl16 */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* sl20 */
-    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* sl40 */
-    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* sl80 */
-    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* sl160 */
-    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* sl320 */
-    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* sl640 */
-    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* sl1280 */
-    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 } /* sl2560 */
-};
-static asn_CHOICE_specifics_t asn_SPC_monitoringSlotPeriodicityAndOffset_specs_4 = {
-       sizeof(struct SearchSpace__monitoringSlotPeriodicityAndOffset),
-       offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, _asn_ctx),
-       offsetof(struct SearchSpace__monitoringSlotPeriodicityAndOffset, present),
-       sizeof(((struct SearchSpace__monitoringSlotPeriodicityAndOffset *)0)->present),
-       asn_MAP_monitoringSlotPeriodicityAndOffset_tag2el_4,
-       15,     /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_monitoringSlotPeriodicityAndOffset_4 = {
-       "monitoringSlotPeriodicityAndOffset",
-       "monitoringSlotPeriodicityAndOffset",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_monitoringSlotPeriodicityAndOffset_constr_4, &asn_PER_type_monitoringSlotPeriodicityAndOffset_constr_4, CHOICE_constraint },
-       asn_MBR_monitoringSlotPeriodicityAndOffset_4,
-       15,     /* Elements count */
-       &asn_SPC_monitoringSlotPeriodicityAndOffset_specs_4     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel1_value2enum_23[] = {
-       { 0,    2,      "n0" },
-       { 1,    2,      "n1" },
-       { 2,    2,      "n2" },
-       { 3,    2,      "n3" },
-       { 4,    2,      "n4" },
-       { 5,    2,      "n5" },
-       { 6,    2,      "n6" },
-       { 7,    2,      "n8" }
-};
-static const unsigned int asn_MAP_aggregationLevel1_enum2value_23[] = {
-       0,      /* n0(0) */
-       1,      /* n1(1) */
-       2,      /* n2(2) */
-       3,      /* n3(3) */
-       4,      /* n4(4) */
-       5,      /* n5(5) */
-       6,      /* n6(6) */
-       7       /* n8(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel1_specs_23 = {
-       asn_MAP_aggregationLevel1_value2enum_23,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel1_enum2value_23,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel1_tags_23[] = {
-       (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_aggregationLevel1_23 = {
-       "aggregationLevel1",
-       "aggregationLevel1",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel1_tags_23,
-       sizeof(asn_DEF_aggregationLevel1_tags_23)
-               /sizeof(asn_DEF_aggregationLevel1_tags_23[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel1_tags_23,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel1_tags_23)
-               /sizeof(asn_DEF_aggregationLevel1_tags_23[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel1_constr_23, &asn_PER_type_aggregationLevel1_constr_23, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel1_specs_23     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel2_value2enum_32[] = {
-       { 0,    2,      "n0" },
-       { 1,    2,      "n1" },
-       { 2,    2,      "n2" },
-       { 3,    2,      "n3" },
-       { 4,    2,      "n4" },
-       { 5,    2,      "n5" },
-       { 6,    2,      "n6" },
-       { 7,    2,      "n8" }
-};
-static const unsigned int asn_MAP_aggregationLevel2_enum2value_32[] = {
-       0,      /* n0(0) */
-       1,      /* n1(1) */
-       2,      /* n2(2) */
-       3,      /* n3(3) */
-       4,      /* n4(4) */
-       5,      /* n5(5) */
-       6,      /* n6(6) */
-       7       /* n8(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel2_specs_32 = {
-       asn_MAP_aggregationLevel2_value2enum_32,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel2_enum2value_32,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel2_tags_32[] = {
-       (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_aggregationLevel2_32 = {
-       "aggregationLevel2",
-       "aggregationLevel2",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel2_tags_32,
-       sizeof(asn_DEF_aggregationLevel2_tags_32)
-               /sizeof(asn_DEF_aggregationLevel2_tags_32[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel2_tags_32,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel2_tags_32)
-               /sizeof(asn_DEF_aggregationLevel2_tags_32[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel2_constr_32, &asn_PER_type_aggregationLevel2_constr_32, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel2_specs_32     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel4_value2enum_41[] = {
-       { 0,    2,      "n0" },
-       { 1,    2,      "n1" },
-       { 2,    2,      "n2" },
-       { 3,    2,      "n3" },
-       { 4,    2,      "n4" },
-       { 5,    2,      "n5" },
-       { 6,    2,      "n6" },
-       { 7,    2,      "n8" }
-};
-static const unsigned int asn_MAP_aggregationLevel4_enum2value_41[] = {
-       0,      /* n0(0) */
-       1,      /* n1(1) */
-       2,      /* n2(2) */
-       3,      /* n3(3) */
-       4,      /* n4(4) */
-       5,      /* n5(5) */
-       6,      /* n6(6) */
-       7       /* n8(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel4_specs_41 = {
-       asn_MAP_aggregationLevel4_value2enum_41,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel4_enum2value_41,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel4_tags_41[] = {
-       (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_aggregationLevel4_41 = {
-       "aggregationLevel4",
-       "aggregationLevel4",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel4_tags_41,
-       sizeof(asn_DEF_aggregationLevel4_tags_41)
-               /sizeof(asn_DEF_aggregationLevel4_tags_41[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel4_tags_41,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel4_tags_41)
-               /sizeof(asn_DEF_aggregationLevel4_tags_41[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel4_constr_41, &asn_PER_type_aggregationLevel4_constr_41, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel4_specs_41     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel8_value2enum_50[] = {
-       { 0,    2,      "n0" },
-       { 1,    2,      "n1" },
-       { 2,    2,      "n2" },
-       { 3,    2,      "n3" },
-       { 4,    2,      "n4" },
-       { 5,    2,      "n5" },
-       { 6,    2,      "n6" },
-       { 7,    2,      "n8" }
-};
-static const unsigned int asn_MAP_aggregationLevel8_enum2value_50[] = {
-       0,      /* n0(0) */
-       1,      /* n1(1) */
-       2,      /* n2(2) */
-       3,      /* n3(3) */
-       4,      /* n4(4) */
-       5,      /* n5(5) */
-       6,      /* n6(6) */
-       7       /* n8(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel8_specs_50 = {
-       asn_MAP_aggregationLevel8_value2enum_50,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel8_enum2value_50,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel8_tags_50[] = {
-       (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_aggregationLevel8_50 = {
-       "aggregationLevel8",
-       "aggregationLevel8",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel8_tags_50,
-       sizeof(asn_DEF_aggregationLevel8_tags_50)
-               /sizeof(asn_DEF_aggregationLevel8_tags_50[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel8_tags_50,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel8_tags_50)
-               /sizeof(asn_DEF_aggregationLevel8_tags_50[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel8_constr_50, &asn_PER_type_aggregationLevel8_constr_50, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel8_specs_50     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel16_value2enum_59[] = {
-       { 0,    2,      "n0" },
-       { 1,    2,      "n1" },
-       { 2,    2,      "n2" },
-       { 3,    2,      "n3" },
-       { 4,    2,      "n4" },
-       { 5,    2,      "n5" },
-       { 6,    2,      "n6" },
-       { 7,    2,      "n8" }
-};
-static const unsigned int asn_MAP_aggregationLevel16_enum2value_59[] = {
-       0,      /* n0(0) */
-       1,      /* n1(1) */
-       2,      /* n2(2) */
-       3,      /* n3(3) */
-       4,      /* n4(4) */
-       5,      /* n5(5) */
-       6,      /* n6(6) */
-       7       /* n8(7) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel16_specs_59 = {
-       asn_MAP_aggregationLevel16_value2enum_59,       /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel16_enum2value_59,       /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel16_tags_59[] = {
-       (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_aggregationLevel16_59 = {
-       "aggregationLevel16",
-       "aggregationLevel16",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel16_tags_59,
-       sizeof(asn_DEF_aggregationLevel16_tags_59)
-               /sizeof(asn_DEF_aggregationLevel16_tags_59[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel16_tags_59,     /* Same as above */
-       sizeof(asn_DEF_aggregationLevel16_tags_59)
-               /sizeof(asn_DEF_aggregationLevel16_tags_59[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel16_constr_59, &asn_PER_type_aggregationLevel16_constr_59, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel16_specs_59    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_nrofCandidates_22[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel1),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel1_23,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel1"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel2),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel2_32,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel2"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel4),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel4_41,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel4"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel8),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel8_50,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel8"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__nrofCandidates, aggregationLevel16),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel16_59,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel16"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_nrofCandidates_tags_22[] = {
-       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_nrofCandidates_tag2el_22[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aggregationLevel1 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aggregationLevel2 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aggregationLevel4 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* aggregationLevel8 */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* aggregationLevel16 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_nrofCandidates_specs_22 = {
-       sizeof(struct SearchSpace__nrofCandidates),
-       offsetof(struct SearchSpace__nrofCandidates, _asn_ctx),
-       asn_MAP_nrofCandidates_tag2el_22,
-       5,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_nrofCandidates_22 = {
-       "nrofCandidates",
-       "nrofCandidates",
-       &asn_OP_SEQUENCE,
-       asn_DEF_nrofCandidates_tags_22,
-       sizeof(asn_DEF_nrofCandidates_tags_22)
-               /sizeof(asn_DEF_nrofCandidates_tags_22[0]) - 1, /* 1 */
-       asn_DEF_nrofCandidates_tags_22, /* Same as above */
-       sizeof(asn_DEF_nrofCandidates_tags_22)
-               /sizeof(asn_DEF_nrofCandidates_tags_22[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_nrofCandidates_22,
-       5,      /* Elements count */
-       &asn_SPC_nrofCandidates_specs_22        /* Additional specs */
-};
-
-static const ber_tlv_tag_t asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SEQUENCE_specifics_t asn_SPC_dci_Format0_0_AndFormat1_0_specs_70 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0, _asn_ctx),
-       0,      /* No top level tags */
-       0,      /* No tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_dci_Format0_0_AndFormat1_0_70 = {
-       "dci-Format0-0-AndFormat1-0",
-       "dci-Format0-0-AndFormat1-0",
-       &asn_OP_SEQUENCE,
-       asn_DEF_dci_Format0_0_AndFormat1_0_tags_70,
-       sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70)
-               /sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[0]) - 1, /* 1 */
-       asn_DEF_dci_Format0_0_AndFormat1_0_tags_70,     /* Same as above */
-       sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70)
-               /sizeof(asn_DEF_dci_Format0_0_AndFormat1_0_tags_70[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_dci_Format0_0_AndFormat1_0_specs_70    /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel1_value2enum_74[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_aggregationLevel1_enum2value_74[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel1_specs_74 = {
-       asn_MAP_aggregationLevel1_value2enum_74,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel1_enum2value_74,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel1_tags_74[] = {
-       (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_aggregationLevel1_74 = {
-       "aggregationLevel1",
-       "aggregationLevel1",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel1_tags_74,
-       sizeof(asn_DEF_aggregationLevel1_tags_74)
-               /sizeof(asn_DEF_aggregationLevel1_tags_74[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel1_tags_74,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel1_tags_74)
-               /sizeof(asn_DEF_aggregationLevel1_tags_74[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel1_constr_74, &asn_PER_type_aggregationLevel1_constr_74, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel1_specs_74     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel2_value2enum_77[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_aggregationLevel2_enum2value_77[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel2_specs_77 = {
-       asn_MAP_aggregationLevel2_value2enum_77,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel2_enum2value_77,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel2_tags_77[] = {
-       (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_aggregationLevel2_77 = {
-       "aggregationLevel2",
-       "aggregationLevel2",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel2_tags_77,
-       sizeof(asn_DEF_aggregationLevel2_tags_77)
-               /sizeof(asn_DEF_aggregationLevel2_tags_77[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel2_tags_77,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel2_tags_77)
-               /sizeof(asn_DEF_aggregationLevel2_tags_77[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel2_constr_77, &asn_PER_type_aggregationLevel2_constr_77, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel2_specs_77     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel4_value2enum_80[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_aggregationLevel4_enum2value_80[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel4_specs_80 = {
-       asn_MAP_aggregationLevel4_value2enum_80,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel4_enum2value_80,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel4_tags_80[] = {
-       (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_aggregationLevel4_80 = {
-       "aggregationLevel4",
-       "aggregationLevel4",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel4_tags_80,
-       sizeof(asn_DEF_aggregationLevel4_tags_80)
-               /sizeof(asn_DEF_aggregationLevel4_tags_80[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel4_tags_80,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel4_tags_80)
-               /sizeof(asn_DEF_aggregationLevel4_tags_80[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel4_constr_80, &asn_PER_type_aggregationLevel4_constr_80, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel4_specs_80     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel8_value2enum_83[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_aggregationLevel8_enum2value_83[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel8_specs_83 = {
-       asn_MAP_aggregationLevel8_value2enum_83,        /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel8_enum2value_83,        /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel8_tags_83[] = {
-       (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_aggregationLevel8_83 = {
-       "aggregationLevel8",
-       "aggregationLevel8",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel8_tags_83,
-       sizeof(asn_DEF_aggregationLevel8_tags_83)
-               /sizeof(asn_DEF_aggregationLevel8_tags_83[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel8_tags_83,      /* Same as above */
-       sizeof(asn_DEF_aggregationLevel8_tags_83)
-               /sizeof(asn_DEF_aggregationLevel8_tags_83[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel8_constr_83, &asn_PER_type_aggregationLevel8_constr_83, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel8_specs_83     /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_aggregationLevel16_value2enum_86[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_aggregationLevel16_enum2value_86[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_aggregationLevel16_specs_86 = {
-       asn_MAP_aggregationLevel16_value2enum_86,       /* "tag" => N; sorted by tag */
-       asn_MAP_aggregationLevel16_enum2value_86,       /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_aggregationLevel16_tags_86[] = {
-       (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_aggregationLevel16_86 = {
-       "aggregationLevel16",
-       "aggregationLevel16",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_aggregationLevel16_tags_86,
-       sizeof(asn_DEF_aggregationLevel16_tags_86)
-               /sizeof(asn_DEF_aggregationLevel16_tags_86[0]) - 1, /* 1 */
-       asn_DEF_aggregationLevel16_tags_86,     /* Same as above */
-       sizeof(asn_DEF_aggregationLevel16_tags_86)
-               /sizeof(asn_DEF_aggregationLevel16_tags_86[0]), /* 2 */
-       { &asn_OER_type_aggregationLevel16_constr_86, &asn_PER_type_aggregationLevel16_constr_86, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_aggregationLevel16_specs_86    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_nrofCandidates_SFI_73[] = {
-       { ATF_POINTER, 5, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel1),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel1_74,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel1"
-               },
-       { ATF_POINTER, 4, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel2),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel2_77,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel2"
-               },
-       { ATF_POINTER, 3, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel4),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel4_80,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel4"
-               },
-       { ATF_POINTER, 2, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel8),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel8_83,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel8"
-               },
-       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, aggregationLevel16),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_aggregationLevel16_86,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "aggregationLevel16"
-               },
-};
-static const int asn_MAP_nrofCandidates_SFI_oms_73[] = { 0, 1, 2, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_nrofCandidates_SFI_tags_73[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_nrofCandidates_SFI_tag2el_73[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* aggregationLevel1 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* aggregationLevel2 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* aggregationLevel4 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* aggregationLevel8 */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* aggregationLevel16 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_nrofCandidates_SFI_specs_73 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI, _asn_ctx),
-       asn_MAP_nrofCandidates_SFI_tag2el_73,
-       5,      /* Count of tags in the map */
-       asn_MAP_nrofCandidates_SFI_oms_73,      /* Optional members */
-       5, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_nrofCandidates_SFI_73 = {
-       "nrofCandidates-SFI",
-       "nrofCandidates-SFI",
-       &asn_OP_SEQUENCE,
-       asn_DEF_nrofCandidates_SFI_tags_73,
-       sizeof(asn_DEF_nrofCandidates_SFI_tags_73)
-               /sizeof(asn_DEF_nrofCandidates_SFI_tags_73[0]) - 1, /* 1 */
-       asn_DEF_nrofCandidates_SFI_tags_73,     /* Same as above */
-       sizeof(asn_DEF_nrofCandidates_SFI_tags_73)
-               /sizeof(asn_DEF_nrofCandidates_SFI_tags_73[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_nrofCandidates_SFI_73,
-       5,      /* Elements count */
-       &asn_SPC_nrofCandidates_SFI_specs_73    /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_dci_Format2_0_72[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0, nrofCandidates_SFI),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_nrofCandidates_SFI_73,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nrofCandidates-SFI"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_dci_Format2_0_tags_72[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_dci_Format2_0_tag2el_72[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* nrofCandidates-SFI */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_0_specs_72 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_0),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_0, _asn_ctx),
-       asn_MAP_dci_Format2_0_tag2el_72,
-       1,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       1,      /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_dci_Format2_0_72 = {
-       "dci-Format2-0",
-       "dci-Format2-0",
-       &asn_OP_SEQUENCE,
-       asn_DEF_dci_Format2_0_tags_72,
-       sizeof(asn_DEF_dci_Format2_0_tags_72)
-               /sizeof(asn_DEF_dci_Format2_0_tags_72[0]) - 1, /* 1 */
-       asn_DEF_dci_Format2_0_tags_72,  /* Same as above */
-       sizeof(asn_DEF_dci_Format2_0_tags_72)
-               /sizeof(asn_DEF_dci_Format2_0_tags_72[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_dci_Format2_0_72,
-       1,      /* Elements count */
-       &asn_SPC_dci_Format2_0_specs_72 /* Additional specs */
-};
-
-static const ber_tlv_tag_t asn_DEF_dci_Format2_1_tags_90[] = {
-       (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_1_specs_90 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_1),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_1, _asn_ctx),
-       0,      /* No top level tags */
-       0,      /* No tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_dci_Format2_1_90 = {
-       "dci-Format2-1",
-       "dci-Format2-1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_dci_Format2_1_tags_90,
-       sizeof(asn_DEF_dci_Format2_1_tags_90)
-               /sizeof(asn_DEF_dci_Format2_1_tags_90[0]) - 1, /* 1 */
-       asn_DEF_dci_Format2_1_tags_90,  /* Same as above */
-       sizeof(asn_DEF_dci_Format2_1_tags_90)
-               /sizeof(asn_DEF_dci_Format2_1_tags_90[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_dci_Format2_1_specs_90 /* Additional specs */
-};
-
-static const ber_tlv_tag_t asn_DEF_dci_Format2_2_tags_92[] = {
-       (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_2_specs_92 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_2),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_2, _asn_ctx),
-       0,      /* No top level tags */
-       0,      /* No tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_dci_Format2_2_92 = {
-       "dci-Format2-2",
-       "dci-Format2-2",
-       &asn_OP_SEQUENCE,
-       asn_DEF_dci_Format2_2_tags_92,
-       sizeof(asn_DEF_dci_Format2_2_tags_92)
-               /sizeof(asn_DEF_dci_Format2_2_tags_92[0]) - 1, /* 1 */
-       asn_DEF_dci_Format2_2_tags_92,  /* Same as above */
-       sizeof(asn_DEF_dci_Format2_2_tags_92)
-               /sizeof(asn_DEF_dci_Format2_2_tags_92[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_dci_Format2_2_specs_92 /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_dummy1_value2enum_95[] = {
-       { 0,    3,      "sl1" },
-       { 1,    3,      "sl2" },
-       { 2,    3,      "sl4" },
-       { 3,    3,      "sl5" },
-       { 4,    3,      "sl8" },
-       { 5,    4,      "sl10" },
-       { 6,    4,      "sl16" },
-       { 7,    4,      "sl20" }
-};
-static const unsigned int asn_MAP_dummy1_enum2value_95[] = {
-       0,      /* sl1(0) */
-       5,      /* sl10(5) */
-       6,      /* sl16(6) */
-       1,      /* sl2(1) */
-       7,      /* sl20(7) */
-       2,      /* sl4(2) */
-       3,      /* sl5(3) */
-       4       /* sl8(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dummy1_specs_95 = {
-       asn_MAP_dummy1_value2enum_95,   /* "tag" => N; sorted by tag */
-       asn_MAP_dummy1_enum2value_95,   /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dummy1_tags_95[] = {
-       (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_dummy1_95 = {
-       "dummy1",
-       "dummy1",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dummy1_tags_95,
-       sizeof(asn_DEF_dummy1_tags_95)
-               /sizeof(asn_DEF_dummy1_tags_95[0]) - 1, /* 1 */
-       asn_DEF_dummy1_tags_95, /* Same as above */
-       sizeof(asn_DEF_dummy1_tags_95)
-               /sizeof(asn_DEF_dummy1_tags_95[0]), /* 2 */
-       { &asn_OER_type_dummy1_constr_95, &asn_PER_type_dummy1_constr_95, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dummy1_specs_95        /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_dummy2_value2enum_104[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" }
-};
-static const unsigned int asn_MAP_dummy2_enum2value_104[] = {
-       0,      /* n1(0) */
-       1       /* n2(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dummy2_specs_104 = {
-       asn_MAP_dummy2_value2enum_104,  /* "tag" => N; sorted by tag */
-       asn_MAP_dummy2_enum2value_104,  /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dummy2_tags_104[] = {
-       (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_dummy2_104 = {
-       "dummy2",
-       "dummy2",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dummy2_tags_104,
-       sizeof(asn_DEF_dummy2_tags_104)
-               /sizeof(asn_DEF_dummy2_tags_104[0]) - 1, /* 1 */
-       asn_DEF_dummy2_tags_104,        /* Same as above */
-       sizeof(asn_DEF_dummy2_tags_104)
-               /sizeof(asn_DEF_dummy2_tags_104[0]), /* 2 */
-       { &asn_OER_type_dummy2_constr_104, &asn_PER_type_dummy2_constr_104, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dummy2_specs_104       /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_dci_Format2_3_94[] = {
-       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, dummy1),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dummy1_95,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dummy1"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, dummy2),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dummy2_104,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dummy2"
-               },
-};
-static const int asn_MAP_dci_Format2_3_oms_94[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_dci_Format2_3_tags_94[] = {
-       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_dci_Format2_3_tag2el_94[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dummy1 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* dummy2 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_dci_Format2_3_specs_94 = {
-       sizeof(struct SearchSpace__searchSpaceType__common__dci_Format2_3),
-       offsetof(struct SearchSpace__searchSpaceType__common__dci_Format2_3, _asn_ctx),
-       asn_MAP_dci_Format2_3_tag2el_94,
-       2,      /* Count of tags in the map */
-       asn_MAP_dci_Format2_3_oms_94,   /* Optional members */
-       1, 0,   /* Root/Additions */
-       2,      /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_dci_Format2_3_94 = {
-       "dci-Format2-3",
-       "dci-Format2-3",
-       &asn_OP_SEQUENCE,
-       asn_DEF_dci_Format2_3_tags_94,
-       sizeof(asn_DEF_dci_Format2_3_tags_94)
-               /sizeof(asn_DEF_dci_Format2_3_tags_94[0]) - 1, /* 1 */
-       asn_DEF_dci_Format2_3_tags_94,  /* Same as above */
-       sizeof(asn_DEF_dci_Format2_3_tags_94)
-               /sizeof(asn_DEF_dci_Format2_3_tags_94[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_dci_Format2_3_94,
-       2,      /* Elements count */
-       &asn_SPC_dci_Format2_3_specs_94 /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_common_69[] = {
-       { ATF_POINTER, 5, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format0_0_AndFormat1_0),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_dci_Format0_0_AndFormat1_0_70,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Format0-0-AndFormat1-0"
-               },
-       { ATF_POINTER, 4, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_0),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_dci_Format2_0_72,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Format2-0"
-               },
-       { ATF_POINTER, 3, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_1),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               0,
-               &asn_DEF_dci_Format2_1_90,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Format2-1"
-               },
-       { ATF_POINTER, 2, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_2),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               0,
-               &asn_DEF_dci_Format2_2_92,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Format2-2"
-               },
-       { ATF_POINTER, 1, offsetof(struct SearchSpace__searchSpaceType__common, dci_Format2_3),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               0,
-               &asn_DEF_dci_Format2_3_94,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Format2-3"
-               },
-};
-static const int asn_MAP_common_oms_69[] = { 0, 1, 2, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_common_tags_69[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_common_tag2el_69[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dci-Format0-0-AndFormat1-0 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* dci-Format2-0 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* dci-Format2-1 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* dci-Format2-2 */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* dci-Format2-3 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_common_specs_69 = {
-       sizeof(struct SearchSpace__searchSpaceType__common),
-       offsetof(struct SearchSpace__searchSpaceType__common, _asn_ctx),
-       asn_MAP_common_tag2el_69,
-       5,      /* Count of tags in the map */
-       asn_MAP_common_oms_69,  /* Optional members */
-       5, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_common_69 = {
-       "common",
-       "common",
-       &asn_OP_SEQUENCE,
-       asn_DEF_common_tags_69,
-       sizeof(asn_DEF_common_tags_69)
-               /sizeof(asn_DEF_common_tags_69[0]) - 1, /* 1 */
-       asn_DEF_common_tags_69, /* Same as above */
-       sizeof(asn_DEF_common_tags_69)
-               /sizeof(asn_DEF_common_tags_69[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_common_69,
-       5,      /* Elements count */
-       &asn_SPC_common_specs_69        /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_dci_Formats_value2enum_109[] = {
-       { 0,    18,     "formats0-0-And-1-0" },
-       { 1,    18,     "formats0-1-And-1-1" }
-};
-static const unsigned int asn_MAP_dci_Formats_enum2value_109[] = {
-       0,      /* formats0-0-And-1-0(0) */
-       1       /* formats0-1-And-1-1(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dci_Formats_specs_109 = {
-       asn_MAP_dci_Formats_value2enum_109,     /* "tag" => N; sorted by tag */
-       asn_MAP_dci_Formats_enum2value_109,     /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dci_Formats_tags_109[] = {
-       (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_dci_Formats_109 = {
-       "dci-Formats",
-       "dci-Formats",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dci_Formats_tags_109,
-       sizeof(asn_DEF_dci_Formats_tags_109)
-               /sizeof(asn_DEF_dci_Formats_tags_109[0]) - 1, /* 1 */
-       asn_DEF_dci_Formats_tags_109,   /* Same as above */
-       sizeof(asn_DEF_dci_Formats_tags_109)
-               /sizeof(asn_DEF_dci_Formats_tags_109[0]), /* 2 */
-       { &asn_OER_type_dci_Formats_constr_109, &asn_PER_type_dci_Formats_constr_109, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dci_Formats_specs_109  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ue_Specific_108[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace__searchSpaceType__ue_Specific, dci_Formats),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dci_Formats_109,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dci-Formats"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_ue_Specific_tags_108[] = {
-       (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ue_Specific_tag2el_108[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dci-Formats */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ue_Specific_specs_108 = {
-       sizeof(struct SearchSpace__searchSpaceType__ue_Specific),
-       offsetof(struct SearchSpace__searchSpaceType__ue_Specific, _asn_ctx),
-       asn_MAP_ue_Specific_tag2el_108,
-       1,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       1,      /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ue_Specific_108 = {
-       "ue-Specific",
-       "ue-Specific",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ue_Specific_tags_108,
-       sizeof(asn_DEF_ue_Specific_tags_108)
-               /sizeof(asn_DEF_ue_Specific_tags_108[0]) - 1, /* 1 */
-       asn_DEF_ue_Specific_tags_108,   /* Same as above */
-       sizeof(asn_DEF_ue_Specific_tags_108)
-               /sizeof(asn_DEF_ue_Specific_tags_108[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ue_Specific_108,
-       1,      /* Elements count */
-       &asn_SPC_ue_Specific_specs_108  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_searchSpaceType_68[] = {
-       { ATF_POINTER, 0, offsetof(struct SearchSpace__searchSpaceType, choice.common),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_common_69,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "common"
-               },
-       { ATF_POINTER, 0, offsetof(struct SearchSpace__searchSpaceType, choice.ue_Specific),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               0,
-               &asn_DEF_ue_Specific_108,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ue-Specific"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_searchSpaceType_tag2el_68[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* common */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ue-Specific */
-};
-static asn_CHOICE_specifics_t asn_SPC_searchSpaceType_specs_68 = {
-       sizeof(struct SearchSpace__searchSpaceType),
-       offsetof(struct SearchSpace__searchSpaceType, _asn_ctx),
-       offsetof(struct SearchSpace__searchSpaceType, present),
-       sizeof(((struct SearchSpace__searchSpaceType *)0)->present),
-       asn_MAP_searchSpaceType_tag2el_68,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_searchSpaceType_68 = {
-       "searchSpaceType",
-       "searchSpaceType",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_searchSpaceType_constr_68, &asn_PER_type_searchSpaceType_constr_68, CHOICE_constraint },
-       asn_MBR_searchSpaceType_68,
-       2,      /* Elements count */
-       &asn_SPC_searchSpaceType_specs_68       /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_SearchSpace_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct SearchSpace, searchSpaceId),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SearchSpaceId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceId"
-               },
-       { ATF_POINTER, 6, offsetof(struct SearchSpace, controlResourceSetId),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ControlResourceSetId,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "controlResourceSetId"
-               },
-       { ATF_POINTER, 5, offsetof(struct SearchSpace, monitoringSlotPeriodicityAndOffset),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_monitoringSlotPeriodicityAndOffset_4,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "monitoringSlotPeriodicityAndOffset"
-               },
-       { ATF_POINTER, 4, offsetof(struct SearchSpace, duration),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_duration_constr_20, &asn_PER_memb_duration_constr_20,  memb_duration_constraint_1 },
-               0, 0, /* No default value */
-               "duration"
-               },
-       { ATF_POINTER, 3, offsetof(struct SearchSpace, monitoringSymbolsWithinSlot),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_monitoringSymbolsWithinSlot_constr_21, &asn_PER_memb_monitoringSymbolsWithinSlot_constr_21,  memb_monitoringSymbolsWithinSlot_constraint_1 },
-               0, 0, /* No default value */
-               "monitoringSymbolsWithinSlot"
-               },
-       { ATF_POINTER, 2, offsetof(struct SearchSpace, nrofCandidates),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               0,
-               &asn_DEF_nrofCandidates_22,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "nrofCandidates"
-               },
-       { ATF_POINTER, 1, offsetof(struct SearchSpace, searchSpaceType),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_searchSpaceType_68,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "searchSpaceType"
-               },
-};
-static const int asn_MAP_SearchSpace_oms_1[] = { 1, 2, 3, 4, 5, 6 };
-static const ber_tlv_tag_t asn_DEF_SearchSpace_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_SearchSpace_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* searchSpaceId */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* controlResourceSetId */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* monitoringSlotPeriodicityAndOffset */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* duration */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* monitoringSymbolsWithinSlot */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* nrofCandidates */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* searchSpaceType */
-};
-asn_SEQUENCE_specifics_t asn_SPC_SearchSpace_specs_1 = {
-       sizeof(struct SearchSpace),
-       offsetof(struct SearchSpace, _asn_ctx),
-       asn_MAP_SearchSpace_tag2el_1,
-       7,      /* Count of tags in the map */
-       asn_MAP_SearchSpace_oms_1,      /* Optional members */
-       6, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_SearchSpace = {
-       "SearchSpace",
-       "SearchSpace",
-       &asn_OP_SEQUENCE,
-       asn_DEF_SearchSpace_tags_1,
-       sizeof(asn_DEF_SearchSpace_tags_1)
-               /sizeof(asn_DEF_SearchSpace_tags_1[0]), /* 1 */
-       asn_DEF_SearchSpace_tags_1,     /* Same as above */
-       sizeof(asn_DEF_SearchSpace_tags_1)
-               /sizeof(asn_DEF_SearchSpace_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_SearchSpace_1,
-       7,      /* Elements count */
-       &asn_SPC_SearchSpace_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SearchSpace.h b/src/codec_utils/SYSINFO/SearchSpace.h
deleted file mode 100644 (file)
index 9468400..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SearchSpace_H_
-#define        _SearchSpace_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "SearchSpaceId.h"
-#include "ControlResourceSetId.h"
-#include <NativeInteger.h>
-#include <BIT_STRING.h>
-#include <NULL.h>
-#include <constr_CHOICE.h>
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SearchSpace__monitoringSlotPeriodicityAndOffset_PR {
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_NOTHING,     /* No components present */
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl4,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl5,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl8,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl10,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl16,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl20,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl40,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl80,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl160,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl320,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl640,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl1280,
-       SearchSpace__monitoringSlotPeriodicityAndOffset_PR_sl2560
-} SearchSpace__monitoringSlotPeriodicityAndOffset_PR;
-typedef enum SearchSpace__nrofCandidates__aggregationLevel1 {
-       SearchSpace__nrofCandidates__aggregationLevel1_n0       = 0,
-       SearchSpace__nrofCandidates__aggregationLevel1_n1       = 1,
-       SearchSpace__nrofCandidates__aggregationLevel1_n2       = 2,
-       SearchSpace__nrofCandidates__aggregationLevel1_n3       = 3,
-       SearchSpace__nrofCandidates__aggregationLevel1_n4       = 4,
-       SearchSpace__nrofCandidates__aggregationLevel1_n5       = 5,
-       SearchSpace__nrofCandidates__aggregationLevel1_n6       = 6,
-       SearchSpace__nrofCandidates__aggregationLevel1_n8       = 7
-} e_SearchSpace__nrofCandidates__aggregationLevel1;
-typedef enum SearchSpace__nrofCandidates__aggregationLevel2 {
-       SearchSpace__nrofCandidates__aggregationLevel2_n0       = 0,
-       SearchSpace__nrofCandidates__aggregationLevel2_n1       = 1,
-       SearchSpace__nrofCandidates__aggregationLevel2_n2       = 2,
-       SearchSpace__nrofCandidates__aggregationLevel2_n3       = 3,
-       SearchSpace__nrofCandidates__aggregationLevel2_n4       = 4,
-       SearchSpace__nrofCandidates__aggregationLevel2_n5       = 5,
-       SearchSpace__nrofCandidates__aggregationLevel2_n6       = 6,
-       SearchSpace__nrofCandidates__aggregationLevel2_n8       = 7
-} e_SearchSpace__nrofCandidates__aggregationLevel2;
-typedef enum SearchSpace__nrofCandidates__aggregationLevel4 {
-       SearchSpace__nrofCandidates__aggregationLevel4_n0       = 0,
-       SearchSpace__nrofCandidates__aggregationLevel4_n1       = 1,
-       SearchSpace__nrofCandidates__aggregationLevel4_n2       = 2,
-       SearchSpace__nrofCandidates__aggregationLevel4_n3       = 3,
-       SearchSpace__nrofCandidates__aggregationLevel4_n4       = 4,
-       SearchSpace__nrofCandidates__aggregationLevel4_n5       = 5,
-       SearchSpace__nrofCandidates__aggregationLevel4_n6       = 6,
-       SearchSpace__nrofCandidates__aggregationLevel4_n8       = 7
-} e_SearchSpace__nrofCandidates__aggregationLevel4;
-typedef enum SearchSpace__nrofCandidates__aggregationLevel8 {
-       SearchSpace__nrofCandidates__aggregationLevel8_n0       = 0,
-       SearchSpace__nrofCandidates__aggregationLevel8_n1       = 1,
-       SearchSpace__nrofCandidates__aggregationLevel8_n2       = 2,
-       SearchSpace__nrofCandidates__aggregationLevel8_n3       = 3,
-       SearchSpace__nrofCandidates__aggregationLevel8_n4       = 4,
-       SearchSpace__nrofCandidates__aggregationLevel8_n5       = 5,
-       SearchSpace__nrofCandidates__aggregationLevel8_n6       = 6,
-       SearchSpace__nrofCandidates__aggregationLevel8_n8       = 7
-} e_SearchSpace__nrofCandidates__aggregationLevel8;
-typedef enum SearchSpace__nrofCandidates__aggregationLevel16 {
-       SearchSpace__nrofCandidates__aggregationLevel16_n0      = 0,
-       SearchSpace__nrofCandidates__aggregationLevel16_n1      = 1,
-       SearchSpace__nrofCandidates__aggregationLevel16_n2      = 2,
-       SearchSpace__nrofCandidates__aggregationLevel16_n3      = 3,
-       SearchSpace__nrofCandidates__aggregationLevel16_n4      = 4,
-       SearchSpace__nrofCandidates__aggregationLevel16_n5      = 5,
-       SearchSpace__nrofCandidates__aggregationLevel16_n6      = 6,
-       SearchSpace__nrofCandidates__aggregationLevel16_n8      = 7
-} e_SearchSpace__nrofCandidates__aggregationLevel16;
-typedef enum SearchSpace__searchSpaceType_PR {
-       SearchSpace__searchSpaceType_PR_NOTHING,        /* No components present */
-       SearchSpace__searchSpaceType_PR_common,
-       SearchSpace__searchSpaceType_PR_ue_Specific
-} SearchSpace__searchSpaceType_PR;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1 {
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n1   = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1_n2   = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel1;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2 {
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n1   = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2_n2   = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel2;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4 {
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n1   = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4_n2   = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel4;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8 {
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n1   = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8_n2   = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel8;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16 {
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n1  = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16_n2  = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI__aggregationLevel16;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1 {
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl1 = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl2 = 1,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl4 = 2,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl5 = 3,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl8 = 4,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl10        = 5,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl16        = 6,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1_sl20        = 7
-} e_SearchSpace__searchSpaceType__common__dci_Format2_3__dummy1;
-typedef enum SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2 {
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2_n1  = 0,
-       SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2_n2  = 1
-} e_SearchSpace__searchSpaceType__common__dci_Format2_3__dummy2;
-typedef enum SearchSpace__searchSpaceType__ue_Specific__dci_Formats {
-       SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_0_And_1_0       = 0,
-       SearchSpace__searchSpaceType__ue_Specific__dci_Formats_formats0_1_And_1_1       = 1
-} e_SearchSpace__searchSpaceType__ue_Specific__dci_Formats;
-
-/* SearchSpace */
-typedef struct SearchSpace {
-       SearchSpaceId_t  searchSpaceId;
-       ControlResourceSetId_t  *controlResourceSetId;  /* OPTIONAL */
-       struct SearchSpace__monitoringSlotPeriodicityAndOffset {
-               SearchSpace__monitoringSlotPeriodicityAndOffset_PR present;
-               union SearchSpace__monitoringSlotPeriodicityAndOffset_u {
-                       NULL_t   sl1;
-                       long     sl2;
-                       long     sl4;
-                       long     sl5;
-                       long     sl8;
-                       long     sl10;
-                       long     sl16;
-                       long     sl20;
-                       long     sl40;
-                       long     sl80;
-                       long     sl160;
-                       long     sl320;
-                       long     sl640;
-                       long     sl1280;
-                       long     sl2560;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *monitoringSlotPeriodicityAndOffset;
-       long    *duration;      /* OPTIONAL */
-       BIT_STRING_t    *monitoringSymbolsWithinSlot;   /* OPTIONAL */
-       struct SearchSpace__nrofCandidates {
-               long     aggregationLevel1;
-               long     aggregationLevel2;
-               long     aggregationLevel4;
-               long     aggregationLevel8;
-               long     aggregationLevel16;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *nrofCandidates;
-       struct SearchSpace__searchSpaceType {
-               SearchSpace__searchSpaceType_PR present;
-               union SearchSpace__searchSpaceType_u {
-                       struct SearchSpace__searchSpaceType__common {
-                               struct SearchSpace__searchSpaceType__common__dci_Format0_0_AndFormat1_0 {
-                                       /*
-                                        * This type is extensible,
-                                        * possible extensions are below.
-                                        */
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *dci_Format0_0_AndFormat1_0;
-                               struct SearchSpace__searchSpaceType__common__dci_Format2_0 {
-                                       struct SearchSpace__searchSpaceType__common__dci_Format2_0__nrofCandidates_SFI {
-                                               long    *aggregationLevel1;     /* OPTIONAL */
-                                               long    *aggregationLevel2;     /* OPTIONAL */
-                                               long    *aggregationLevel4;     /* OPTIONAL */
-                                               long    *aggregationLevel8;     /* OPTIONAL */
-                                               long    *aggregationLevel16;    /* OPTIONAL */
-                                               
-                                               /* Context for parsing across buffer boundaries */
-                                               asn_struct_ctx_t _asn_ctx;
-                                       } nrofCandidates_SFI;
-                                       /*
-                                        * This type is extensible,
-                                        * possible extensions are below.
-                                        */
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *dci_Format2_0;
-                               struct SearchSpace__searchSpaceType__common__dci_Format2_1 {
-                                       /*
-                                        * This type is extensible,
-                                        * possible extensions are below.
-                                        */
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *dci_Format2_1;
-                               struct SearchSpace__searchSpaceType__common__dci_Format2_2 {
-                                       /*
-                                        * This type is extensible,
-                                        * possible extensions are below.
-                                        */
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *dci_Format2_2;
-                               struct SearchSpace__searchSpaceType__common__dci_Format2_3 {
-                                       long    *dummy1;        /* OPTIONAL */
-                                       long     dummy2;
-                                       /*
-                                        * This type is extensible,
-                                        * possible extensions are below.
-                                        */
-                                       
-                                       /* Context for parsing across buffer boundaries */
-                                       asn_struct_ctx_t _asn_ctx;
-                               } *dci_Format2_3;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *common;
-                       struct SearchSpace__searchSpaceType__ue_Specific {
-                               long     dci_Formats;
-                               /*
-                                * This type is extensible,
-                                * possible extensions are below.
-                                */
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *ue_Specific;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *searchSpaceType;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} SearchSpace_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel1_23;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel2_32;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel4_41;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel8_50;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel16_59; // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel1_74;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel2_77;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel4_80;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel8_83;  // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_aggregationLevel16_86; // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_dummy1_95;     // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_dummy2_104;    // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_dci_Formats_109;       // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_SearchSpace;
-extern asn_SEQUENCE_specifics_t asn_SPC_SearchSpace_specs_1;
-extern asn_TYPE_member_t asn_MBR_SearchSpace_1[7];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SearchSpace_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SearchSpaceId.c b/src/codec_utils/SYSINFO/SearchSpaceId.c
deleted file mode 100644 (file)
index 355d1af..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SearchSpaceId.h"
-
-int
-SearchSpaceId_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 <= 39)) {
-               /* 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_SearchSpaceId_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..39) */,
-       -1};
-asn_per_constraints_t asn_PER_type_SearchSpaceId_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  0,  39 }       /* (0..39) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_SearchSpaceId_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SearchSpaceId = {
-       "SearchSpaceId",
-       "SearchSpaceId",
-       &asn_OP_NativeInteger,
-       asn_DEF_SearchSpaceId_tags_1,
-       sizeof(asn_DEF_SearchSpaceId_tags_1)
-               /sizeof(asn_DEF_SearchSpaceId_tags_1[0]), /* 1 */
-       asn_DEF_SearchSpaceId_tags_1,   /* Same as above */
-       sizeof(asn_DEF_SearchSpaceId_tags_1)
-               /sizeof(asn_DEF_SearchSpaceId_tags_1[0]), /* 1 */
-       { &asn_OER_type_SearchSpaceId_constr_1, &asn_PER_type_SearchSpaceId_constr_1, SearchSpaceId_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/SearchSpaceId.h b/src/codec_utils/SYSINFO/SearchSpaceId.h
deleted file mode 100644 (file)
index 6ea84b1..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SearchSpaceId_H_
-#define        _SearchSpaceId_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* SearchSpaceId */
-typedef long    SearchSpaceId_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_SearchSpaceId_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_SearchSpaceId;
-asn_struct_free_f SearchSpaceId_free;
-asn_struct_print_f SearchSpaceId_print;
-asn_constr_check_f SearchSpaceId_constraint;
-ber_type_decoder_f SearchSpaceId_decode_ber;
-der_type_encoder_f SearchSpaceId_encode_der;
-xer_type_decoder_f SearchSpaceId_decode_xer;
-xer_type_encoder_f SearchSpaceId_encode_xer;
-oer_type_decoder_f SearchSpaceId_decode_oer;
-oer_type_encoder_f SearchSpaceId_encode_oer;
-per_type_decoder_f SearchSpaceId_decode_uper;
-per_type_encoder_f SearchSpaceId_encode_uper;
-per_type_decoder_f SearchSpaceId_decode_aper;
-per_type_encoder_f SearchSpaceId_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SearchSpaceId_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SearchSpaceZero.c b/src/codec_utils/SYSINFO/SearchSpaceZero.c
deleted file mode 100644 (file)
index 9a94cf0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SearchSpaceZero.h"
-
-int
-SearchSpaceZero_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 <= 15)) {
-               /* 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_SearchSpaceZero_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..15) */,
-       -1};
-asn_per_constraints_t asn_PER_type_SearchSpaceZero_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_SearchSpaceZero_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SearchSpaceZero = {
-       "SearchSpaceZero",
-       "SearchSpaceZero",
-       &asn_OP_NativeInteger,
-       asn_DEF_SearchSpaceZero_tags_1,
-       sizeof(asn_DEF_SearchSpaceZero_tags_1)
-               /sizeof(asn_DEF_SearchSpaceZero_tags_1[0]), /* 1 */
-       asn_DEF_SearchSpaceZero_tags_1, /* Same as above */
-       sizeof(asn_DEF_SearchSpaceZero_tags_1)
-               /sizeof(asn_DEF_SearchSpaceZero_tags_1[0]), /* 1 */
-       { &asn_OER_type_SearchSpaceZero_constr_1, &asn_PER_type_SearchSpaceZero_constr_1, SearchSpaceZero_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/SearchSpaceZero.h b/src/codec_utils/SYSINFO/SearchSpaceZero.h
deleted file mode 100644 (file)
index d362c42..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SearchSpaceZero_H_
-#define        _SearchSpaceZero_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* SearchSpaceZero */
-typedef long    SearchSpaceZero_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_SearchSpaceZero_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_SearchSpaceZero;
-asn_struct_free_f SearchSpaceZero_free;
-asn_struct_print_f SearchSpaceZero_print;
-asn_constr_check_f SearchSpaceZero_constraint;
-ber_type_decoder_f SearchSpaceZero_decode_ber;
-der_type_encoder_f SearchSpaceZero_encode_der;
-xer_type_decoder_f SearchSpaceZero_decode_xer;
-xer_type_encoder_f SearchSpaceZero_encode_xer;
-oer_type_decoder_f SearchSpaceZero_decode_oer;
-oer_type_encoder_f SearchSpaceZero_encode_oer;
-per_type_decoder_f SearchSpaceZero_decode_uper;
-per_type_encoder_f SearchSpaceZero_encode_uper;
-per_type_decoder_f SearchSpaceZero_decode_aper;
-per_type_encoder_f SearchSpaceZero_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SearchSpaceZero_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.c b/src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.c
deleted file mode 100644 (file)
index 95c87e3..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "ServingCellConfigCommonSIB.h"
-
-#include "UplinkConfigCommonSIB.h"
-#include "TDD-UL-DL-ConfigCommon.h"
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_inOneGroup_constraint_9(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;
-       }
-}
-
-static int
-memb_groupPresence_constraint_9(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 NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static int
-memb_ss_PBCH_BlockPower_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 >= -60 && value <= 50)) {
-               /* 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_n_TimingAdvanceOffset_constr_5 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_n_TimingAdvanceOffset_constr_5 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_inOneGroup_constr_10 CC_NOTUSED = {
-       { 0, 0 },
-       8       /* (SIZE(8..8)) */};
-static asn_per_constraints_t asn_PER_memb_inOneGroup_constr_10 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_groupPresence_constr_11 CC_NOTUSED = {
-       { 0, 0 },
-       8       /* (SIZE(8..8)) */};
-static asn_per_constraints_t asn_PER_memb_groupPresence_constr_11 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  8,  8 }        /* (SIZE(8..8)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_ssb_PeriodicityServingCell_constr_12 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_ssb_PeriodicityServingCell_constr_12 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  5 }        /* (0..5) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_ss_PBCH_BlockPower_constr_20 CC_NOTUSED = {
-       { 1, 0 }        /* (-60..50) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_ss_PBCH_BlockPower_constr_20 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7, -60,  50 }      /* (-60..50) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_n_TimingAdvanceOffset_value2enum_5[] = {
-       { 0,    2,      "n0" },
-       { 1,    6,      "n25600" },
-       { 2,    6,      "n39936" }
-};
-static const unsigned int asn_MAP_n_TimingAdvanceOffset_enum2value_5[] = {
-       0,      /* n0(0) */
-       1,      /* n25600(1) */
-       2       /* n39936(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_n_TimingAdvanceOffset_specs_5 = {
-       asn_MAP_n_TimingAdvanceOffset_value2enum_5,     /* "tag" => N; sorted by tag */
-       asn_MAP_n_TimingAdvanceOffset_enum2value_5,     /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_n_TimingAdvanceOffset_tags_5[] = {
-       (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_n_TimingAdvanceOffset_5 = {
-       "n-TimingAdvanceOffset",
-       "n-TimingAdvanceOffset",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_n_TimingAdvanceOffset_tags_5,
-       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5)
-               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5[0]) - 1, /* 1 */
-       asn_DEF_n_TimingAdvanceOffset_tags_5,   /* Same as above */
-       sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5)
-               /sizeof(asn_DEF_n_TimingAdvanceOffset_tags_5[0]), /* 2 */
-       { &asn_OER_type_n_TimingAdvanceOffset_constr_5, &asn_PER_type_n_TimingAdvanceOffset_constr_5, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_n_TimingAdvanceOffset_specs_5  /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ssb_PositionsInBurst_9[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, inOneGroup),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_inOneGroup_constr_10, &asn_PER_memb_inOneGroup_constr_10,  memb_inOneGroup_constraint_9 },
-               0, 0, /* No default value */
-               "inOneGroup"
-               },
-       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, groupPresence),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_groupPresence_constr_11, &asn_PER_memb_groupPresence_constr_11,  memb_groupPresence_constraint_9 },
-               0, 0, /* No default value */
-               "groupPresence"
-               },
-};
-static const int asn_MAP_ssb_PositionsInBurst_oms_9[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_ssb_PositionsInBurst_tags_9[] = {
-       (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ssb_PositionsInBurst_tag2el_9[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* inOneGroup */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* groupPresence */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ssb_PositionsInBurst_specs_9 = {
-       sizeof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst),
-       offsetof(struct ServingCellConfigCommonSIB__ssb_PositionsInBurst, _asn_ctx),
-       asn_MAP_ssb_PositionsInBurst_tag2el_9,
-       2,      /* Count of tags in the map */
-       asn_MAP_ssb_PositionsInBurst_oms_9,     /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ssb_PositionsInBurst_9 = {
-       "ssb-PositionsInBurst",
-       "ssb-PositionsInBurst",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ssb_PositionsInBurst_tags_9,
-       sizeof(asn_DEF_ssb_PositionsInBurst_tags_9)
-               /sizeof(asn_DEF_ssb_PositionsInBurst_tags_9[0]) - 1, /* 1 */
-       asn_DEF_ssb_PositionsInBurst_tags_9,    /* Same as above */
-       sizeof(asn_DEF_ssb_PositionsInBurst_tags_9)
-               /sizeof(asn_DEF_ssb_PositionsInBurst_tags_9[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ssb_PositionsInBurst_9,
-       2,      /* Elements count */
-       &asn_SPC_ssb_PositionsInBurst_specs_9   /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_ssb_PeriodicityServingCell_value2enum_12[] = {
-       { 0,    3,      "ms5" },
-       { 1,    4,      "ms10" },
-       { 2,    4,      "ms20" },
-       { 3,    4,      "ms40" },
-       { 4,    4,      "ms80" },
-       { 5,    5,      "ms160" }
-};
-static const unsigned int asn_MAP_ssb_PeriodicityServingCell_enum2value_12[] = {
-       1,      /* ms10(1) */
-       5,      /* ms160(5) */
-       2,      /* ms20(2) */
-       3,      /* ms40(3) */
-       0,      /* ms5(0) */
-       4       /* ms80(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_ssb_PeriodicityServingCell_specs_12 = {
-       asn_MAP_ssb_PeriodicityServingCell_value2enum_12,       /* "tag" => N; sorted by tag */
-       asn_MAP_ssb_PeriodicityServingCell_enum2value_12,       /* N => "tag"; sorted by N */
-       6,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_ssb_PeriodicityServingCell_tags_12[] = {
-       (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_ssb_PeriodicityServingCell_12 = {
-       "ssb-PeriodicityServingCell",
-       "ssb-PeriodicityServingCell",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_ssb_PeriodicityServingCell_tags_12,
-       sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12)
-               /sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12[0]) - 1, /* 1 */
-       asn_DEF_ssb_PeriodicityServingCell_tags_12,     /* Same as above */
-       sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12)
-               /sizeof(asn_DEF_ssb_PeriodicityServingCell_tags_12[0]), /* 2 */
-       { &asn_OER_type_ssb_PeriodicityServingCell_constr_12, &asn_PER_type_ssb_PeriodicityServingCell_constr_12, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_ssb_PeriodicityServingCell_specs_12    /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_ServingCellConfigCommonSIB_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, downlinkConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_DownlinkConfigCommonSIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "downlinkConfigCommon"
-               },
-       { ATF_POINTER, 3, offsetof(struct ServingCellConfigCommonSIB, uplinkConfigCommon),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UplinkConfigCommonSIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uplinkConfigCommon"
-               },
-       { ATF_POINTER, 2, offsetof(struct ServingCellConfigCommonSIB, supplementaryUplink),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UplinkConfigCommonSIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "supplementaryUplink"
-               },
-       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB, n_TimingAdvanceOffset),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_n_TimingAdvanceOffset_5,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "n-TimingAdvanceOffset"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ssb_PositionsInBurst),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               0,
-               &asn_DEF_ssb_PositionsInBurst_9,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ssb-PositionsInBurst"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ssb_PeriodicityServingCell),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_ssb_PeriodicityServingCell_12,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ssb-PeriodicityServingCell"
-               },
-       { ATF_POINTER, 1, offsetof(struct ServingCellConfigCommonSIB, tdd_UL_DL_ConfigurationCommon),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_TDD_UL_DL_ConfigCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "tdd-UL-DL-ConfigurationCommon"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct ServingCellConfigCommonSIB, ss_PBCH_BlockPower),
-               (ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_ss_PBCH_BlockPower_constr_20, &asn_PER_memb_ss_PBCH_BlockPower_constr_20,  memb_ss_PBCH_BlockPower_constraint_1 },
-               0, 0, /* No default value */
-               "ss-PBCH-BlockPower"
-               },
-};
-static const int asn_MAP_ServingCellConfigCommonSIB_oms_1[] = { 1, 2, 3, 6 };
-static const ber_tlv_tag_t asn_DEF_ServingCellConfigCommonSIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ServingCellConfigCommonSIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* downlinkConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uplinkConfigCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* supplementaryUplink */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* n-TimingAdvanceOffset */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* ssb-PositionsInBurst */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* ssb-PeriodicityServingCell */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* tdd-UL-DL-ConfigurationCommon */
-    { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 } /* ss-PBCH-BlockPower */
-};
-asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommonSIB_specs_1 = {
-       sizeof(struct ServingCellConfigCommonSIB),
-       offsetof(struct ServingCellConfigCommonSIB, _asn_ctx),
-       asn_MAP_ServingCellConfigCommonSIB_tag2el_1,
-       8,      /* Count of tags in the map */
-       asn_MAP_ServingCellConfigCommonSIB_oms_1,       /* Optional members */
-       4, 0,   /* Root/Additions */
-       8,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommonSIB = {
-       "ServingCellConfigCommonSIB",
-       "ServingCellConfigCommonSIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ServingCellConfigCommonSIB_tags_1,
-       sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1[0]), /* 1 */
-       asn_DEF_ServingCellConfigCommonSIB_tags_1,      /* Same as above */
-       sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_ServingCellConfigCommonSIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ServingCellConfigCommonSIB_1,
-       8,      /* Elements count */
-       &asn_SPC_ServingCellConfigCommonSIB_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.h b/src/codec_utils/SYSINFO/ServingCellConfigCommonSIB.h
deleted file mode 100644 (file)
index eb40a0b..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _ServingCellConfigCommonSIB_H_
-#define        _ServingCellConfigCommonSIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "DownlinkConfigCommonSIB.h"
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include <BIT_STRING.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum ServingCellConfigCommonSIB__n_TimingAdvanceOffset {
-       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n0    = 0,
-       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n25600        = 1,
-       ServingCellConfigCommonSIB__n_TimingAdvanceOffset_n39936        = 2
-} e_ServingCellConfigCommonSIB__n_TimingAdvanceOffset;
-typedef enum ServingCellConfigCommonSIB__ssb_PeriodicityServingCell {
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms5      = 0,
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms10     = 1,
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms20     = 2,
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms40     = 3,
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms80     = 4,
-       ServingCellConfigCommonSIB__ssb_PeriodicityServingCell_ms160    = 5
-} e_ServingCellConfigCommonSIB__ssb_PeriodicityServingCell;
-
-/* Forward declarations */
-struct UplinkConfigCommonSIB;
-struct TDD_UL_DL_ConfigCommon;
-
-/* ServingCellConfigCommonSIB */
-typedef struct ServingCellConfigCommonSIB {
-       DownlinkConfigCommonSIB_t        downlinkConfigCommon;
-       struct UplinkConfigCommonSIB    *uplinkConfigCommon;    /* OPTIONAL */
-       struct UplinkConfigCommonSIB    *supplementaryUplink;   /* OPTIONAL */
-       long    *n_TimingAdvanceOffset; /* OPTIONAL */
-       struct ServingCellConfigCommonSIB__ssb_PositionsInBurst {
-               BIT_STRING_t     inOneGroup;
-               BIT_STRING_t    *groupPresence; /* OPTIONAL */
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } ssb_PositionsInBurst;
-       long     ssb_PeriodicityServingCell;
-       struct TDD_UL_DL_ConfigCommon   *tdd_UL_DL_ConfigurationCommon; /* OPTIONAL */
-       long     ss_PBCH_BlockPower;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} ServingCellConfigCommonSIB_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_n_TimingAdvanceOffset_5;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_ssb_PeriodicityServingCell_12; // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_ServingCellConfigCommonSIB;
-extern asn_SEQUENCE_specifics_t asn_SPC_ServingCellConfigCommonSIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_ServingCellConfigCommonSIB_1[8];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _ServingCellConfigCommonSIB_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/SubcarrierSpacing.c b/src/codec_utils/SYSINFO/SubcarrierSpacing.c
deleted file mode 100644 (file)
index e48e3a0..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "SubcarrierSpacing.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_SubcarrierSpacing_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-asn_per_constraints_t asn_PER_type_SubcarrierSpacing_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_SubcarrierSpacing_value2enum_1[] = {
-       { 0,    5,      "kHz15" },
-       { 1,    5,      "kHz30" },
-       { 2,    5,      "kHz60" },
-       { 3,    6,      "kHz120" },
-       { 4,    6,      "kHz240" },
-       { 5,    6,      "spare3" },
-       { 6,    6,      "spare2" },
-       { 7,    6,      "spare1" }
-};
-static const unsigned int asn_MAP_SubcarrierSpacing_enum2value_1[] = {
-       3,      /* kHz120(3) */
-       0,      /* kHz15(0) */
-       4,      /* kHz240(4) */
-       1,      /* kHz30(1) */
-       2,      /* kHz60(2) */
-       7,      /* spare1(7) */
-       6,      /* spare2(6) */
-       5       /* spare3(5) */
-};
-const asn_INTEGER_specifics_t asn_SPC_SubcarrierSpacing_specs_1 = {
-       asn_MAP_SubcarrierSpacing_value2enum_1, /* "tag" => N; sorted by tag */
-       asn_MAP_SubcarrierSpacing_enum2value_1, /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_SubcarrierSpacing_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_SubcarrierSpacing = {
-       "SubcarrierSpacing",
-       "SubcarrierSpacing",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_SubcarrierSpacing_tags_1,
-       sizeof(asn_DEF_SubcarrierSpacing_tags_1)
-               /sizeof(asn_DEF_SubcarrierSpacing_tags_1[0]), /* 1 */
-       asn_DEF_SubcarrierSpacing_tags_1,       /* Same as above */
-       sizeof(asn_DEF_SubcarrierSpacing_tags_1)
-               /sizeof(asn_DEF_SubcarrierSpacing_tags_1[0]), /* 1 */
-       { &asn_OER_type_SubcarrierSpacing_constr_1, &asn_PER_type_SubcarrierSpacing_constr_1, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_SubcarrierSpacing_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/SubcarrierSpacing.h b/src/codec_utils/SYSINFO/SubcarrierSpacing.h
deleted file mode 100644 (file)
index 7376aeb..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _SubcarrierSpacing_H_
-#define        _SubcarrierSpacing_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum SubcarrierSpacing {
-       SubcarrierSpacing_kHz15 = 0,
-       SubcarrierSpacing_kHz30 = 1,
-       SubcarrierSpacing_kHz60 = 2,
-       SubcarrierSpacing_kHz120        = 3,
-       SubcarrierSpacing_kHz240        = 4,
-       SubcarrierSpacing_spare3        = 5,
-       SubcarrierSpacing_spare2        = 6,
-       SubcarrierSpacing_spare1        = 7
-} e_SubcarrierSpacing;
-
-/* SubcarrierSpacing */
-typedef long    SubcarrierSpacing_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_SubcarrierSpacing_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_SubcarrierSpacing;
-extern const asn_INTEGER_specifics_t asn_SPC_SubcarrierSpacing_specs_1;
-asn_struct_free_f SubcarrierSpacing_free;
-asn_struct_print_f SubcarrierSpacing_print;
-asn_constr_check_f SubcarrierSpacing_constraint;
-ber_type_decoder_f SubcarrierSpacing_decode_ber;
-der_type_encoder_f SubcarrierSpacing_encode_der;
-xer_type_decoder_f SubcarrierSpacing_decode_xer;
-xer_type_encoder_f SubcarrierSpacing_encode_xer;
-oer_type_decoder_f SubcarrierSpacing_decode_oer;
-oer_type_encoder_f SubcarrierSpacing_encode_oer;
-per_type_decoder_f SubcarrierSpacing_decode_uper;
-per_type_encoder_f SubcarrierSpacing_encode_uper;
-per_type_decoder_f SubcarrierSpacing_decode_aper;
-per_type_encoder_f SubcarrierSpacing_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SubcarrierSpacing_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/TCI-StateId.c b/src/codec_utils/SYSINFO/TCI-StateId.c
deleted file mode 100644 (file)
index a36f9b9..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "TCI-StateId.h"
-
-int
-TCI_StateId_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 <= 127)) {
-               /* 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_TCI_StateId_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (0..127) */,
-       -1};
-asn_per_constraints_t asn_PER_type_TCI_StateId_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       7,  7,  0,  127 }      /* (0..127) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_TCI_StateId_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_TCI_StateId = {
-       "TCI-StateId",
-       "TCI-StateId",
-       &asn_OP_NativeInteger,
-       asn_DEF_TCI_StateId_tags_1,
-       sizeof(asn_DEF_TCI_StateId_tags_1)
-               /sizeof(asn_DEF_TCI_StateId_tags_1[0]), /* 1 */
-       asn_DEF_TCI_StateId_tags_1,     /* Same as above */
-       sizeof(asn_DEF_TCI_StateId_tags_1)
-               /sizeof(asn_DEF_TCI_StateId_tags_1[0]), /* 1 */
-       { &asn_OER_type_TCI_StateId_constr_1, &asn_PER_type_TCI_StateId_constr_1, TCI_StateId_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/TCI-StateId.h b/src/codec_utils/SYSINFO/TCI-StateId.h
deleted file mode 100644 (file)
index c165b9b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _TCI_StateId_H_
-#define        _TCI_StateId_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* TCI-StateId */
-typedef long    TCI_StateId_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_TCI_StateId_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_TCI_StateId;
-asn_struct_free_f TCI_StateId_free;
-asn_struct_print_f TCI_StateId_print;
-asn_constr_check_f TCI_StateId_constraint;
-ber_type_decoder_f TCI_StateId_decode_ber;
-der_type_encoder_f TCI_StateId_encode_der;
-xer_type_decoder_f TCI_StateId_decode_xer;
-xer_type_encoder_f TCI_StateId_encode_xer;
-oer_type_decoder_f TCI_StateId_decode_oer;
-oer_type_encoder_f TCI_StateId_encode_oer;
-per_type_decoder_f TCI_StateId_decode_uper;
-per_type_encoder_f TCI_StateId_encode_uper;
-per_type_decoder_f TCI_StateId_decode_aper;
-per_type_encoder_f TCI_StateId_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TCI_StateId_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.c b/src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.c
deleted file mode 100644 (file)
index 3e299f6..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "TDD-UL-DL-ConfigCommon.h"
-
-#include "TDD-UL-DL-Pattern.h"
-asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigCommon_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_ConfigCommon, referenceSubcarrierSpacing),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_SubcarrierSpacing,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "referenceSubcarrierSpacing"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_ConfigCommon, pattern1),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_TDD_UL_DL_Pattern,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pattern1"
-               },
-       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_ConfigCommon, pattern2),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_TDD_UL_DL_Pattern,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "pattern2"
-               },
-};
-static const int asn_MAP_TDD_UL_DL_ConfigCommon_oms_1[] = { 2 };
-static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_ConfigCommon_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* referenceSubcarrierSpacing */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* pattern1 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* pattern2 */
-};
-asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigCommon_specs_1 = {
-       sizeof(struct TDD_UL_DL_ConfigCommon),
-       offsetof(struct TDD_UL_DL_ConfigCommon, _asn_ctx),
-       asn_MAP_TDD_UL_DL_ConfigCommon_tag2el_1,
-       3,      /* Count of tags in the map */
-       asn_MAP_TDD_UL_DL_ConfigCommon_oms_1,   /* Optional members */
-       1, 0,   /* Root/Additions */
-       3,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigCommon = {
-       "TDD-UL-DL-ConfigCommon",
-       "TDD-UL-DL-ConfigCommon",
-       &asn_OP_SEQUENCE,
-       asn_DEF_TDD_UL_DL_ConfigCommon_tags_1,
-       sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[0]), /* 1 */
-       asn_DEF_TDD_UL_DL_ConfigCommon_tags_1,  /* Same as above */
-       sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1)
-               /sizeof(asn_DEF_TDD_UL_DL_ConfigCommon_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_TDD_UL_DL_ConfigCommon_1,
-       3,      /* Elements count */
-       &asn_SPC_TDD_UL_DL_ConfigCommon_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.h b/src/codec_utils/SYSINFO/TDD-UL-DL-ConfigCommon.h
deleted file mode 100644 (file)
index 6603e0e..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _TDD_UL_DL_ConfigCommon_H_
-#define        _TDD_UL_DL_ConfigCommon_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "SubcarrierSpacing.h"
-#include "TDD-UL-DL-Pattern.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Forward declarations */
-struct TDD_UL_DL_Pattern;
-
-/* TDD-UL-DL-ConfigCommon */
-typedef struct TDD_UL_DL_ConfigCommon {
-       SubcarrierSpacing_t      referenceSubcarrierSpacing;
-       TDD_UL_DL_Pattern_t      pattern1;
-       struct TDD_UL_DL_Pattern        *pattern2;      /* OPTIONAL */
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} TDD_UL_DL_ConfigCommon_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_ConfigCommon;
-extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_ConfigCommon_specs_1;
-extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_ConfigCommon_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TDD_UL_DL_ConfigCommon_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.c b/src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.c
deleted file mode 100644 (file)
index b1175d3..0000000
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "TDD-UL-DL-Pattern.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.
- */
-static int
-memb_nrofDownlinkSlots_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 >= 0 && value <= 320)) {
-               /* 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_nrofDownlinkSymbols_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 >= 0 && value <= 13)) {
-               /* 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_nrofUplinkSlots_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 >= 0 && value <= 320)) {
-               /* 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_nrofUplinkSymbols_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 >= 0 && value <= 13)) {
-               /* 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_dl_UL_TransmissionPeriodicity_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dl_UL_TransmissionPeriodicity_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_nrofDownlinkSlots_constr_11 CC_NOTUSED = {
-       { 2, 1 }        /* (0..320) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_nrofDownlinkSlots_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  320 }      /* (0..320) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_nrofDownlinkSymbols_constr_12 CC_NOTUSED = {
-       { 1, 1 }        /* (0..13) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_nrofDownlinkSymbols_constr_12 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_nrofUplinkSlots_constr_13 CC_NOTUSED = {
-       { 2, 1 }        /* (0..320) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_nrofUplinkSlots_constr_13 CC_NOTUSED = {
-       { APC_CONSTRAINED,       9,  9,  0,  320 }      /* (0..320) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_nrofUplinkSymbols_constr_14 CC_NOTUSED = {
-       { 1, 1 }        /* (0..13) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_nrofUplinkSymbols_constr_14 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  13 }       /* (0..13) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_dl_UL_TransmissionPeriodicity_value2enum_2[] = {
-       { 0,    5,      "ms0p5" },
-       { 1,    7,      "ms0p625" },
-       { 2,    3,      "ms1" },
-       { 3,    6,      "ms1p25" },
-       { 4,    3,      "ms2" },
-       { 5,    5,      "ms2p5" },
-       { 6,    3,      "ms5" },
-       { 7,    4,      "ms10" }
-};
-static const unsigned int asn_MAP_dl_UL_TransmissionPeriodicity_enum2value_2[] = {
-       0,      /* ms0p5(0) */
-       1,      /* ms0p625(1) */
-       2,      /* ms1(2) */
-       7,      /* ms10(7) */
-       3,      /* ms1p25(3) */
-       4,      /* ms2(4) */
-       5,      /* ms2p5(5) */
-       6       /* ms5(6) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dl_UL_TransmissionPeriodicity_specs_2 = {
-       asn_MAP_dl_UL_TransmissionPeriodicity_value2enum_2,     /* "tag" => N; sorted by tag */
-       asn_MAP_dl_UL_TransmissionPeriodicity_enum2value_2,     /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dl_UL_TransmissionPeriodicity_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_dl_UL_TransmissionPeriodicity_2 = {
-       "dl-UL-TransmissionPeriodicity",
-       "dl-UL-TransmissionPeriodicity",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dl_UL_TransmissionPeriodicity_tags_2,
-       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2)
-               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2[0]) - 1, /* 1 */
-       asn_DEF_dl_UL_TransmissionPeriodicity_tags_2,   /* Same as above */
-       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2)
-               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_tags_2[0]), /* 2 */
-       { &asn_OER_type_dl_UL_TransmissionPeriodicity_constr_2, &asn_PER_type_dl_UL_TransmissionPeriodicity_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dl_UL_TransmissionPeriodicity_specs_2  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_dl_UL_TransmissionPeriodicity_v1530_value2enum_17[] = {
-       { 0,    3,      "ms3" },
-       { 1,    3,      "ms4" }
-};
-static const unsigned int asn_MAP_dl_UL_TransmissionPeriodicity_v1530_enum2value_17[] = {
-       0,      /* ms3(0) */
-       1       /* ms4(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_dl_UL_TransmissionPeriodicity_v1530_specs_17 = {
-       asn_MAP_dl_UL_TransmissionPeriodicity_v1530_value2enum_17,      /* "tag" => N; sorted by tag */
-       asn_MAP_dl_UL_TransmissionPeriodicity_v1530_enum2value_17,      /* N => "tag"; sorted by N */
-       2,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[] = {
-       (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_dl_UL_TransmissionPeriodicity_v1530_17 = {
-       "dl-UL-TransmissionPeriodicity-v1530",
-       "dl-UL-TransmissionPeriodicity-v1530",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17,
-       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17)
-               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[0]) - 1, /* 1 */
-       asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17,    /* Same as above */
-       sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17)
-               /sizeof(asn_DEF_dl_UL_TransmissionPeriodicity_v1530_tags_17[0]), /* 2 */
-       { &asn_OER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17, &asn_PER_type_dl_UL_TransmissionPeriodicity_v1530_constr_17, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_dl_UL_TransmissionPeriodicity_v1530_specs_17   /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_ext1_16[] = {
-       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_Pattern__ext1, dl_UL_TransmissionPeriodicity_v1530),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dl_UL_TransmissionPeriodicity_v1530_17,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dl-UL-TransmissionPeriodicity-v1530"
-               },
-};
-static const int asn_MAP_ext1_oms_16[] = { 0 };
-static const ber_tlv_tag_t asn_DEF_ext1_tags_16[] = {
-       (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_ext1_tag2el_16[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 } /* dl-UL-TransmissionPeriodicity-v1530 */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_ext1_specs_16 = {
-       sizeof(struct TDD_UL_DL_Pattern__ext1),
-       offsetof(struct TDD_UL_DL_Pattern__ext1, _asn_ctx),
-       asn_MAP_ext1_tag2el_16,
-       1,      /* Count of tags in the map */
-       asn_MAP_ext1_oms_16,    /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_ext1_16 = {
-       "ext1",
-       "ext1",
-       &asn_OP_SEQUENCE,
-       asn_DEF_ext1_tags_16,
-       sizeof(asn_DEF_ext1_tags_16)
-               /sizeof(asn_DEF_ext1_tags_16[0]) - 1, /* 1 */
-       asn_DEF_ext1_tags_16,   /* Same as above */
-       sizeof(asn_DEF_ext1_tags_16)
-               /sizeof(asn_DEF_ext1_tags_16[0]), /* 2 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_ext1_16,
-       1,      /* Elements count */
-       &asn_SPC_ext1_specs_16  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_TDD_UL_DL_Pattern_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, dl_UL_TransmissionPeriodicity),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_dl_UL_TransmissionPeriodicity_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "dl-UL-TransmissionPeriodicity"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofDownlinkSlots),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_nrofDownlinkSlots_constr_11, &asn_PER_memb_nrofDownlinkSlots_constr_11,  memb_nrofDownlinkSlots_constraint_1 },
-               0, 0, /* No default value */
-               "nrofDownlinkSlots"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofDownlinkSymbols),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_nrofDownlinkSymbols_constr_12, &asn_PER_memb_nrofDownlinkSymbols_constr_12,  memb_nrofDownlinkSymbols_constraint_1 },
-               0, 0, /* No default value */
-               "nrofDownlinkSymbols"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofUplinkSlots),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_nrofUplinkSlots_constr_13, &asn_PER_memb_nrofUplinkSlots_constr_13,  memb_nrofUplinkSlots_constraint_1 },
-               0, 0, /* No default value */
-               "nrofUplinkSlots"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct TDD_UL_DL_Pattern, nrofUplinkSymbols),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_nrofUplinkSymbols_constr_14, &asn_PER_memb_nrofUplinkSymbols_constr_14,  memb_nrofUplinkSymbols_constraint_1 },
-               0, 0, /* No default value */
-               "nrofUplinkSymbols"
-               },
-       { ATF_POINTER, 1, offsetof(struct TDD_UL_DL_Pattern, ext1),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               0,
-               &asn_DEF_ext1_16,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "ext1"
-               },
-};
-static const int asn_MAP_TDD_UL_DL_Pattern_oms_1[] = { 5 };
-static const ber_tlv_tag_t asn_DEF_TDD_UL_DL_Pattern_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_TDD_UL_DL_Pattern_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* dl-UL-TransmissionPeriodicity */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* nrofDownlinkSlots */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* nrofDownlinkSymbols */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* nrofUplinkSlots */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* nrofUplinkSymbols */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 } /* ext1 */
-};
-asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_Pattern_specs_1 = {
-       sizeof(struct TDD_UL_DL_Pattern),
-       offsetof(struct TDD_UL_DL_Pattern, _asn_ctx),
-       asn_MAP_TDD_UL_DL_Pattern_tag2el_1,
-       6,      /* Count of tags in the map */
-       asn_MAP_TDD_UL_DL_Pattern_oms_1,        /* Optional members */
-       0, 1,   /* Root/Additions */
-       5,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_Pattern = {
-       "TDD-UL-DL-Pattern",
-       "TDD-UL-DL-Pattern",
-       &asn_OP_SEQUENCE,
-       asn_DEF_TDD_UL_DL_Pattern_tags_1,
-       sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1)
-               /sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1[0]), /* 1 */
-       asn_DEF_TDD_UL_DL_Pattern_tags_1,       /* Same as above */
-       sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1)
-               /sizeof(asn_DEF_TDD_UL_DL_Pattern_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_TDD_UL_DL_Pattern_1,
-       6,      /* Elements count */
-       &asn_SPC_TDD_UL_DL_Pattern_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.h b/src/codec_utils/SYSINFO/TDD-UL-DL-Pattern.h
deleted file mode 100644 (file)
index 98ba072..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _TDD_UL_DL_Pattern_H_
-#define        _TDD_UL_DL_Pattern_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <NativeInteger.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity {
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p5  = 0,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms0p625        = 1,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1    = 2,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms1p25 = 3,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2    = 4,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms2p5  = 5,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms5    = 6,
-       TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity_ms10   = 7
-} e_TDD_UL_DL_Pattern__dl_UL_TransmissionPeriodicity;
-typedef enum TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530 {
-       TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530_ms3        = 0,
-       TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530_ms4        = 1
-} e_TDD_UL_DL_Pattern__ext1__dl_UL_TransmissionPeriodicity_v1530;
-
-/* TDD-UL-DL-Pattern */
-typedef struct TDD_UL_DL_Pattern {
-       long     dl_UL_TransmissionPeriodicity;
-       long     nrofDownlinkSlots;
-       long     nrofDownlinkSymbols;
-       long     nrofUplinkSlots;
-       long     nrofUplinkSymbols;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       struct TDD_UL_DL_Pattern__ext1 {
-               long    *dl_UL_TransmissionPeriodicity_v1530;   /* OPTIONAL */
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *ext1;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} TDD_UL_DL_Pattern_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_dl_UL_TransmissionPeriodicity_2;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_dl_UL_TransmissionPeriodicity_v1530_17;        // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_TDD_UL_DL_Pattern;
-extern asn_SEQUENCE_specifics_t asn_SPC_TDD_UL_DL_Pattern_specs_1;
-extern asn_TYPE_member_t asn_MBR_TDD_UL_DL_Pattern_1[6];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TDD_UL_DL_Pattern_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/TimeAlignmentTimer.c b/src/codec_utils/SYSINFO/TimeAlignmentTimer.c
deleted file mode 100644 (file)
index 0c761a8..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "TimeAlignmentTimer.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_TimeAlignmentTimer_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-asn_per_constraints_t asn_PER_type_TimeAlignmentTimer_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_TimeAlignmentTimer_value2enum_1[] = {
-       { 0,    5,      "ms500" },
-       { 1,    5,      "ms750" },
-       { 2,    6,      "ms1280" },
-       { 3,    6,      "ms1920" },
-       { 4,    6,      "ms2560" },
-       { 5,    6,      "ms5120" },
-       { 6,    7,      "ms10240" },
-       { 7,    8,      "infinity" }
-};
-static const unsigned int asn_MAP_TimeAlignmentTimer_enum2value_1[] = {
-       7,      /* infinity(7) */
-       6,      /* ms10240(6) */
-       2,      /* ms1280(2) */
-       3,      /* ms1920(3) */
-       4,      /* ms2560(4) */
-       0,      /* ms500(0) */
-       5,      /* ms5120(5) */
-       1       /* ms750(1) */
-};
-const asn_INTEGER_specifics_t asn_SPC_TimeAlignmentTimer_specs_1 = {
-       asn_MAP_TimeAlignmentTimer_value2enum_1,        /* "tag" => N; sorted by tag */
-       asn_MAP_TimeAlignmentTimer_enum2value_1,        /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_TimeAlignmentTimer_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_TimeAlignmentTimer = {
-       "TimeAlignmentTimer",
-       "TimeAlignmentTimer",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_TimeAlignmentTimer_tags_1,
-       sizeof(asn_DEF_TimeAlignmentTimer_tags_1)
-               /sizeof(asn_DEF_TimeAlignmentTimer_tags_1[0]), /* 1 */
-       asn_DEF_TimeAlignmentTimer_tags_1,      /* Same as above */
-       sizeof(asn_DEF_TimeAlignmentTimer_tags_1)
-               /sizeof(asn_DEF_TimeAlignmentTimer_tags_1[0]), /* 1 */
-       { &asn_OER_type_TimeAlignmentTimer_constr_1, &asn_PER_type_TimeAlignmentTimer_constr_1, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_TimeAlignmentTimer_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/TimeAlignmentTimer.h b/src/codec_utils/SYSINFO/TimeAlignmentTimer.h
deleted file mode 100644 (file)
index 13258bd..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _TimeAlignmentTimer_H_
-#define        _TimeAlignmentTimer_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum TimeAlignmentTimer {
-       TimeAlignmentTimer_ms500        = 0,
-       TimeAlignmentTimer_ms750        = 1,
-       TimeAlignmentTimer_ms1280       = 2,
-       TimeAlignmentTimer_ms1920       = 3,
-       TimeAlignmentTimer_ms2560       = 4,
-       TimeAlignmentTimer_ms5120       = 5,
-       TimeAlignmentTimer_ms10240      = 6,
-       TimeAlignmentTimer_infinity     = 7
-} e_TimeAlignmentTimer;
-
-/* TimeAlignmentTimer */
-typedef long    TimeAlignmentTimer_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_TimeAlignmentTimer_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_TimeAlignmentTimer;
-extern const asn_INTEGER_specifics_t asn_SPC_TimeAlignmentTimer_specs_1;
-asn_struct_free_f TimeAlignmentTimer_free;
-asn_struct_print_f TimeAlignmentTimer_print;
-asn_constr_check_f TimeAlignmentTimer_constraint;
-ber_type_decoder_f TimeAlignmentTimer_decode_ber;
-der_type_encoder_f TimeAlignmentTimer_encode_der;
-xer_type_decoder_f TimeAlignmentTimer_decode_xer;
-xer_type_encoder_f TimeAlignmentTimer_encode_xer;
-oer_type_decoder_f TimeAlignmentTimer_decode_oer;
-oer_type_encoder_f TimeAlignmentTimer_encode_oer;
-per_type_decoder_f TimeAlignmentTimer_decode_uper;
-per_type_encoder_f TimeAlignmentTimer_encode_uper;
-per_type_decoder_f TimeAlignmentTimer_decode_aper;
-per_type_encoder_f TimeAlignmentTimer_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TimeAlignmentTimer_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/TrackingAreaCode.c b/src/codec_utils/SYSINFO/TrackingAreaCode.c
deleted file mode 100644 (file)
index 0be90ad..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "TrackingAreaCode.h"
-
-int
-TrackingAreaCode_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 == 24)) {
-               /* 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_TrackingAreaCode_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       24      /* (SIZE(24..24)) */};
-asn_per_constraints_t asn_PER_type_TrackingAreaCode_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  24,  24 }      /* (SIZE(24..24)) */,
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_TrackingAreaCode_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (3 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_TrackingAreaCode = {
-       "TrackingAreaCode",
-       "TrackingAreaCode",
-       &asn_OP_BIT_STRING,
-       asn_DEF_TrackingAreaCode_tags_1,
-       sizeof(asn_DEF_TrackingAreaCode_tags_1)
-               /sizeof(asn_DEF_TrackingAreaCode_tags_1[0]), /* 1 */
-       asn_DEF_TrackingAreaCode_tags_1,        /* Same as above */
-       sizeof(asn_DEF_TrackingAreaCode_tags_1)
-               /sizeof(asn_DEF_TrackingAreaCode_tags_1[0]), /* 1 */
-       { &asn_OER_type_TrackingAreaCode_constr_1, &asn_PER_type_TrackingAreaCode_constr_1, TrackingAreaCode_constraint },
-       0, 0,   /* No members */
-       &asn_SPC_BIT_STRING_specs       /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/TrackingAreaCode.h b/src/codec_utils/SYSINFO/TrackingAreaCode.h
deleted file mode 100644 (file)
index 2a42e6b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _TrackingAreaCode_H_
-#define        _TrackingAreaCode_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <BIT_STRING.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* TrackingAreaCode */
-typedef BIT_STRING_t    TrackingAreaCode_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_TrackingAreaCode_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_TrackingAreaCode;
-asn_struct_free_f TrackingAreaCode_free;
-asn_struct_print_f TrackingAreaCode_print;
-asn_constr_check_f TrackingAreaCode_constraint;
-ber_type_decoder_f TrackingAreaCode_decode_ber;
-der_type_encoder_f TrackingAreaCode_encode_der;
-xer_type_decoder_f TrackingAreaCode_decode_xer;
-xer_type_encoder_f TrackingAreaCode_encode_xer;
-oer_type_decoder_f TrackingAreaCode_decode_oer;
-oer_type_encoder_f TrackingAreaCode_encode_oer;
-per_type_decoder_f TrackingAreaCode_decode_uper;
-per_type_encoder_f TrackingAreaCode_encode_uper;
-per_type_decoder_f TrackingAreaCode_decode_aper;
-per_type_encoder_f TrackingAreaCode_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _TrackingAreaCode_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.c b/src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.c
deleted file mode 100644 (file)
index aa67dc8..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-AccessCategory1-SelectionAssistanceInfo.h"
-
-/*
- * This type is implemented using NativeEnumerated,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-asn_per_constraints_t asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       2,  2,  0,  2 }        /* (0..2) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_value2enum_1[] = {
-       { 0,    1,      "a" },
-       { 1,    1,      "b" },
-       { 2,    1,      "c" }
-};
-static const unsigned int asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_enum2value_1[] = {
-       0,      /* a(0) */
-       1,      /* b(1) */
-       2       /* c(2) */
-};
-const asn_INTEGER_specifics_t asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1 = {
-       asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_value2enum_1,       /* "tag" => N; sorted by tag */
-       asn_MAP_UAC_AccessCategory1_SelectionAssistanceInfo_enum2value_1,       /* N => "tag"; sorted by N */
-       3,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo = {
-       "UAC-AccessCategory1-SelectionAssistanceInfo",
-       "UAC-AccessCategory1-SelectionAssistanceInfo",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1,
-       sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1)
-               /sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[0]), /* 1 */
-       asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1,     /* Same as above */
-       sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1)
-               /sizeof(asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo_tags_1[0]), /* 1 */
-       { &asn_OER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1, &asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1    /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.h b/src/codec_utils/SYSINFO/UAC-AccessCategory1-SelectionAssistanceInfo.h
deleted file mode 100644 (file)
index 25a236a..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_AccessCategory1_SelectionAssistanceInfo_H_
-#define        _UAC_AccessCategory1_SelectionAssistanceInfo_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum UAC_AccessCategory1_SelectionAssistanceInfo {
-       UAC_AccessCategory1_SelectionAssistanceInfo_a   = 0,
-       UAC_AccessCategory1_SelectionAssistanceInfo_b   = 1,
-       UAC_AccessCategory1_SelectionAssistanceInfo_c   = 2
-} e_UAC_AccessCategory1_SelectionAssistanceInfo;
-
-/* UAC-AccessCategory1-SelectionAssistanceInfo */
-typedef long    UAC_AccessCategory1_SelectionAssistanceInfo_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_UAC_AccessCategory1_SelectionAssistanceInfo_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_UAC_AccessCategory1_SelectionAssistanceInfo;
-extern const asn_INTEGER_specifics_t asn_SPC_UAC_AccessCategory1_SelectionAssistanceInfo_specs_1;
-asn_struct_free_f UAC_AccessCategory1_SelectionAssistanceInfo_free;
-asn_struct_print_f UAC_AccessCategory1_SelectionAssistanceInfo_print;
-asn_constr_check_f UAC_AccessCategory1_SelectionAssistanceInfo_constraint;
-ber_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_ber;
-der_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_der;
-xer_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_xer;
-xer_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_xer;
-oer_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_oer;
-oer_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_oer;
-per_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_uper;
-per_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_uper;
-per_type_decoder_f UAC_AccessCategory1_SelectionAssistanceInfo_decode_aper;
-per_type_encoder_f UAC_AccessCategory1_SelectionAssistanceInfo_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_AccessCategory1_SelectionAssistanceInfo_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSet.c b/src/codec_utils/SYSINFO/UAC-BarringInfoSet.c
deleted file mode 100644 (file)
index c7dea3f..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringInfoSet.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.
- */
-static int
-memb_uac_BarringForAccessIdentity_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 == 7)) {
-               /* 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_uac_BarringFactor_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_uac_BarringFactor_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  0,  15 }       /* (0..15) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_uac_BarringTime_constr_19 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_uac_BarringTime_constr_19 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_uac_BarringForAccessIdentity_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       7       /* (SIZE(7..7)) */};
-static asn_per_constraints_t asn_PER_memb_uac_BarringForAccessIdentity_constr_28 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  7,  7 }        /* (SIZE(7..7)) */,
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_uac_BarringFactor_value2enum_2[] = {
-       { 0,    3,      "p00" },
-       { 1,    3,      "p05" },
-       { 2,    3,      "p10" },
-       { 3,    3,      "p15" },
-       { 4,    3,      "p20" },
-       { 5,    3,      "p25" },
-       { 6,    3,      "p30" },
-       { 7,    3,      "p40" },
-       { 8,    3,      "p50" },
-       { 9,    3,      "p60" },
-       { 10,   3,      "p70" },
-       { 11,   3,      "p75" },
-       { 12,   3,      "p80" },
-       { 13,   3,      "p85" },
-       { 14,   3,      "p90" },
-       { 15,   3,      "p95" }
-};
-static const unsigned int asn_MAP_uac_BarringFactor_enum2value_2[] = {
-       0,      /* p00(0) */
-       1,      /* p05(1) */
-       2,      /* p10(2) */
-       3,      /* p15(3) */
-       4,      /* p20(4) */
-       5,      /* p25(5) */
-       6,      /* p30(6) */
-       7,      /* p40(7) */
-       8,      /* p50(8) */
-       9,      /* p60(9) */
-       10,     /* p70(10) */
-       11,     /* p75(11) */
-       12,     /* p80(12) */
-       13,     /* p85(13) */
-       14,     /* p90(14) */
-       15      /* p95(15) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_uac_BarringFactor_specs_2 = {
-       asn_MAP_uac_BarringFactor_value2enum_2, /* "tag" => N; sorted by tag */
-       asn_MAP_uac_BarringFactor_enum2value_2, /* N => "tag"; sorted by N */
-       16,     /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_uac_BarringFactor_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_uac_BarringFactor_2 = {
-       "uac-BarringFactor",
-       "uac-BarringFactor",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_uac_BarringFactor_tags_2,
-       sizeof(asn_DEF_uac_BarringFactor_tags_2)
-               /sizeof(asn_DEF_uac_BarringFactor_tags_2[0]) - 1, /* 1 */
-       asn_DEF_uac_BarringFactor_tags_2,       /* Same as above */
-       sizeof(asn_DEF_uac_BarringFactor_tags_2)
-               /sizeof(asn_DEF_uac_BarringFactor_tags_2[0]), /* 2 */
-       { &asn_OER_type_uac_BarringFactor_constr_2, &asn_PER_type_uac_BarringFactor_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_uac_BarringFactor_specs_2      /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_uac_BarringTime_value2enum_19[] = {
-       { 0,    2,      "s4" },
-       { 1,    2,      "s8" },
-       { 2,    3,      "s16" },
-       { 3,    3,      "s32" },
-       { 4,    3,      "s64" },
-       { 5,    4,      "s128" },
-       { 6,    4,      "s256" },
-       { 7,    4,      "s512" }
-};
-static const unsigned int asn_MAP_uac_BarringTime_enum2value_19[] = {
-       5,      /* s128(5) */
-       2,      /* s16(2) */
-       6,      /* s256(6) */
-       3,      /* s32(3) */
-       0,      /* s4(0) */
-       7,      /* s512(7) */
-       4,      /* s64(4) */
-       1       /* s8(1) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_uac_BarringTime_specs_19 = {
-       asn_MAP_uac_BarringTime_value2enum_19,  /* "tag" => N; sorted by tag */
-       asn_MAP_uac_BarringTime_enum2value_19,  /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_uac_BarringTime_tags_19[] = {
-       (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_uac_BarringTime_19 = {
-       "uac-BarringTime",
-       "uac-BarringTime",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_uac_BarringTime_tags_19,
-       sizeof(asn_DEF_uac_BarringTime_tags_19)
-               /sizeof(asn_DEF_uac_BarringTime_tags_19[0]) - 1, /* 1 */
-       asn_DEF_uac_BarringTime_tags_19,        /* Same as above */
-       sizeof(asn_DEF_uac_BarringTime_tags_19)
-               /sizeof(asn_DEF_uac_BarringTime_tags_19[0]), /* 2 */
-       { &asn_OER_type_uac_BarringTime_constr_19, &asn_PER_type_uac_BarringTime_constr_19, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_uac_BarringTime_specs_19       /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_UAC_BarringInfoSet_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringFactor),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_uac_BarringFactor_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringFactor"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringTime),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_uac_BarringTime_19,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-BarringTime"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringInfoSet, uac_BarringForAccessIdentity),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BIT_STRING,
-               0,
-               { &asn_OER_memb_uac_BarringForAccessIdentity_constr_28, &asn_PER_memb_uac_BarringForAccessIdentity_constr_28,  memb_uac_BarringForAccessIdentity_constraint_1 },
-               0, 0, /* No default value */
-               "uac-BarringForAccessIdentity"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSet_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringInfoSet_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-BarringFactor */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* uac-BarringTime */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* uac-BarringForAccessIdentity */
-};
-asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringInfoSet_specs_1 = {
-       sizeof(struct UAC_BarringInfoSet),
-       offsetof(struct UAC_BarringInfoSet, _asn_ctx),
-       asn_MAP_UAC_BarringInfoSet_tag2el_1,
-       3,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSet = {
-       "UAC-BarringInfoSet",
-       "UAC-BarringInfoSet",
-       &asn_OP_SEQUENCE,
-       asn_DEF_UAC_BarringInfoSet_tags_1,
-       sizeof(asn_DEF_UAC_BarringInfoSet_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSet_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringInfoSet_tags_1,      /* Same as above */
-       sizeof(asn_DEF_UAC_BarringInfoSet_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSet_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_UAC_BarringInfoSet_1,
-       3,      /* Elements count */
-       &asn_SPC_UAC_BarringInfoSet_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSet.h b/src/codec_utils/SYSINFO/UAC-BarringInfoSet.h
deleted file mode 100644 (file)
index 33ec8c5..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringInfoSet_H_
-#define        _UAC_BarringInfoSet_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <BIT_STRING.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum UAC_BarringInfoSet__uac_BarringFactor {
-       UAC_BarringInfoSet__uac_BarringFactor_p00       = 0,
-       UAC_BarringInfoSet__uac_BarringFactor_p05       = 1,
-       UAC_BarringInfoSet__uac_BarringFactor_p10       = 2,
-       UAC_BarringInfoSet__uac_BarringFactor_p15       = 3,
-       UAC_BarringInfoSet__uac_BarringFactor_p20       = 4,
-       UAC_BarringInfoSet__uac_BarringFactor_p25       = 5,
-       UAC_BarringInfoSet__uac_BarringFactor_p30       = 6,
-       UAC_BarringInfoSet__uac_BarringFactor_p40       = 7,
-       UAC_BarringInfoSet__uac_BarringFactor_p50       = 8,
-       UAC_BarringInfoSet__uac_BarringFactor_p60       = 9,
-       UAC_BarringInfoSet__uac_BarringFactor_p70       = 10,
-       UAC_BarringInfoSet__uac_BarringFactor_p75       = 11,
-       UAC_BarringInfoSet__uac_BarringFactor_p80       = 12,
-       UAC_BarringInfoSet__uac_BarringFactor_p85       = 13,
-       UAC_BarringInfoSet__uac_BarringFactor_p90       = 14,
-       UAC_BarringInfoSet__uac_BarringFactor_p95       = 15
-} e_UAC_BarringInfoSet__uac_BarringFactor;
-typedef enum UAC_BarringInfoSet__uac_BarringTime {
-       UAC_BarringInfoSet__uac_BarringTime_s4  = 0,
-       UAC_BarringInfoSet__uac_BarringTime_s8  = 1,
-       UAC_BarringInfoSet__uac_BarringTime_s16 = 2,
-       UAC_BarringInfoSet__uac_BarringTime_s32 = 3,
-       UAC_BarringInfoSet__uac_BarringTime_s64 = 4,
-       UAC_BarringInfoSet__uac_BarringTime_s128        = 5,
-       UAC_BarringInfoSet__uac_BarringTime_s256        = 6,
-       UAC_BarringInfoSet__uac_BarringTime_s512        = 7
-} e_UAC_BarringInfoSet__uac_BarringTime;
-
-/* UAC-BarringInfoSet */
-typedef struct UAC_BarringInfoSet {
-       long     uac_BarringFactor;
-       long     uac_BarringTime;
-       BIT_STRING_t     uac_BarringForAccessIdentity;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringInfoSet_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_uac_BarringFactor_2;   // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_uac_BarringTime_19;    // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSet;
-extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringInfoSet_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringInfoSet_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringInfoSet_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.c b/src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.c
deleted file mode 100644 (file)
index 128d8cb..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringInfoSetIndex.h"
-
-int
-UAC_BarringInfoSetIndex_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 <= 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 NativeInteger,
- * so here we adjust the DEF accordingly.
- */
-static asn_oer_constraints_t asn_OER_type_UAC_BarringInfoSetIndex_constr_1 CC_NOTUSED = {
-       { 1, 1 }        /* (1..8) */,
-       -1};
-asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetIndex_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (1..8) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSetIndex_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetIndex = {
-       "UAC-BarringInfoSetIndex",
-       "UAC-BarringInfoSetIndex",
-       &asn_OP_NativeInteger,
-       asn_DEF_UAC_BarringInfoSetIndex_tags_1,
-       sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringInfoSetIndex_tags_1, /* Same as above */
-       sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSetIndex_tags_1[0]), /* 1 */
-       { &asn_OER_type_UAC_BarringInfoSetIndex_constr_1, &asn_PER_type_UAC_BarringInfoSetIndex_constr_1, UAC_BarringInfoSetIndex_constraint },
-       0, 0,   /* No members */
-       0       /* No specifics */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.h b/src/codec_utils/SYSINFO/UAC-BarringInfoSetIndex.h
deleted file mode 100644 (file)
index 855a79e..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringInfoSetIndex_H_
-#define        _UAC_BarringInfoSetIndex_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* UAC-BarringInfoSetIndex */
-typedef long    UAC_BarringInfoSetIndex_t;
-
-/* Implementation */
-extern asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetIndex_constr_1;
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetIndex;
-asn_struct_free_f UAC_BarringInfoSetIndex_free;
-asn_struct_print_f UAC_BarringInfoSetIndex_print;
-asn_constr_check_f UAC_BarringInfoSetIndex_constraint;
-ber_type_decoder_f UAC_BarringInfoSetIndex_decode_ber;
-der_type_encoder_f UAC_BarringInfoSetIndex_encode_der;
-xer_type_decoder_f UAC_BarringInfoSetIndex_decode_xer;
-xer_type_encoder_f UAC_BarringInfoSetIndex_encode_xer;
-oer_type_decoder_f UAC_BarringInfoSetIndex_decode_oer;
-oer_type_encoder_f UAC_BarringInfoSetIndex_encode_oer;
-per_type_decoder_f UAC_BarringInfoSetIndex_decode_uper;
-per_type_encoder_f UAC_BarringInfoSetIndex_encode_uper;
-per_type_decoder_f UAC_BarringInfoSetIndex_decode_aper;
-per_type_encoder_f UAC_BarringInfoSetIndex_encode_aper;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringInfoSetIndex_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSetList.c b/src/codec_utils/SYSINFO/UAC-BarringInfoSetList.c
deleted file mode 100644 (file)
index ac316b3..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringInfoSetList.h"
-
-#include "UAC-BarringInfoSet.h"
-static asn_oer_constraints_t asn_OER_type_UAC_BarringInfoSetList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..8)) */};
-asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       3,  3,  1,  8 }        /* (SIZE(1..8)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_UAC_BarringInfoSetList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_UAC_BarringInfoSet,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringInfoSetList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_UAC_BarringInfoSetList_specs_1 = {
-       sizeof(struct UAC_BarringInfoSetList),
-       offsetof(struct UAC_BarringInfoSetList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetList = {
-       "UAC-BarringInfoSetList",
-       "UAC-BarringInfoSetList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_UAC_BarringInfoSetList_tags_1,
-       sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringInfoSetList_tags_1,  /* Same as above */
-       sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1)
-               /sizeof(asn_DEF_UAC_BarringInfoSetList_tags_1[0]), /* 1 */
-       { &asn_OER_type_UAC_BarringInfoSetList_constr_1, &asn_PER_type_UAC_BarringInfoSetList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_UAC_BarringInfoSetList_1,
-       1,      /* Single element */
-       &asn_SPC_UAC_BarringInfoSetList_specs_1 /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringInfoSetList.h b/src/codec_utils/SYSINFO/UAC-BarringInfoSetList.h
deleted file mode 100644 (file)
index 87d5fa1..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringInfoSetList_H_
-#define        _UAC_BarringInfoSetList_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 UAC_BarringInfoSet;
-
-/* UAC-BarringInfoSetList */
-typedef struct UAC_BarringInfoSetList {
-       A_SEQUENCE_OF(struct UAC_BarringInfoSet) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringInfoSetList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringInfoSetList;
-extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringInfoSetList_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringInfoSetList_1[1];
-extern asn_per_constraints_t asn_PER_type_UAC_BarringInfoSetList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringInfoSetList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerCat.c b/src/codec_utils/SYSINFO/UAC-BarringPerCat.c
deleted file mode 100644 (file)
index 857695b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringPerCat.h"
-
-static int
-memb_accessCategory_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 <= 63)) {
-               /* 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_accessCategory_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (1..63) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_accessCategory_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (1..63) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_UAC_BarringPerCat_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerCat, accessCategory),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_accessCategory_constr_2, &asn_PER_memb_accessCategory_constr_2,  memb_accessCategory_constraint_1 },
-               0, 0, /* No default value */
-               "accessCategory"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerCat, uac_barringInfoSetIndex),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_BarringInfoSetIndex,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-barringInfoSetIndex"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringPerCat_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringPerCat_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* accessCategory */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-barringInfoSetIndex */
-};
-asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerCat_specs_1 = {
-       sizeof(struct UAC_BarringPerCat),
-       offsetof(struct UAC_BarringPerCat, _asn_ctx),
-       asn_MAP_UAC_BarringPerCat_tag2el_1,
-       2,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCat = {
-       "UAC-BarringPerCat",
-       "UAC-BarringPerCat",
-       &asn_OP_SEQUENCE,
-       asn_DEF_UAC_BarringPerCat_tags_1,
-       sizeof(asn_DEF_UAC_BarringPerCat_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerCat_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringPerCat_tags_1,       /* Same as above */
-       sizeof(asn_DEF_UAC_BarringPerCat_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerCat_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_UAC_BarringPerCat_1,
-       2,      /* Elements count */
-       &asn_SPC_UAC_BarringPerCat_specs_1      /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerCat.h b/src/codec_utils/SYSINFO/UAC-BarringPerCat.h
deleted file mode 100644 (file)
index 08caed5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringPerCat_H_
-#define        _UAC_BarringPerCat_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include "UAC-BarringInfoSetIndex.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* UAC-BarringPerCat */
-typedef struct UAC_BarringPerCat {
-       long     accessCategory;
-       UAC_BarringInfoSetIndex_t        uac_barringInfoSetIndex;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringPerCat_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCat;
-extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerCat_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringPerCat_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringPerCat_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerCatList.c b/src/codec_utils/SYSINFO/UAC-BarringPerCatList.c
deleted file mode 100644 (file)
index 0149fdc..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringPerCatList.h"
-
-#include "UAC-BarringPerCat.h"
-static asn_oer_constraints_t asn_OER_type_UAC_BarringPerCatList_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..63)) */};
-asn_per_constraints_t asn_PER_type_UAC_BarringPerCatList_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       6,  6,  1,  63 }       /* (SIZE(1..63)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_UAC_BarringPerCatList_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_UAC_BarringPerCat,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringPerCatList_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerCatList_specs_1 = {
-       sizeof(struct UAC_BarringPerCatList),
-       offsetof(struct UAC_BarringPerCatList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCatList = {
-       "UAC-BarringPerCatList",
-       "UAC-BarringPerCatList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_UAC_BarringPerCatList_tags_1,
-       sizeof(asn_DEF_UAC_BarringPerCatList_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerCatList_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringPerCatList_tags_1,   /* Same as above */
-       sizeof(asn_DEF_UAC_BarringPerCatList_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerCatList_tags_1[0]), /* 1 */
-       { &asn_OER_type_UAC_BarringPerCatList_constr_1, &asn_PER_type_UAC_BarringPerCatList_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_UAC_BarringPerCatList_1,
-       1,      /* Single element */
-       &asn_SPC_UAC_BarringPerCatList_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerCatList.h b/src/codec_utils/SYSINFO/UAC-BarringPerCatList.h
deleted file mode 100644 (file)
index f3b05af..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringPerCatList_H_
-#define        _UAC_BarringPerCatList_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 UAC_BarringPerCat;
-
-/* UAC-BarringPerCatList */
-typedef struct UAC_BarringPerCatList {
-       A_SEQUENCE_OF(struct UAC_BarringPerCat) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringPerCatList_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerCatList;
-extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerCatList_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringPerCatList_1[1];
-extern asn_per_constraints_t asn_PER_type_UAC_BarringPerCatList_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringPerCatList_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.c b/src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.c
deleted file mode 100644 (file)
index 1797ddf..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringPerPLMN-List.h"
-
-#include "UAC-BarringPerPLMN.h"
-static asn_oer_constraints_t asn_OER_type_UAC_BarringPerPLMN_List_constr_1 CC_NOTUSED = {
-       { 0, 0 },
-       -1      /* (SIZE(1..12)) */};
-asn_per_constraints_t asn_PER_type_UAC_BarringPerPLMN_List_constr_1 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (SIZE(1..12)) */,
-       0, 0    /* No PER value map */
-};
-asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_List_1[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
-               0,
-               &asn_DEF_UAC_BarringPerPLMN,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UAC_BarringPerPLMN_List_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerPLMN_List_specs_1 = {
-       sizeof(struct UAC_BarringPerPLMN_List),
-       offsetof(struct UAC_BarringPerPLMN_List, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN_List = {
-       "UAC-BarringPerPLMN-List",
-       "UAC-BarringPerPLMN-List",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_UAC_BarringPerPLMN_List_tags_1,
-       sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringPerPLMN_List_tags_1, /* Same as above */
-       sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerPLMN_List_tags_1[0]), /* 1 */
-       { &asn_OER_type_UAC_BarringPerPLMN_List_constr_1, &asn_PER_type_UAC_BarringPerPLMN_List_constr_1, SEQUENCE_OF_constraint },
-       asn_MBR_UAC_BarringPerPLMN_List_1,
-       1,      /* Single element */
-       &asn_SPC_UAC_BarringPerPLMN_List_specs_1        /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.h b/src/codec_utils/SYSINFO/UAC-BarringPerPLMN-List.h
deleted file mode 100644 (file)
index 8a37113..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringPerPLMN_List_H_
-#define        _UAC_BarringPerPLMN_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 UAC_BarringPerPLMN;
-
-/* UAC-BarringPerPLMN-List */
-typedef struct UAC_BarringPerPLMN_List {
-       A_SEQUENCE_OF(struct UAC_BarringPerPLMN) list;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringPerPLMN_List_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN_List;
-extern asn_SET_OF_specifics_t asn_SPC_UAC_BarringPerPLMN_List_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_List_1[1];
-extern asn_per_constraints_t asn_PER_type_UAC_BarringPerPLMN_List_constr_1;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringPerPLMN_List_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerPLMN.c b/src/codec_utils/SYSINFO/UAC-BarringPerPLMN.c
deleted file mode 100644 (file)
index 44735c6..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UAC-BarringPerPLMN.h"
-
-#include "UAC-BarringPerCatList.h"
-static int
-memb_uac_ImplicitACBarringList_constraint_3(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 == 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_plmn_IdentityIndex_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 <= 12)) {
-               /* 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_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       63      /* (SIZE(63..63)) */};
-static asn_per_constraints_t asn_PER_type_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  63,  63 }      /* (SIZE(63..63)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_memb_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
-       { 0, 0 },
-       63      /* (SIZE(63..63)) */};
-static asn_per_constraints_t asn_PER_memb_uac_ImplicitACBarringList_constr_4 CC_NOTUSED = {
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       { APC_CONSTRAINED,       0,  0,  63,  63 }      /* (SIZE(63..63)) */,
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_uac_ACBarringListType_constr_3 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_uac_ACBarringListType_constr_3 CC_NOTUSED = {
-       { APC_CONSTRAINED,       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_memb_plmn_IdentityIndex_constr_2 CC_NOTUSED = {
-       { 1, 1 }        /* (1..12) */,
-       -1};
-static asn_per_constraints_t asn_PER_memb_plmn_IdentityIndex_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       4,  4,  1,  12 }       /* (1..12) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_TYPE_member_t asn_MBR_uac_ImplicitACBarringList_4[] = {
-       { ATF_POINTER, 0, 0,
-               (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
-               0,
-               &asn_DEF_UAC_BarringInfoSetIndex,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               ""
-               },
-};
-static const ber_tlv_tag_t asn_DEF_uac_ImplicitACBarringList_tags_4[] = {
-       (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static asn_SET_OF_specifics_t asn_SPC_uac_ImplicitACBarringList_specs_4 = {
-       sizeof(struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList),
-       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList, _asn_ctx),
-       0,      /* XER encoding is XMLDelimitedItemList */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_uac_ImplicitACBarringList_4 = {
-       "uac-ImplicitACBarringList",
-       "uac-ImplicitACBarringList",
-       &asn_OP_SEQUENCE_OF,
-       asn_DEF_uac_ImplicitACBarringList_tags_4,
-       sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4)
-               /sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4[0]) - 1, /* 1 */
-       asn_DEF_uac_ImplicitACBarringList_tags_4,       /* Same as above */
-       sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4)
-               /sizeof(asn_DEF_uac_ImplicitACBarringList_tags_4[0]), /* 2 */
-       { &asn_OER_type_uac_ImplicitACBarringList_constr_4, &asn_PER_type_uac_ImplicitACBarringList_constr_4, SEQUENCE_OF_constraint },
-       asn_MBR_uac_ImplicitACBarringList_4,
-       1,      /* Single element */
-       &asn_SPC_uac_ImplicitACBarringList_specs_4      /* Additional specs */
-};
-
-static asn_TYPE_member_t asn_MBR_uac_ACBarringListType_3[] = {
-       { ATF_POINTER, 0, offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, choice.uac_ImplicitACBarringList),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               0,
-               &asn_DEF_uac_ImplicitACBarringList_4,
-               0,
-               { &asn_OER_memb_uac_ImplicitACBarringList_constr_4, &asn_PER_memb_uac_ImplicitACBarringList_constr_4,  memb_uac_ImplicitACBarringList_constraint_3 },
-               0, 0, /* No default value */
-               "uac-ImplicitACBarringList"
-               },
-       { ATF_POINTER, 0, offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, choice.uac_ExplicitACBarringList),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_UAC_BarringPerCatList,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-ExplicitACBarringList"
-               },
-};
-static const asn_TYPE_tag2member_t asn_MAP_uac_ACBarringListType_tag2el_3[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* uac-ImplicitACBarringList */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-ExplicitACBarringList */
-};
-static asn_CHOICE_specifics_t asn_SPC_uac_ACBarringListType_specs_3 = {
-       sizeof(struct UAC_BarringPerPLMN__uac_ACBarringListType),
-       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, _asn_ctx),
-       offsetof(struct UAC_BarringPerPLMN__uac_ACBarringListType, present),
-       sizeof(((struct UAC_BarringPerPLMN__uac_ACBarringListType *)0)->present),
-       asn_MAP_uac_ACBarringListType_tag2el_3,
-       2,      /* Count of tags in the map */
-       0, 0,
-       -1      /* Extensions start */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_uac_ACBarringListType_3 = {
-       "uac-ACBarringListType",
-       "uac-ACBarringListType",
-       &asn_OP_CHOICE,
-       0,      /* No effective tags (pointer) */
-       0,      /* No effective tags (count) */
-       0,      /* No tags (pointer) */
-       0,      /* No tags (count) */
-       { &asn_OER_type_uac_ACBarringListType_constr_3, &asn_PER_type_uac_ACBarringListType_constr_3, CHOICE_constraint },
-       asn_MBR_uac_ACBarringListType_3,
-       2,      /* Elements count */
-       &asn_SPC_uac_ACBarringListType_specs_3  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct UAC_BarringPerPLMN, plmn_IdentityIndex),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_NativeInteger,
-               0,
-               { &asn_OER_memb_plmn_IdentityIndex_constr_2, &asn_PER_memb_plmn_IdentityIndex_constr_2,  memb_plmn_IdentityIndex_constraint_1 },
-               0, 0, /* No default value */
-               "plmn-IdentityIndex"
-               },
-       { ATF_POINTER, 1, offsetof(struct UAC_BarringPerPLMN, uac_ACBarringListType),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               +1,     /* EXPLICIT tag at current level */
-               &asn_DEF_uac_ACBarringListType_3,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "uac-ACBarringListType"
-               },
-};
-static const int asn_MAP_UAC_BarringPerPLMN_oms_1[] = { 1 };
-static const ber_tlv_tag_t asn_DEF_UAC_BarringPerPLMN_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_UAC_BarringPerPLMN_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* plmn-IdentityIndex */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* uac-ACBarringListType */
-};
-asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerPLMN_specs_1 = {
-       sizeof(struct UAC_BarringPerPLMN),
-       offsetof(struct UAC_BarringPerPLMN, _asn_ctx),
-       asn_MAP_UAC_BarringPerPLMN_tag2el_1,
-       2,      /* Count of tags in the map */
-       asn_MAP_UAC_BarringPerPLMN_oms_1,       /* Optional members */
-       1, 0,   /* Root/Additions */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN = {
-       "UAC-BarringPerPLMN",
-       "UAC-BarringPerPLMN",
-       &asn_OP_SEQUENCE,
-       asn_DEF_UAC_BarringPerPLMN_tags_1,
-       sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1[0]), /* 1 */
-       asn_DEF_UAC_BarringPerPLMN_tags_1,      /* Same as above */
-       sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1)
-               /sizeof(asn_DEF_UAC_BarringPerPLMN_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_UAC_BarringPerPLMN_1,
-       2,      /* Elements count */
-       &asn_SPC_UAC_BarringPerPLMN_specs_1     /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UAC-BarringPerPLMN.h b/src/codec_utils/SYSINFO/UAC-BarringPerPLMN.h
deleted file mode 100644 (file)
index 23fed3a..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UAC_BarringPerPLMN_H_
-#define        _UAC_BarringPerPLMN_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeInteger.h>
-#include "UAC-BarringInfoSetIndex.h"
-#include <asn_SEQUENCE_OF.h>
-#include <constr_SEQUENCE_OF.h>
-#include <constr_CHOICE.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum UAC_BarringPerPLMN__uac_ACBarringListType_PR {
-       UAC_BarringPerPLMN__uac_ACBarringListType_PR_NOTHING,   /* No components present */
-       UAC_BarringPerPLMN__uac_ACBarringListType_PR_uac_ImplicitACBarringList,
-       UAC_BarringPerPLMN__uac_ACBarringListType_PR_uac_ExplicitACBarringList
-} UAC_BarringPerPLMN__uac_ACBarringListType_PR;
-
-/* Forward declarations */
-struct UAC_BarringPerCatList;
-
-/* UAC-BarringPerPLMN */
-typedef struct UAC_BarringPerPLMN {
-       long     plmn_IdentityIndex;
-       struct UAC_BarringPerPLMN__uac_ACBarringListType {
-               UAC_BarringPerPLMN__uac_ACBarringListType_PR present;
-               union UAC_BarringPerPLMN__uac_ACBarringListType_u {
-                       struct UAC_BarringPerPLMN__uac_ACBarringListType__uac_ImplicitACBarringList {
-                               A_SEQUENCE_OF(UAC_BarringInfoSetIndex_t) list;
-                               
-                               /* Context for parsing across buffer boundaries */
-                               asn_struct_ctx_t _asn_ctx;
-                       } *uac_ImplicitACBarringList;
-                       struct UAC_BarringPerCatList    *uac_ExplicitACBarringList;
-               } choice;
-               
-               /* Context for parsing across buffer boundaries */
-               asn_struct_ctx_t _asn_ctx;
-       } *uac_ACBarringListType;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UAC_BarringPerPLMN_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UAC_BarringPerPLMN;
-extern asn_SEQUENCE_specifics_t asn_SPC_UAC_BarringPerPLMN_specs_1;
-extern asn_TYPE_member_t asn_MBR_UAC_BarringPerPLMN_1[2];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UAC_BarringPerPLMN_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UE-TimersAndConstants.c b/src/codec_utils/SYSINFO/UE-TimersAndConstants.c
deleted file mode 100644 (file)
index 041c985..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UE-TimersAndConstants.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 asn_oer_constraints_t asn_OER_type_t300_constr_2 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_t300_constr_2 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_t301_constr_11 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_t301_constr_11 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_t310_constr_20 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_t310_constr_20 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_n310_constr_28 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_n310_constr_28 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_t311_constr_37 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_t311_constr_37 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  6 }        /* (0..6) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_n311_constr_45 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_n311_constr_45 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static asn_oer_constraints_t asn_OER_type_t319_constr_54 CC_NOTUSED = {
-       { 0, 0 },
-       -1};
-static asn_per_constraints_t asn_PER_type_t319_constr_54 CC_NOTUSED = {
-       { APC_CONSTRAINED,       3,  3,  0,  7 }        /* (0..7) */,
-       { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
-       0, 0    /* No PER value map */
-};
-static const asn_INTEGER_enum_map_t asn_MAP_t300_value2enum_2[] = {
-       { 0,    5,      "ms100" },
-       { 1,    5,      "ms200" },
-       { 2,    5,      "ms300" },
-       { 3,    5,      "ms400" },
-       { 4,    5,      "ms600" },
-       { 5,    6,      "ms1000" },
-       { 6,    6,      "ms1500" },
-       { 7,    6,      "ms2000" }
-};
-static const unsigned int asn_MAP_t300_enum2value_2[] = {
-       0,      /* ms100(0) */
-       5,      /* ms1000(5) */
-       6,      /* ms1500(6) */
-       1,      /* ms200(1) */
-       7,      /* ms2000(7) */
-       2,      /* ms300(2) */
-       3,      /* ms400(3) */
-       4       /* ms600(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_t300_specs_2 = {
-       asn_MAP_t300_value2enum_2,      /* "tag" => N; sorted by tag */
-       asn_MAP_t300_enum2value_2,      /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_t300_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_t300_2 = {
-       "t300",
-       "t300",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_t300_tags_2,
-       sizeof(asn_DEF_t300_tags_2)
-               /sizeof(asn_DEF_t300_tags_2[0]) - 1, /* 1 */
-       asn_DEF_t300_tags_2,    /* Same as above */
-       sizeof(asn_DEF_t300_tags_2)
-               /sizeof(asn_DEF_t300_tags_2[0]), /* 2 */
-       { &asn_OER_type_t300_constr_2, &asn_PER_type_t300_constr_2, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_t300_specs_2   /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_t301_value2enum_11[] = {
-       { 0,    5,      "ms100" },
-       { 1,    5,      "ms200" },
-       { 2,    5,      "ms300" },
-       { 3,    5,      "ms400" },
-       { 4,    5,      "ms600" },
-       { 5,    6,      "ms1000" },
-       { 6,    6,      "ms1500" },
-       { 7,    6,      "ms2000" }
-};
-static const unsigned int asn_MAP_t301_enum2value_11[] = {
-       0,      /* ms100(0) */
-       5,      /* ms1000(5) */
-       6,      /* ms1500(6) */
-       1,      /* ms200(1) */
-       7,      /* ms2000(7) */
-       2,      /* ms300(2) */
-       3,      /* ms400(3) */
-       4       /* ms600(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_t301_specs_11 = {
-       asn_MAP_t301_value2enum_11,     /* "tag" => N; sorted by tag */
-       asn_MAP_t301_enum2value_11,     /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_t301_tags_11[] = {
-       (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_t301_11 = {
-       "t301",
-       "t301",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_t301_tags_11,
-       sizeof(asn_DEF_t301_tags_11)
-               /sizeof(asn_DEF_t301_tags_11[0]) - 1, /* 1 */
-       asn_DEF_t301_tags_11,   /* Same as above */
-       sizeof(asn_DEF_t301_tags_11)
-               /sizeof(asn_DEF_t301_tags_11[0]), /* 2 */
-       { &asn_OER_type_t301_constr_11, &asn_PER_type_t301_constr_11, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_t301_specs_11  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_t310_value2enum_20[] = {
-       { 0,    3,      "ms0" },
-       { 1,    4,      "ms50" },
-       { 2,    5,      "ms100" },
-       { 3,    5,      "ms200" },
-       { 4,    5,      "ms500" },
-       { 5,    6,      "ms1000" },
-       { 6,    6,      "ms2000" }
-};
-static const unsigned int asn_MAP_t310_enum2value_20[] = {
-       0,      /* ms0(0) */
-       2,      /* ms100(2) */
-       5,      /* ms1000(5) */
-       3,      /* ms200(3) */
-       6,      /* ms2000(6) */
-       1,      /* ms50(1) */
-       4       /* ms500(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_t310_specs_20 = {
-       asn_MAP_t310_value2enum_20,     /* "tag" => N; sorted by tag */
-       asn_MAP_t310_enum2value_20,     /* N => "tag"; sorted by N */
-       7,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_t310_tags_20[] = {
-       (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_t310_20 = {
-       "t310",
-       "t310",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_t310_tags_20,
-       sizeof(asn_DEF_t310_tags_20)
-               /sizeof(asn_DEF_t310_tags_20[0]) - 1, /* 1 */
-       asn_DEF_t310_tags_20,   /* Same as above */
-       sizeof(asn_DEF_t310_tags_20)
-               /sizeof(asn_DEF_t310_tags_20[0]), /* 2 */
-       { &asn_OER_type_t310_constr_20, &asn_PER_type_t310_constr_20, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_t310_specs_20  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_n310_value2enum_28[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" },
-       { 2,    2,      "n3" },
-       { 3,    2,      "n4" },
-       { 4,    2,      "n6" },
-       { 5,    2,      "n8" },
-       { 6,    3,      "n10" },
-       { 7,    3,      "n20" }
-};
-static const unsigned int asn_MAP_n310_enum2value_28[] = {
-       0,      /* n1(0) */
-       6,      /* n10(6) */
-       1,      /* n2(1) */
-       7,      /* n20(7) */
-       2,      /* n3(2) */
-       3,      /* n4(3) */
-       4,      /* n6(4) */
-       5       /* n8(5) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_n310_specs_28 = {
-       asn_MAP_n310_value2enum_28,     /* "tag" => N; sorted by tag */
-       asn_MAP_n310_enum2value_28,     /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_n310_tags_28[] = {
-       (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_n310_28 = {
-       "n310",
-       "n310",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_n310_tags_28,
-       sizeof(asn_DEF_n310_tags_28)
-               /sizeof(asn_DEF_n310_tags_28[0]) - 1, /* 1 */
-       asn_DEF_n310_tags_28,   /* Same as above */
-       sizeof(asn_DEF_n310_tags_28)
-               /sizeof(asn_DEF_n310_tags_28[0]), /* 2 */
-       { &asn_OER_type_n310_constr_28, &asn_PER_type_n310_constr_28, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_n310_specs_28  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_t311_value2enum_37[] = {
-       { 0,    6,      "ms1000" },
-       { 1,    6,      "ms3000" },
-       { 2,    6,      "ms5000" },
-       { 3,    7,      "ms10000" },
-       { 4,    7,      "ms15000" },
-       { 5,    7,      "ms20000" },
-       { 6,    7,      "ms30000" }
-};
-static const unsigned int asn_MAP_t311_enum2value_37[] = {
-       0,      /* ms1000(0) */
-       3,      /* ms10000(3) */
-       4,      /* ms15000(4) */
-       5,      /* ms20000(5) */
-       1,      /* ms3000(1) */
-       6,      /* ms30000(6) */
-       2       /* ms5000(2) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_t311_specs_37 = {
-       asn_MAP_t311_value2enum_37,     /* "tag" => N; sorted by tag */
-       asn_MAP_t311_enum2value_37,     /* N => "tag"; sorted by N */
-       7,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_t311_tags_37[] = {
-       (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_t311_37 = {
-       "t311",
-       "t311",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_t311_tags_37,
-       sizeof(asn_DEF_t311_tags_37)
-               /sizeof(asn_DEF_t311_tags_37[0]) - 1, /* 1 */
-       asn_DEF_t311_tags_37,   /* Same as above */
-       sizeof(asn_DEF_t311_tags_37)
-               /sizeof(asn_DEF_t311_tags_37[0]), /* 2 */
-       { &asn_OER_type_t311_constr_37, &asn_PER_type_t311_constr_37, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_t311_specs_37  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_n311_value2enum_45[] = {
-       { 0,    2,      "n1" },
-       { 1,    2,      "n2" },
-       { 2,    2,      "n3" },
-       { 3,    2,      "n4" },
-       { 4,    2,      "n5" },
-       { 5,    2,      "n6" },
-       { 6,    2,      "n8" },
-       { 7,    3,      "n10" }
-};
-static const unsigned int asn_MAP_n311_enum2value_45[] = {
-       0,      /* n1(0) */
-       7,      /* n10(7) */
-       1,      /* n2(1) */
-       2,      /* n3(2) */
-       3,      /* n4(3) */
-       4,      /* n5(4) */
-       5,      /* n6(5) */
-       6       /* n8(6) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_n311_specs_45 = {
-       asn_MAP_n311_value2enum_45,     /* "tag" => N; sorted by tag */
-       asn_MAP_n311_enum2value_45,     /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_n311_tags_45[] = {
-       (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_n311_45 = {
-       "n311",
-       "n311",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_n311_tags_45,
-       sizeof(asn_DEF_n311_tags_45)
-               /sizeof(asn_DEF_n311_tags_45[0]) - 1, /* 1 */
-       asn_DEF_n311_tags_45,   /* Same as above */
-       sizeof(asn_DEF_n311_tags_45)
-               /sizeof(asn_DEF_n311_tags_45[0]), /* 2 */
-       { &asn_OER_type_n311_constr_45, &asn_PER_type_n311_constr_45, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_n311_specs_45  /* Additional specs */
-};
-
-static const asn_INTEGER_enum_map_t asn_MAP_t319_value2enum_54[] = {
-       { 0,    5,      "ms100" },
-       { 1,    5,      "ms200" },
-       { 2,    5,      "ms300" },
-       { 3,    5,      "ms400" },
-       { 4,    5,      "ms600" },
-       { 5,    6,      "ms1000" },
-       { 6,    6,      "ms1500" },
-       { 7,    6,      "ms2000" }
-};
-static const unsigned int asn_MAP_t319_enum2value_54[] = {
-       0,      /* ms100(0) */
-       5,      /* ms1000(5) */
-       6,      /* ms1500(6) */
-       1,      /* ms200(1) */
-       7,      /* ms2000(7) */
-       2,      /* ms300(2) */
-       3,      /* ms400(3) */
-       4       /* ms600(4) */
-};
-static const asn_INTEGER_specifics_t asn_SPC_t319_specs_54 = {
-       asn_MAP_t319_value2enum_54,     /* "tag" => N; sorted by tag */
-       asn_MAP_t319_enum2value_54,     /* N => "tag"; sorted by N */
-       8,      /* Number of elements in the maps */
-       0,      /* Enumeration is not extensible */
-       1,      /* Strict enumeration */
-       0,      /* Native long size */
-       0
-};
-static const ber_tlv_tag_t asn_DEF_t319_tags_54[] = {
-       (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_t319_54 = {
-       "t319",
-       "t319",
-       &asn_OP_NativeEnumerated,
-       asn_DEF_t319_tags_54,
-       sizeof(asn_DEF_t319_tags_54)
-               /sizeof(asn_DEF_t319_tags_54[0]) - 1, /* 1 */
-       asn_DEF_t319_tags_54,   /* Same as above */
-       sizeof(asn_DEF_t319_tags_54)
-               /sizeof(asn_DEF_t319_tags_54[0]), /* 2 */
-       { &asn_OER_type_t319_constr_54, &asn_PER_type_t319_constr_54, NativeEnumerated_constraint },
-       0, 0,   /* Defined elsewhere */
-       &asn_SPC_t319_specs_54  /* Additional specs */
-};
-
-asn_TYPE_member_t asn_MBR_UE_TimersAndConstants_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t300),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_t300_2,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "t300"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t301),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_t301_11,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "t301"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t310),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_t310_20,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "t310"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, n310),
-               (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_n310_28,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "n310"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t311),
-               (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_t311_37,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "t311"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, n311),
-               (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_n311_45,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "n311"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UE_TimersAndConstants, t319),
-               (ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_t319_54,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "t319"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UE_TimersAndConstants_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_UE_TimersAndConstants_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* t300 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* t301 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* t310 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* n310 */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* t311 */
-    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* n311 */
-    { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 } /* t319 */
-};
-asn_SEQUENCE_specifics_t asn_SPC_UE_TimersAndConstants_specs_1 = {
-       sizeof(struct UE_TimersAndConstants),
-       offsetof(struct UE_TimersAndConstants, _asn_ctx),
-       asn_MAP_UE_TimersAndConstants_tag2el_1,
-       7,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       7,      /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_UE_TimersAndConstants = {
-       "UE-TimersAndConstants",
-       "UE-TimersAndConstants",
-       &asn_OP_SEQUENCE,
-       asn_DEF_UE_TimersAndConstants_tags_1,
-       sizeof(asn_DEF_UE_TimersAndConstants_tags_1)
-               /sizeof(asn_DEF_UE_TimersAndConstants_tags_1[0]), /* 1 */
-       asn_DEF_UE_TimersAndConstants_tags_1,   /* Same as above */
-       sizeof(asn_DEF_UE_TimersAndConstants_tags_1)
-               /sizeof(asn_DEF_UE_TimersAndConstants_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_UE_TimersAndConstants_1,
-       7,      /* Elements count */
-       &asn_SPC_UE_TimersAndConstants_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UE-TimersAndConstants.h b/src/codec_utils/SYSINFO/UE-TimersAndConstants.h
deleted file mode 100644 (file)
index 01525c9..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UE_TimersAndConstants_H_
-#define        _UE_TimersAndConstants_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include <NativeEnumerated.h>
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Dependencies */
-typedef enum UE_TimersAndConstants__t300 {
-       UE_TimersAndConstants__t300_ms100       = 0,
-       UE_TimersAndConstants__t300_ms200       = 1,
-       UE_TimersAndConstants__t300_ms300       = 2,
-       UE_TimersAndConstants__t300_ms400       = 3,
-       UE_TimersAndConstants__t300_ms600       = 4,
-       UE_TimersAndConstants__t300_ms1000      = 5,
-       UE_TimersAndConstants__t300_ms1500      = 6,
-       UE_TimersAndConstants__t300_ms2000      = 7
-} e_UE_TimersAndConstants__t300;
-typedef enum UE_TimersAndConstants__t301 {
-       UE_TimersAndConstants__t301_ms100       = 0,
-       UE_TimersAndConstants__t301_ms200       = 1,
-       UE_TimersAndConstants__t301_ms300       = 2,
-       UE_TimersAndConstants__t301_ms400       = 3,
-       UE_TimersAndConstants__t301_ms600       = 4,
-       UE_TimersAndConstants__t301_ms1000      = 5,
-       UE_TimersAndConstants__t301_ms1500      = 6,
-       UE_TimersAndConstants__t301_ms2000      = 7
-} e_UE_TimersAndConstants__t301;
-typedef enum UE_TimersAndConstants__t310 {
-       UE_TimersAndConstants__t310_ms0 = 0,
-       UE_TimersAndConstants__t310_ms50        = 1,
-       UE_TimersAndConstants__t310_ms100       = 2,
-       UE_TimersAndConstants__t310_ms200       = 3,
-       UE_TimersAndConstants__t310_ms500       = 4,
-       UE_TimersAndConstants__t310_ms1000      = 5,
-       UE_TimersAndConstants__t310_ms2000      = 6
-} e_UE_TimersAndConstants__t310;
-typedef enum UE_TimersAndConstants__n310 {
-       UE_TimersAndConstants__n310_n1  = 0,
-       UE_TimersAndConstants__n310_n2  = 1,
-       UE_TimersAndConstants__n310_n3  = 2,
-       UE_TimersAndConstants__n310_n4  = 3,
-       UE_TimersAndConstants__n310_n6  = 4,
-       UE_TimersAndConstants__n310_n8  = 5,
-       UE_TimersAndConstants__n310_n10 = 6,
-       UE_TimersAndConstants__n310_n20 = 7
-} e_UE_TimersAndConstants__n310;
-typedef enum UE_TimersAndConstants__t311 {
-       UE_TimersAndConstants__t311_ms1000      = 0,
-       UE_TimersAndConstants__t311_ms3000      = 1,
-       UE_TimersAndConstants__t311_ms5000      = 2,
-       UE_TimersAndConstants__t311_ms10000     = 3,
-       UE_TimersAndConstants__t311_ms15000     = 4,
-       UE_TimersAndConstants__t311_ms20000     = 5,
-       UE_TimersAndConstants__t311_ms30000     = 6
-} e_UE_TimersAndConstants__t311;
-typedef enum UE_TimersAndConstants__n311 {
-       UE_TimersAndConstants__n311_n1  = 0,
-       UE_TimersAndConstants__n311_n2  = 1,
-       UE_TimersAndConstants__n311_n3  = 2,
-       UE_TimersAndConstants__n311_n4  = 3,
-       UE_TimersAndConstants__n311_n5  = 4,
-       UE_TimersAndConstants__n311_n6  = 5,
-       UE_TimersAndConstants__n311_n8  = 6,
-       UE_TimersAndConstants__n311_n10 = 7
-} e_UE_TimersAndConstants__n311;
-typedef enum UE_TimersAndConstants__t319 {
-       UE_TimersAndConstants__t319_ms100       = 0,
-       UE_TimersAndConstants__t319_ms200       = 1,
-       UE_TimersAndConstants__t319_ms300       = 2,
-       UE_TimersAndConstants__t319_ms400       = 3,
-       UE_TimersAndConstants__t319_ms600       = 4,
-       UE_TimersAndConstants__t319_ms1000      = 5,
-       UE_TimersAndConstants__t319_ms1500      = 6,
-       UE_TimersAndConstants__t319_ms2000      = 7
-} e_UE_TimersAndConstants__t319;
-
-/* UE-TimersAndConstants */
-typedef struct UE_TimersAndConstants {
-       long     t300;
-       long     t301;
-       long     t310;
-       long     n310;
-       long     t311;
-       long     n311;
-       long     t319;
-       /*
-        * This type is extensible,
-        * possible extensions are below.
-        */
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UE_TimersAndConstants_t;
-
-/* Implementation */
-/* extern asn_TYPE_descriptor_t asn_DEF_t300_2;        // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_t301_11;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_t310_20;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_n310_28;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_t311_37;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_n311_45;       // (Use -fall-defs-global to expose) */
-/* extern asn_TYPE_descriptor_t asn_DEF_t319_54;       // (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_UE_TimersAndConstants;
-extern asn_SEQUENCE_specifics_t asn_SPC_UE_TimersAndConstants_specs_1;
-extern asn_TYPE_member_t asn_MBR_UE_TimersAndConstants_1[7];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UE_TimersAndConstants_H_ */
-#include <asn_internal.h>
diff --git a/src/codec_utils/SYSINFO/UplinkConfigCommonSIB.c b/src/codec_utils/SYSINFO/UplinkConfigCommonSIB.c
deleted file mode 100644 (file)
index 31db6f6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#include "UplinkConfigCommonSIB.h"
-
-asn_TYPE_member_t asn_MBR_UplinkConfigCommonSIB_1[] = {
-       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, frequencyInfoUL),
-               (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_FrequencyInfoUL_SIB,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "frequencyInfoUL"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, initialUplinkBWP),
-               (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_BWP_UplinkCommon,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "initialUplinkBWP"
-               },
-       { ATF_NOFLAGS, 0, offsetof(struct UplinkConfigCommonSIB, timeAlignmentTimerCommon),
-               (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-               -1,     /* IMPLICIT tag at current level */
-               &asn_DEF_TimeAlignmentTimer,
-               0,
-               { 0, 0, 0 },
-               0, 0, /* No default value */
-               "timeAlignmentTimerCommon"
-               },
-};
-static const ber_tlv_tag_t asn_DEF_UplinkConfigCommonSIB_tags_1[] = {
-       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_UplinkConfigCommonSIB_tag2el_1[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* frequencyInfoUL */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* initialUplinkBWP */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* timeAlignmentTimerCommon */
-};
-asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommonSIB_specs_1 = {
-       sizeof(struct UplinkConfigCommonSIB),
-       offsetof(struct UplinkConfigCommonSIB, _asn_ctx),
-       asn_MAP_UplinkConfigCommonSIB_tag2el_1,
-       3,      /* Count of tags in the map */
-       0, 0, 0,        /* Optional elements (not needed) */
-       -1,     /* First extension addition */
-};
-asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommonSIB = {
-       "UplinkConfigCommonSIB",
-       "UplinkConfigCommonSIB",
-       &asn_OP_SEQUENCE,
-       asn_DEF_UplinkConfigCommonSIB_tags_1,
-       sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1[0]), /* 1 */
-       asn_DEF_UplinkConfigCommonSIB_tags_1,   /* Same as above */
-       sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1)
-               /sizeof(asn_DEF_UplinkConfigCommonSIB_tags_1[0]), /* 1 */
-       { 0, 0, SEQUENCE_constraint },
-       asn_MBR_UplinkConfigCommonSIB_1,
-       3,      /* Elements count */
-       &asn_SPC_UplinkConfigCommonSIB_specs_1  /* Additional specs */
-};
-
diff --git a/src/codec_utils/SYSINFO/UplinkConfigCommonSIB.h b/src/codec_utils/SYSINFO/UplinkConfigCommonSIB.h
deleted file mode 100644 (file)
index 54b0215..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
- * From ASN.1 module "NR-RRC-Definitions"
- *     found in "../../mib_sib1.asn1"
- *     `asn1c -D ./new_out -fcompound-names -fno-include-deps -findirect-choice -gen-PER -no-gen-example`
- */
-
-#ifndef        _UplinkConfigCommonSIB_H_
-#define        _UplinkConfigCommonSIB_H_
-
-
-#include <asn_application.h>
-
-/* Including external dependencies */
-#include "FrequencyInfoUL-SIB.h"
-#include "BWP-UplinkCommon.h"
-#include "TimeAlignmentTimer.h"
-#include <constr_SEQUENCE.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* UplinkConfigCommonSIB */
-typedef struct UplinkConfigCommonSIB {
-       FrequencyInfoUL_SIB_t    frequencyInfoUL;
-       BWP_UplinkCommon_t       initialUplinkBWP;
-       TimeAlignmentTimer_t     timeAlignmentTimerCommon;
-       
-       /* Context for parsing across buffer boundaries */
-       asn_struct_ctx_t _asn_ctx;
-} UplinkConfigCommonSIB_t;
-
-/* Implementation */
-extern asn_TYPE_descriptor_t asn_DEF_UplinkConfigCommonSIB;
-extern asn_SEQUENCE_specifics_t asn_SPC_UplinkConfigCommonSIB_specs_1;
-extern asn_TYPE_member_t asn_MBR_UplinkConfigCommonSIB_1[3];
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _UplinkConfigCommonSIB_H_ */
-#include <asn_internal.h>